模块化(四)

52 阅读2分钟

认识 ES Module

javaScript没有模块化一直是它的痛点,所以才会产生我们前面学习的社区规范:CommonJS、AMD、CMD等,

所以在ES推出自己的模块化系统时,大家也是兴奋异常。

ES Module和CommonJS的模块化有一些不同之处:

一方面它使用了import和export关键字;

另一方面它采用编译期的静态分析,并且也加入了动态引用的方式;

ES Module模块采用export和import关键字来实现模块化:

export负责将模块内的内容导出;

import负责从其他模块导入内容;

采用ES Module将自动采用严格模式:use strict

exports关键字

export关键字将一个模块中的变量、函数、类等导出;

方式一:在语句声明的前面直接加上export关键字

方式二:将所有需要导出的标识符,放到export后面的 {}中

注意:这里的 {}里面不是ES6的对象字面量的增强写法,{}也不是表示一个对象的;

所以: export {name: name},是错误的写法;

方式三:导出时给标识符起一个别名

import关键字

mport关键字负责从另外一个模块中导入内容

导入内容的方式也有多种:

方式一:import {标识符列表} from '模块';

注意:这里的{}也不是一个对象,里面只是存放导入的标识符列表内容;

方式二:导入时给标识符起别名

方式三:通过 * 将模块功能放到一个模块功能对象(a module object)上

default用法

前面我们学习的导出功能都是有名字的导出(named exports):

在导出export时指定了名字;

在导入import时需要知道具体的名字;

还有一种导出叫做默认导出(default export)

默认导出export时可以不需要指定名字;

在导入时不需要使用 {},并且可以自己来指定名字;

它也方便我们和现有的CommonJS等规范相互操作;注意:在一个模块中,只能有一个默认导出(default export);

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情