11-ES6模块

11.1 在javasacript之前的版本中模块化代码

通过立即执行函数的必包实现模块。

11.2 ES6模块

1、ES6优缺点和思想
  • es6结合了commonjs和AMD优点,
    • 与commonjs类似,es6模块语法相对简单,基于文件(一个文件是一个模块)
    • 与AMD类似,ES6支持异步模块加载。
  • 浏览器尚未支持ES6,使用需编译,如Babel;
  • 思想:
    • 必须显式的使用export导出模块变量,才能在外部访问模块变量。否则,就算是模块内的全局变量,在模块外部也访问不到;这样做的好处是可以避免滥用全局变量而让代码更安全。
  • 两个关键字
    • export 导出
    • import 导入
2、导出和导入

导出

//定义时导出
export const message = "hi"; 
export function message (){ };

//导出模块标识符
const body = "hello";
function head (){ };
export { body,head }; //一一罗列导出的变量

//导入
import { body,head } from "example.js"; //一一罗列导入的变量
import * as newModule from "example.js";//导出这个文件所有可导出的变量为一个新模块,并取别名newModule
// 使用 newModule.head();

//默认导出
export default class ninjia(){}
export function getClass(){} //定义默认导出还可以指定导出的名称

//默认导出的导入
import newNinjia from "example.js";//导入默认导出不需要加花括号,可以重命名,直接使用,不需要加newModule.head();

//有默认导出和其他导出的导入 简写","
import newNinjia,{getClass} from 

//导出重命名
export {sayHi as sayHello}; //导出重命名
import {sayHello} from "example.js"; //导入则必须使用重命名导入 无法使用原始变量导入

//导入重命名
//当需要导入的模块名称冲突时,可使用as修改别名,当然,修改后不能使用原名访问
import {greet as sayHello} from "example.js";
import {greet as sayHi} from "example.js";

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容