ES6中export和import详解(export定义了模块的对外接口后,其他JS文件就可以通过import来加载这个模块)
Posted Danna123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6中export和import详解(export定义了模块的对外接口后,其他JS文件就可以通过import来加载这个模块)相关的知识,希望对你有一定的参考价值。
1.Export
模块是独立的文件,该文件内部的所有的变量外部都无法获取。如果希望获取某个变量,必须通过export输出
如:// profile.js
export var firstName = "Michael";
export var lastName = "Jackson";
export var year = 1958;
或者用更好的方式:用大括号指定要输出的一组变量
如:// profile.js
var firstName = "Michael";
var lastName = "Jackson";
var year = 1958;
export firstName,lastName,year;
除了输出变量,还可以输出函数或者类(class)
export function multiply(x,y)
return x * y;
同样的道理,可以批量输出,也可以用as重命名
function v1()......
function v2()......
export
v1 as fn1,
v2 as fn2
export命令规定的是对外接口,必须与模块内部变量建立一一对应的关系
// 写法一
export var m =1;
//写法二
var m = 1;
export m;
//写法三
var n = 1;
export n as m;
Import命令
export定义了模块的对外接口后,其他JS文件就可以通过import来加载这个模块
// circle.js 输出两个函数
export function area(radius)
return Math.PI * radius * radius
export function circumference(radius)
return 2*Math.PI * radius;
// main.js加载模块 逐一加载的写法
import area, circumference from ./circle;
console.log(圆面积:+area(4));
console.log(圆周长:+circumference(14));
//整体加载的写法如下:
import * as circle from ./circle;
console.log(圆面积:+circle.area(4));
console.log(圆周长:+circle.circumference(14));
注意:不允许运行时改变!!!!!
4.export default
在上面的例子中,使用import导入时,都需要知道模块中所要加载的变量名或函数名,用户可能不想阅读源码,只想直接调用接口,就可以用export default命令,为模块指定输出
// 命名为export-default.js
export default function ()
console.log(foo);
其他模块加载该模块时,import命令可以为该匿名函数指定任意名字。
// 命名为 import-default.js
import customName from ./export-default;
customName();
对了,如果是默认输出的,default,然后import的时候就不需要花括号
如果是按需引入,就需要花括号哦
也可以按条件加载呢:
import()可以放在if......else语句中,实现条件加载。
if (condition)
import(moduleA).then(......);
else
import(moduleB).then(......);
以上是关于ES6中export和import详解(export定义了模块的对外接口后,其他JS文件就可以通过import来加载这个模块)的主要内容,如果未能解决你的问题,请参考以下文章
export、export default 、module.exports详解
RequireJS-CommonJS-AMD-ES6 Import/Export详解
尝试在 Rails 4 中使用 sprockets-es6 使用 'import' 和 'export' es6