bfchengnuo / MyRecord

平时充电做的笔记,一个程序猿的自我修养.
https://bfchengnuo.com/MyRecord/
33 stars 8 forks source link

require和import #64

Open bfchengnuo opened 4 years ago

bfchengnuo commented 4 years ago

ES6 标准发布后,module 成为标准,标准的使用是以 export 指令导出接口,以 import 引入模块;这一点在博客介绍 ES 的时候也提到过。

在之前的 node 模块中,采用的大多数是 CommonJS 规范,使用 require 引入模块,使用 module.exports 导出接口。

node 的 module 遵循 CommonJS 规范,requirejs 遵循 AMD,seajs 遵循 CMD,虽各有不同,但总之还是大体保持较为统一的代码风格。

require 的使用非常简单,它相当于 module.exports 的传送门,module.exports 后面的内容是什么,require 的结果就是什么,对象、数字、字符串、函数…… 再把 require 的结果赋值给某个变量,相当于把 require 和 module.exports 进行平行空间的位置重叠。

require('./a')(); // a模块是一个函数,立即执行a模块函数
var data = require('./a').data; // a模块导出的是一个对象
var a = require('./a')[0]; // a模块导出的是一个数组

如果使用 babel 支持 ES6,也仅仅是将 ES6 转码为 ES5 再执行,import 语法会被转码为 require; 目前,大多数 JS 引擎对 ES6 支持都不错,使用 ES6 语法是不错的选择。