《Node.js》模块
2017-02-27 14:06
169 查看
前言
熟悉JavaScript语言的开发者都知道,JavaScript语言是没有名字空间这个概念的,所有被加载到网页的JavaScript代码都属于同一个名字空间(这个名字空间可以理解为window对象)。这就导致脚本之间很容易引起命名冲突,以及因此引起的一些安全问题,同时也给跟踪调试代码带来了很大的麻烦。CommonJS
鉴于JavaScript语言这个“天生 ”的缺陷,CommonJS应运而生。CommonJS制定了一个标准:每个模块都拥有一个独立的上下文,将该模块和其他模块隔离开来,从而达到模块之间不再相互干扰的目的。而Node.js就是实现了CommonJS规定的这些标准。有关CommonJS的更多说明,请参考其官方网站:http://www.commonjs.org/编写模块
基于CommonJS规范编写代码,从某种意义上也可以理解为“面向模块编程”,每一个功能、每一个组件,都是一个模块。在Node中,文件和模块是一一对应的,每一个文件对应一个模块,且模块只对外暴露开发者指定的内容。来看下边这个例子:function add(a, b) {
return a + b;
}
function sub(a, b) {
return a - b;
}
module.exports = {
add: add,
sub: sub
};
代码中的module是一个变量,表示模块自身。module.exports表示当前模块所导出的对象,它可以是任意类型的对象。
加载模块
在Node中既可以用文件路径也可以用文件名称来引用模块,如果不是核心模块,使用名称来引用的模块最终也会被映射为一个文件路径。核心模块是指Node自身提供的一些功能,这些模块会在Node进程启动时预先载入到内存。其它模块包括使用npm安装的第三方模块,也包括当前项目中的模块。在Node中是通过require函数引用模块的:var module = require('./modules/filename.js');上述代码中的require函数会返回一个对象,该对象就是通过module.exports暴露出来的那个对象。模块缓存
Node中的模块在首次加载时会被缓存起来,所以当一个项目中多次引用同一个模块的时候,始终拿到的都是第一次加载的模块内容,那么模块内的代码也就只被执行一次。作者:朱会震
相关文章推荐
- 在Windows上安装Node.js模块
- 在Windows上安装Node.js模块
- golang与node.js的http模块性能对比测试(go1)
- 深入浅出Node.js(七):Connect模块解析(之一)
- 深入浅出Node.js(三):深入Node.js的模块机制
- node.js之url模块
- 深入浅出Node.js(八):Connect模块解析(之二)静态文件中间件
- node.js学习之模块篇(转载)
- NODE.JS学习笔记——CRYPTO 加密模块
- 深入浅出Node.js(三):深入Node.js的模块机制
- 你应该知道的Node.js扩展模块——Hashish
- node.js(二) 模块 事件驱动
- 如何在Node.js中使用npm创建和发布一个模块
- golang与node.js的http模块性能对比测试(go1)
- 深入Node.js的模块机制
- 在Windows上安装Node.js模块的方法
- 在Windows平台上安装Node.js及NPM模块管理
- Node.js模块风格在浏览器中的尝试
- 兼容AMD,nodejs/commonjs规范的模块定义
- 深入浅出Node.js(七):Connect模块解析(之一)