module
JavaScript一直没有模块(module)体系,无法将一个大工程拆分成互相依赖的小文件,再用简单的方法将它们拼装起来。ES6在语言规格的层面上实现了模块功能,成为浏览器和服务器通用的模块解决方案。
// ES6 模块
import { stat,exists,readFile } from 'fs'
ES6模块设计的思想是尽量静态化,使得编译时就能确定模块的依赖关系,以及输入输出的变量。ES6编译时可以完成模块加载,比CommonJS的“运行时加载”的效率更高,但是也导致ES6模块本身无法被引用,因为它不是对象。
module.export
模块功能主要由两个功能构成:export和import。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。
一个模块就是一个独立的文件。 该文件内部的所有变量,外部无法获取。如果希望外部能够获取模块内部的某个变量,就必须用export关键字输出该变量。
// 推荐写法
var a = 1;
var b = 2;
var c = 3;
export {a,b,c}
export导出可以更改名字
// c可以被导出两次
export {a as a1,b as b2,c as c3, c as c4}
export不能导出值,只能导出接口,function和class一样
//错误写法1
var a = 1;
export a;
//错误写法2
export 1;
// 正确写法1
export var a = 1;
// 正确写法2
var a = 1;
export {a};
// 正确写法3
var n = 2;
export {n as m}
export输出的接口和其对应的值是动态绑定关系,可以通过接口实时拿到接口内部的值
// foo的值会实时更改
export var foo = 'bar';
setTimeout(()=> foo = 'baz',500)
export命令可以出现在模块的任何位置,只要位于模块顶层就行,即不能出现在块级作用域内
function foo() {
export default 'bar' //SyntaxError
}
foo()
- JavaScript module exportjavascript module export quot exported module none exports nodejs module modulenotfounderror import_export module import exported module member vetur module unnamed export java exports模块default module exports module javascript default export es javascript objects export using