node中的模块
javaScript 从一个仅仅在浏览器上面的一个玩具语言,一转眼演变成无所不能神一般的存在。但是,由于天生存在着一点戏剧性,模块系统作为一门语言最基本的属性却是javaScript所缺的。
1. JS的不足
- js没有模块系统,不支持封闭作用域或依赖管理
- 没有标准库,没有文件系统API
- 没有包管理系统,不能自动加载和安装依赖
2.commonjs规范
- 一个 node.js由大量模块组成,每个JS文件都是一个模块
- 实现了require方法,npm基于commonjs实现了自动加载和安装依赖
3.模块化优点
- 增加内聚性,有助分工协作
- 方便重构
- 提高代码质量
4.模块使用
- 定义模块
- 导出模块 module.exports和exports
- 使用模块 require(‘filename’);
- 实现原理
(function(exports,require,module,__filename,__dirname){return module.exports;})();
5.require的应用
加载模块后会缓存,多次加载后得到同一对象
require('./test.js')查看模块缓存
console.log(require.cache);查询模块绝对路径
require.resolve('./test.js');查看单个的模块缓存
require.cache[require.resolve('./test.js')]删除模块缓存
delete require.cache[require.resolve('./test.js')];
6.包和npm
多个模块可以封装成一个包
npm是node.js默认的模块管理器,用来安装和管理node模块 网址为 http://npmjs.org
可以用包的方式通过npm安装、卸载、发布包
组织和管理自己的模块
放置多个模块的文件夹称为包,可以通过包来对一组具有相互依赖的有关系模块进行管理。
1.我们要在当前项目 一键初始化package.json
npm init -y然后会自动生成一个package.json文件
{"name":"包的名称","description":"包的简要说明。","version":"版本号","keywords":"关键字","licenses":"许可证","repositories":"仓库地址 ","dependencies":"包的依赖,一个关联数组,由包名称和版本组成。"}2.安装引用第三方包
全局安装 直接下载到Node的安装目录中,各个项目都可以调用,适合工具模块,比如webpack
npm install -g webpack //全局安装本地安装 将一个模块下载到当前目录的node_modules子目录,然后只有在当前目录和它的子目录之中,才能调用这个模块
npm install webpack //本地安装查看全局安装路径
npm root -g2-1.开发时候的依赖(在开发的时候才用到上线的时候用不到)
npm install --save-dev 文件名 //devDependencies开发依赖 会自动引入到package.json2-2. 写代码时候的依赖(代码依赖)
npm install --save 文件名 //dependencies上线依赖 会自动引入到package.json3.卸载第三方包
3-1.卸载全局
npm uninstall -g [package name]3-2.卸载本地
npm uninstall [package name] --save-devnpm uninstall [package name] --save4.发布全局项目
4-1.登陆用户
npm adduser4-2.发布包
npm publish
源管理工具
1.安装此工具
npm install -g nrm2.显示所有的源
nrm ls3.切换到中国源
nrm use cnpm