命令 规范 调用 本质 特点
require CommonJS规范 运行时调用 赋值过程 非语言层面的标准。 社区方案,提供了服务器/浏览器的模块加载方案。只能在运行时确定模块的依赖关系及输入/输出的变量,无法进行静态优化。
import es6+的语法标准 编译时调用 解构过程 语言规格层面支持模块功能。支持编译时静态分析,便于JS引入宏和类型检验。动态绑定

比如分析这一段 :

import { readFile } from 'fs';

js 代码被 JavaScript 引擎编译时, 并将上面 fs 模块的属性 readFile 指向对应模块的 export const readFile() 方法上,注意这里只是做了指针指向,而并不是执行 fs 模块。当执行 readFile() 时,就会去找指针指向的代码并执行。

区分于CommonJS模块:

let { stat, exists, readFile } = require('fs');

其实上面代码是先执行 fs 模块,得到一份代码拷贝,再获取对应的属性或方法的。


记得要微笑
1.9k 声望4.5k 粉丝

知不足而奋进,望远山而前行,卯足劲,不减热爱。


引用和评论

0 条评论