1. Node 环境介绍
CommonJs 简称 CMJ,CMJ 的模块标准,必须在 node 的环境中才支持。在浏览器中用,是不行的。
查看电脑是否安装 node,通过打开终端,运行 node -v 查看是否返回 node 版本。返回则已安装。
CMJ 在 node 中怎么使用呢,其实和 JS 在浏览器环境下用法一样,变量的定义、判断、循环、数组的使用等都一样。与 JS 在浏览器中用法不同的是,API 不一样,在 node 中使用 Node API,在 JS 中使用的是 Web Api(DOM 和 BOM)。其中 Node API 很强大的,是开发服务器用的。
node 环境有什么用呢,就是使我们的 JS 代码,脱离浏览器直接运行,怎么做呢,打开终端,运行 node xxx.js 命令即可。
2. CMJ 中的模块特点
在 node 环境中,所有的 js 文件均是模块。那什么叫模块呢,就是独立的功能单元。浏览器可以同时引用多个 js,但在 node 里同时只能运行一个 js,这个 js 被称为入口文件。其他拥有独立功能的 js 文件,可以通过导出后,被入口 JS 文件导入。比如将 index.js 作为入口文件,math.js 作为专门提供计算函数的模块。所有模块中的全局变量,函数,均不会发生环境污染。
3. 模块的导出
一个模块提供的函数,怎么给其他模块使用,那就需要把模块提供的函数导出,那怎么导出呢,在 node 中,通过 module.exports 导出。
// math.js function add(a, b) { return a + b; } module.exports = { add, };
4. 模块的导入
当一个模块,需要用到其他模块的函数或变量时,就需要导入这些函数和变量,那怎么导入呢,在 node 中,通过 require(模块路径),模块路径必须以 ./ 或 ../ 开头。其中 ./ 表示当前目录,../ 表示上级目录。那 require 做了什么事呢,首先会找到模块路径的 js,然后把这个 js 从头到尾的运行一遍,运行完后,module.exports 的值就作为这个模块的导出,而 require 函数的返回结果就是 module.exports 的值。拿到这个值后,我们就可以用到别的模块的函数或变量了。
模块是有缓存的,第一次运行模块后,导出结果,会被缓存,之后在使用该模块,直接使用缓存结果。
// index.js const math = require("./math.js"); math.add(1, 2); // 3