运行时加载(commonJS)
let {state,exists,readFile} =require('fs')
实质:加载整个fs模块,生成一个对象,然后再从这个对象上读取3个方法。
编译时加载(静态加载)(ES6)
import {stat,exits,readFile} from 'fs';
实质:从fs模块加载3个方法,其他方法不加载。
模块(export、import)
模块:一个模块就是一个对立文件,该文件内部的所有变量,外部无法获取。
export:关键字输出该变量,使得外部可以获取某个变量
import:加载某个模块里的变量
// test.js
export var test="merry"
// main.js
import{test} from './test.js'
export default
使用import命令时,需要知道加载的变量名等,否则无法加载;为了方便,使用export default
命令,为模块指定默认输出。
eg:
export default function(){
}
import customName from './export-default'
加载模块时,可以使用任意名称指向上面输入的方法。
使用了default export 对应的import语句不需要
import()函数
适用场景
1.按需加载
2.条件加载
3.动态的模块路径
ES6模块加载CommonJS模块
CommonJS模块的输出都定义在module.exports这个属性上。Node的impor命令加载CommonJS模块,Node会自动将module.exports属性,当作模块的默认输出。即等同于export default xxx
module.exports={
test:"merry"
}
// 等同于
export default{
test:"merry"
}
CommonJS模块加载ES6模块
CommonJS模块加载ES6模块,不能使用require命令,而要使用import()函数。
相关链接:
CommonJS规范,http://javascript.ruanyifeng.com/nodejs/module.html
ES6 Module 的语法,http://es6.ruanyifeng.com/#docs/module