JavaScript ES6 新特性语法学习(3)- 模块化

131 阅读2分钟

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

前言

前两天总结了一下ES6中的两个我觉得非常常见的新特性,都是我想稍微深入了解的内容,今天来学习一下ES6中引入其他js文件的方法也就是模块化。

最近看到的例子

先看一下常见的例子,特别是在脚手架中:

import { MessageBox, Message } from 'element-ui'

export default service
export function isExternal(path) {
  return /^(https?:|mailto:|tel:)/.test(path)
}

我随便在我的之前做的一个vue-element-admin的项目中随便找了几行的代码。这就是 ES6模块化,它是 浏览器端 与 服务器端 通用的模块化开发规范。

定义与三种基本语法

其中有几个定义需要知晓:

  • 每个 js 文件都是一个独立的模块
  • 导入其它模块成员使用 import 关键字
  • 向外共享模块成员使用 export 关键字

模块化有三种基本语法:

  • 默认导出与默认导入
  • 按需导出与按需导入
  • 直接导入并执行模块中的代码

接下来举例三种基本语法

默认导出与导入

导出:

export default ...

注意:每个模块中,只允许使用唯一的一次

导入:

import ... from ...

按需导出与导出

导出:

export ...

可以在一个模块中使用多次,例如:

export const a = 1
export const b = 2

导入:

import { ... } from ...

就像最开始的例子中在Element UI中 导入自己想要的组件,这个可以说是最常见的了
注意: 按需导入的成员名称必须和按需导出的名称保持一致,按需可以使用 as 关键字进行重命名,按需导入可以和默认导入一起使用。

直接导入并执行模块中的代码

非常少见,一般在node.js服务端可以看到这样的写法
就是直接使用import 某个js文件:

import './a.js'

总结

模块化是我看到ES6新语法最新奇的例子,让我觉得JavaScript越来越像一个服务端,运行在操作系统上的语言了。今天回顾了三种基本语法,又加深了我对ES6新特性的映象,更加能够理解那些脚手架的目录结构语法逻辑了,没了解之间去学习React的时候很懵逼,哈哈。