Webpack实战:入门、进阶与调优
上QQ阅读APP看书,第一时间看更新

2.1.1 模块

CommonJS中规定每个文件是一个模块。将一个JavaScript文件直接通过script标签插入页面中与封装成CommonJS模块最大的不同在于,前者的顶层作用域是全局作用域,在进行变量及函数声明时会污染全局环境;而后者会形成一个属于模块自身的作用域,所有的变量及函数只有自己能访问,对外是不可见的。请看下面的例子:


// calculator.js
var name = 'calculator.js';

// index.js
var name = 'index.js';
require('./calculator.js');
console.log(name); // index.js

这里有两个文件,在index.js中我们通过CommonJS的require函数加载calculator.js。运行之后控制台结果是“index.js”,这说明calculator.js中的变量声明并不会影响index.js,可见每个模块是拥有各自的作用域的。