工作 import和{}

Posted by CodingWithAlice on March 17, 2020

import和{}爱恨情仇

场景:导入的一个方法执行不了,发现是没有加{}导致的,真的很难找这个问题。就此机会整理一下import和{}的使用。

参考:阮一峰的es6 import部分,及博客

1、导入整个模块(不推荐,为了保证只有一个export)

import * as myModule from "/module-name/name.js";

引用时:myModule.doSomeThing();

2、导入单个模块

import { exportName } from "/module-name/name.js";
/* 导入时重命名为alias,重命名一般是为了唯一性 */
import { exportName as alias } from "/module-name/name.js";
import { export1, export2 as alias2 } from "/module-name/name.js";

name.js文件中导出的形式类似于:

function export1(x,y) {return x+y;}
function export2(x,y) {return x-y;}
export{export1,export2}

或者是

export function export1(x,y) {return x+y;}
export function export2(x,y) {return x-y;}

3、导出多个接口

import { export1 , export2 } from "/module-name/name.js";

4、导入默认值(唯一一种情况,导入时没有带{})

/* 解析到js中默认的export default */
import theDefaultExport from "/module-name/name.js";

总结:无论怎样导出,引入的时候都需要{}。大括号里面的变量名,必须与被导入模块对外接口的名称相同。

注意:

1⃣️import命令具有提升效果,会提升到整个模块的头部,首先执行,本质是因为import是编译阶段执行的,在代码执行之前。

2⃣️由于import是静态执行,所以不能使用表达式和变量,这些只有在运行时才能得到结果的语法结构。