node.green是一个详细列出node.js 的各个版本支持的ES2015语言特性的网站。
CommonJS是一种JavaScript模块化标准,主要在后端JS中比较流行, node.js的模块化基于CommonJS, 另一个模块化标准是AMD,主要在前端JS中比较流行。
推荐的导出方式:
一个js文件是一个模块(module),模块中包含一个或者多个函数,
这些函数写成exports
对象的属性,就可以被其他js文件引用了:
(假设模块文件的文件名为circle.js):
const PI = Math.PI;
exports.area = (r) => PI * r * r;
exports.circumference = (r) => 2 * PI * r;
需要在其他js文件中使用这些函数时,用下面的方法:
(假设函数的使用者文件名为circle.js):
let circle = require('./circle.js');
circle.area(3.2);
circle.circumference(3.2)
不推荐(但是可以运行)的方式是把整个模块定义为一个函数:
// in circle.js:
module.exports = (r) => PI * r * r;
// in main.js:
let area = require('./circle.js')
area(3.2)
不能运行的方式是:
// in circle.js:
exports = (r) => PI * r * r;
// in main.js:
let area = require('./circle.js')
area(3.2)
exports
只是module.exports
的一个alias,
当对exports
重新赋值(而不是增加它的属性)会定义一个新的exports
对象,
而module.exports
则保持不变,所以其他文件无法引用这个函数。
参考:
JavaScript Module Systems Showdown: CommonJS vs AMD vs ES2015