CommonJS规范
- 一个js文件就是一个模块
- 模块内所有的变量均为局部变量,不会污染全局
- 模块中需要提供给其他模块使用的内容需要导出
- 导出使用
exports.xxx = xxx
或module.exports=xxx
或this.xxx=xxx
- 其他模块可以使用
require
函数导入
node实现了CommonJS规范
在编写模块时,都有require、exports、module三个预先定义好的变量可以使用。
require{}函数的两个作用
-
执行导入的模块中的代码;
-
返回导入模块中的接口;
导入
let a = require('./b');
console.log(a);
导出
let a = 123;
exports.a = a;
modules.exports 默认就是等于 exports
let a = 123;
let b = 23;
let c = 789;
exports.a = a;
module.exports.c = c;
总结
- Node中每个模块都有一个module对象,module对象中有一个exports属性为一个接口对象,我们需要把模块之间的公共的方法或者属性挂载在这个接口对象中,方便其他模块使用这些公共的方法或者属性。
- Node 中每个模块都会把module.exports指向的对象赋值给一个变量exports,也就是说exports = module.exports.
- Node中每个模块的最后,都会return:module.exports。
- module.exports = xxx,表示当前模块导出一个单一成员,结果就是xxx。
- 如果需要导出多个成员变量时,必须使用exports.add = xxx; exports.foo = xxx; 或者使用 module.exports.add = xxx; module.export.foo = xxx;
CommonJs的模块化机制
如果我们想要使用第三方包,那么就需要npm去下载,Node.js中使用CommonJs模块化机制,通过npm下载第三方包,
我们在项目中引入第三方包都是let xx=require('第三方包名');究竟require 方法加载第三方包的原理机制如下:
- require('第三方包名') 优先在加载该包的模块都是同级目录 node_modules 中查找第三方包,如果有则加载。
let tempate = require('art-template') //加载第三方包
设置国内npm 镜像地址
npm install -g cnpm --registry=https://registry.npm.taobao.org
等待安装成功
然后比如要引入jquery 那么执行
npm install jquery
然后重新查看目录就会发下 多了一个node_modules 文件夹,这个文件夹下的就是你所引入的第三方包
然后使用require使用jQuery
let $ = require('jquery');
2.找到该第三方包中的package.json文件,并且找到里面的main属性对应的如果模块,该入口模块即为加载的第三方模块。
所以jquery.js 就在 dist目录下
很明显,可以看到 module.exports 的实现方法。
3.如果在要加载的第三方包中没有找到package.json 文件或者是在package.json文件中没有main 属性
则默认加载第三方包中的index.js文件。
4.如果在加载第三方模块的文件的同级目录没有找到node_modules 文件夹,或者以上所有的情况都没有找到,
则会向上一级父目录下查找 node_modules 文件夹,查找规则如上一致。
npm 是什么
npm是Node JavaScript平台的软件包管理器。它将模块放置在适当的位置,以便节点可以找到它们,并智能地管理依赖关系冲突
npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块)。来自各大洲的开源软件开发者使用 npm 互相分享和借鉴。包的结构使您能够轻松跟踪依赖项和版本。
下面是关于 npm 的快速介绍:
npm 由三个独立的部分组成:
- 网站
- 注册表(registry)
- 命令行工具 (CLI)
npm常用命令
npm -v 查看npm 版本。
npm init 初始化后会出现一个package.json配置文件,可以在后面加上 -y,快速跳过问答式界面。
npm install 会根据项目中的package.json文件自动下载目录中所需要的全部依赖。
npm install 包名 --save-dev(npm install 包名 -D) 安装的包只用于开发环境,不会用于生产环境,会出现在package.json文件中的devDependencies属性中。
npm install 包名 --save(npm install 包名 -S) 安装的包需要发布到生产环境,会出现在package.json文件的dependencies 属性中。
npm list 查看当前目录下已安装的node 包
npm list -g 查看全局已经安装过的node 包
npm --help 查看npm 帮助命令
npm update 包名:更新指定包名
npm uninstall 包名: 卸载指定包
npm config list 查看配置信息
npm 指定命令 --help 查看指定命令的帮助
npm info 指定包名 查看远程npm 上指定包的所有版本信息
npm config set registry https://registry.npm.taobao.org: 修改下载镜像为淘宝镜像
npm root 查看当前包的安装路径
npm -root -g 查看全局的包的安装路径
npm ls 包名 查看本地安装的指定包的版本信息,没有显示empty
npm ls 包名 -g 查看全局安装的指定包的版本信息,没有显示empty