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
是静态执行,所以不能使用表达式和变量,这些只有在运行时才能得到结果的语法结构。