CommonJS

# CommonJS

# CommonJS 规范:

  • 所有的JS文件均是一个模块
  • 所有的模块中的全局变量、函数、均不会产生污染
  • 当一个模块需要提供一些东西给别的函数使用时,需要把这些东西导出
  • 当一个模块需要用到别的模块的东西时,需要导入(模块路径必须以./ 或 ../开头)
  • 模块有缓存,第一次运行模块后,导出结果会被缓存,之后再使用该模块,直接使用缓存结果。

# 导出

通过 module.exports 来导出。

// 假设有 utils.js
function add(a,b){
  return  a + b;
}

module.exports = {
  add,
}

# 导入

通过 require 导入,理论上来讲,你导出的东西是什么,导入的就是什么

const utils = require('./utils.js');
console.log(typeof utils.add) // function

当js解析到require的时候,会跑到那个路径下面,找到这个js,然后把它执行一遍,然后将结果放到 module 的 exports 这个属性里面。 当我们再次引用同一文件时,由于之前已经执行过一次,所以不会再次执行而是直接使用缓存值。