Node.js之CommonJS、模块化理解、导入、导出、CommonJs的模块化机制

CommonJS规范

  1. 一个js文件就是一个模块
  2. 模块内所有的变量均为局部变量,不会污染全局
  3. 模块中需要提供给其他模块使用的内容需要导出
  4. 导出使用exports.xxx = xxxmodule.exports=xxxthis.xxx=xxx
  5. 其他模块可以使用require函数导入

node实现了CommonJS规范

在编写模块时,都有require、exports、module三个预先定义好的变量可以使用。

require{}函数的两个作用

  1. 执行导入的模块中的代码;

  2. 返回导入模块中的接口;

导入

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;

总结

  1. Node中每个模块都有一个module对象,module对象中有一个exports属性为一个接口对象,我们需要把模块之间的公共的方法或者属性挂载在这个接口对象中,方便其他模块使用这些公共的方法或者属性。
  2. Node 中每个模块都会把module.exports指向的对象赋值给一个变量exports,也就是说exports = module.exports.
  3. Node中每个模块的最后,都会return:module.exports。
  4. module.exports = xxx,表示当前模块导出一个单一成员,结果就是xxx。
  5. 如果需要导出多个成员变量时,必须使用exports.add = xxx; exports.foo = xxx; 或者使用 module.exports.add = xxx; module.export.foo = xxx; 

CommonJs的模块化机制

如果我们想要使用第三方包,那么就需要npm去下载,Node.js中使用CommonJs模块化机制,通过npm下载第三方包,

我们在项目中引入第三方包都是let xx=require('第三方包名');究竟require 方法加载第三方包的原理机制如下:

  1. 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 文件夹,这个文件夹下的就是你所引入的第三方包

Node.js之CommonJS、模块化理解、导入、导出、CommonJs的模块化机制_第1张图片

然后使用require使用jQuery

let $ = require('jquery');

2.找到该第三方包中的package.json文件,并且找到里面的main属性对应的如果模块,该入口模块即为加载的第三方模块。

所以jquery.js 就在 dist目录下

很明显,可以看到  module.exports 的实现方法。

Node.js之CommonJS、模块化理解、导入、导出、CommonJs的模块化机制_第2张图片

3.如果在要加载的第三方包中没有找到package.json 文件或者是在package.json文件中没有main 属性

则默认加载第三方包中的index.js文件。

4.如果在加载第三方模块的文件的同级目录没有找到node_modules 文件夹,或者以上所有的情况都没有找到,

则会向上一级父目录下查找 node_modules 文件夹,查找规则如上一致。

npm 是什么

npm是Node JavaScript平台的软件包管理器。它将模块放置在适当的位置,以便节点可以找到它们,并智能地管理依赖关系冲突

https://www.npmjs.cn/

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

你可能感兴趣的:(node.js)