ES6 - module
一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用export
关键字输出该变量。下面是一个 JS 文件,里面使用export
命令输出变量。区别于 CommonJS 。
一、export
1.导出对象
----------第一种-------------- export var firstName = 'Michael'; export var lastName = 'Jackson'; export var year = 1958; -----------第二种------------- var firstName = 'Michael'; var lastName = 'Jackson'; var year = 1958; export { firstName, lastName, year };
使用大括号指定所要输出的一组变量-应该优先考虑使用这种写法。因为这样就可以在脚本尾部,一眼看清楚输出了哪些变量。
2.导出函数
------------------------------------ export function multiply(x, y) { return x * y; }; ----------------------------------- // 报错 function f() {} export f; // 正确 export function f() {}; // 正确 function f() {} export {f};
从前面的例子可以看出,使用import
命令的时候,用户需要知道所要加载的变量名或函数名,否则无法加载。
3.default导出
-------------------------- // 正确 export var a = 1; // 正确 var a = 1; export default a; // 错误 export default var a = 1; ---------------------------- // export-default.js export default function foo() { console.log('foo'); } // 或者写成 function foo() { console.log('foo'); } export default foo;
二、import
使用export
命令定义了模块的对外接口以后,其他 JS 文件就可以通过import
命令加载这个模块:
// main.js import { firstName, lastName, year } from './profile.js'; function setName(element) { element.textContent = firstName + ' ' + lastName; }
上面代码的import
命令,用于加载profile.js
文件,并从中输入变量。import
命令接受一对大括号,里面指定要从其他模块导入的变量名。大括号里面的变量名,必须与被导入模块(profile.js
)对外接口的名称相同。import
后面的from
指定模块文件的位置,可以是相对路径,也可以是绝对路径。如果不带有路径,只是一个模块名,那么必须有配置文件,告诉 JavaScript 引擎该模块的位置。如果多次重复执行同一句import
语句,那么只会执行一次,而不会执行多次。
如果想为输入的变量重新取一个名字,import
命令要使用as
关键字,将输入的变量重命名:
import { lastName as surname } from './profile.js';
export default 导出的,其他模块加载该模块时,import
命令可以为该匿名函数指定任意名字。
// export-default.js export default function () { console.log('foo'); } -------------------------------- // import-default.js import customName from './export-default'; customName(); // 'foo'
上面代码的import
命令,可以用任意名称指向export-default.js
输出的方法,这时就不需要知道原模块输出的函数名。需要注意的是,这时import
命令后面,不使用大括号。
参考:
https://es6.ruanyifeng.com/#docs/module
posted on 2021-07-20 20:14 TrustNature 阅读(37) 评论(0) 编辑 收藏 举报