ES6--Module

本篇文章转载自我的个人博客

export

export命令可以输出变量、类、函数

export输出变量就是本来的名字,但可以通过as关键字重命名

export命令规定对外接口,必须与模块内部变量一一建立连接对应关系

//报错
export 1;

//报错
var m = 1;
export m;
//报错
function f() {}
export f;
//正确
export var m = 1;
export function fn() {}

var m = 1;
export {m};
export {m as n};
function fn() {}
export {fn}

export语句输出的接口与其对应的值是动态绑定关系,即通过该接口可以去到模块内部实时的值

export命令只要处于模块顶层就可以,若处于块级作用域则会报错,import类似

import

import { localname, oldname as newname } from 'path';

import命令具有提升效果,会提升到整个模块头部并首先执行,在编译阶段执行,静态执行,不能使用表达式和变量

多次重复执行同一句import语句,只会执行一次

import { foo } from 'my_module';
import { bar } from 'my_module';

//等同于
import { foo, bar } from 'my_module';

import * as myFun from 'my_module';
myFun.foo();
myFun.bar();

export default

扫描二维码关注公众号,回复: 2539775 查看本文章

import引入时不需要大括号

import加载时,export default暴露的函数都被视为匿名函数

export default命令用于指定模块的默认输出,一个模块只能有一个默认输出,本质是输出一个叫做default的变量,将后面的值付给default,因此后面不能跟变量声明语句

//正确
var a = 1;
export default a;

//错误
export default var a = 1;

//正确
export default 42;

export与import复合写法

export { foo, bar } from 'my_module';

//等同于
import { foo, bar } from 'my_module';
export { foo, bar };

//下面3种import没有复合写法
import * as some from 'my_module';
import some from 'my_module';
import some, { named } from 'my_module';;

import()

import无法做到像require一样动态加载,有一个提案建议引入import()函数完成动态加载,import()类似于Node的require方法,区别在于前者是异步加载,后者是同步加载

适用场景:

    按需加载

    条件加载

    动态的模块路径

猜你喜欢

转载自blog.csdn.net/LL18781132750/article/details/81357062