DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

node.js的模块系统


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



Published

Jan 4, 2017

Last Updated

Jan 4, 2017

Category

Tech

Tags

  • export 2
  • module 4
  • node.js 5
  • require 1

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor