模块
系统,不支持封闭作用域
或依赖管理
标准库
,没有文件系统API包
管理系统,不能自动加载和安装依赖 CommonJS 是javascript模块化编程的一种规范,主要是在服务器端模块化的规范,一个单独的文件就是一个模块。每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非定义为global对象的属性。
每个模块都是一个单独的作用域,通过闭包的形式产生独立作用域
(function(exports,require,module,__filename,__dirname){
return module.exports;
});
require('./test.js');
console.log(require.cache);
require.resolve('./test.js');
require.cache[require.resolve('./test.js')]
require.cache[require.resolve('./test.js')];
module.exports和exports的区别
(function(exports,require,module,__filename,__dirname){
exports = module.exports = {};
return module.exports;
});
$ npm init
{
"name":"包的名称",
"description":"包的简要说明。",
"version":"版本号",
"keywords":"关键字",
"licenses":"许可证",
"repositories":"仓库地址 ",
"dependencies":"包的依赖,一个关联数组,由包名称和版本组成。"
}
直接下载到Node的安装目录中,各个项目都可以调用,适合工具模块,比如webpack
$ npm install -global webpack
全局安装可以在命令行下直接使用
将一个模块下载到当前目录的node_modules子目录,然后只有在当前目录和它的子目录之中,才能调用这个模块
$ npm install webpack --save-dev/--save
后期我们会在package.json里使用本地模块,我们可以用require使用本地模块
$ npm root -g
npm uninstall -g [package name]
npm uninstall [package name] --save-dev
$ mkdir jiang && cd jiang
$ npm init
$ npm adduser
$ npm publish
nrm NPM registry 管理工具
$ npm install -g nrm 安装此工具
$ nrm ls 显示所有的源
$ nrm use cnpm 切换到中国源
$ nrm help 显示帮助
这里我们使用util(内置模块)举例说明:
ctor.prototype.__proto__ = superCtor.prototype;
ctor.prototype = Object.create(superCtor.prototype);
var obj = {name:'zfpx',age:7};
util.inspect(obj,{showHidden:true,depth:1,colors:true});
给对象定义属性Object.defineProperty(obj,'age',{
value:100,
enumerable:true,
writable:true,
configurable:true
});
当没有以'/'或者'./'来指向一个文件时,这个模块要么是核心模块,要么就是从node_modules文件夹加载的