- ES6 教程
- ES6 - 首页
- ES6 - 概述
- ES6 - 环境
- ES6 - 语法
- ES6 - 变量
- ES6 - 运算符
- ES6 - 决策
- ES6 - 循环
- ES6 - 函数
- ES6 - 事件
- ES6 - Cookie
- ES6 - 页面重定向
- ES6 - 对话框
- ES6 - Void 关键字
- ES6 - 页面打印
- ES6 - 对象
- ES6 - 数字
- ES6 - 布尔值
- ES6 - 字符串
- ES6 - Symbol
- ES6 - 新的字符串方法
- ES6 - 数组
- ES6 - 日期
- ES6 - 数学
- ES6 - 正则表达式
- ES6 - HTML DOM
- ES6 - 迭代器
- ES6 - 集合
- ES6 - 类
- ES6 - Map 和 Set
- ES6 - Promise
- ES6 - 模块
- ES6 - 错误处理
- ES6 - 对象扩展
- ES6 - Reflect API
- ES6 - Proxy API
- ES6 - 验证
- ES6 - 动画
- ES6 - 多媒体
- ES6 - 调试
- ES6 - 图片地图
- ES6 - 浏览器
- ES7 - 新特性
- ES8 - 新特性
- ES9 - 新特性
- ES6 有用资源
- ES6 - 快速指南
- ES6 - 有用资源
- ES6 - 讨论
ES6 - 模块
介绍
考虑这样一种情况:需要重用 JavaScript 代码的某些部分。ES6 通过模块的概念来解决这个问题。
模块组织了一组相关的 JavaScript 代码。模块可以包含变量和函数。模块只不过是用文件编写的 JavaScript 代码块。默认情况下,模块的变量和函数不可用。模块内的变量和函数应该导出,以便可以从其他文件中访问它们。ES6 中的模块仅在严格模式下工作。这意味着在模块中声明的变量或函数将无法全局访问。
导出模块
可以使用 `export` 关键字导出模块中的组件。模块中的导出可以分类如下:
- 命名导出
- 默认导出
命名导出
命名导出由它们的名称区分。一个模块中可以有多个命名导出。模块可以使用以下语法导出选定的组件:
语法 1
//using multiple export keyword export component1 export component2 ... ... export componentN
语法 2
或者,模块中的组件也可以使用单个 `export` 关键字和 `{}` 绑定语法导出,如下所示:
//using single export keyword export {component1,component2,....,componentN}
默认导出
只需要导出单个值的模块可以使用默认导出。每个模块只能有一个默认导出。
语法
export default component_name
但是,一个模块可以同时具有默认导出和多个命名导出。
导入模块
要使用模块,请使用`import` 关键字。模块可以有多个`import` 语句。
导入命名导出
导入命名导出时,相应组件的名称必须匹配。
语法
import {component1,component2..componentN} from module_name
但是,在导入命名导出时,可以使用 `as` 关键字重命名它们。使用以下语法:
import {original_component_name as new_component_name }
可以使用星号 `*` 运算符将所有命名导出导入到一个对象中。
import * as variable_name from module_name
导入默认导出
与命名导出不同,默认导出可以使用任何名称导入。
语法
import any_variable_name from module_name
示例:命名导出
步骤 1 - 创建一个文件 `company1.js` 并添加以下代码:
let company = "TutorialsPoint" let getCompany = function(){ return company.toUpperCase() } let setCompany = function(newValue){ company = newValue } export {company,getCompany,setCompany}
步骤 2 - 创建一个文件 `company2.js`。此文件使用 `company1.js` 文件中定义的组件。可以使用以下任一方法导入模块。
方法 1
import {company,getCompany} from './company1.js' console.log(company) console.log(getCompany())
方法 2
import {company as x, getCompany as y} from './company1.js' console.log(x) console.log(y())
方法 3
import * as myCompany from './company1.js' console.log(myCompany.getCompany()) console.log(myCompany.company)
步骤 3 - 使用 HTML 文件执行模块
要执行这两个模块,我们需要创建一个如下所示的 html 文件,并在实时服务器上运行它。请注意,我们应该在 script 标签中使用`type="module"` 属性。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script src="./company2.js" type="module"></script> </body> </html>
上述代码的输出如下所示:
TutorialsPoint TUTORIALSPOINT
默认导出
步骤 1 - 创建一个文件`company1.js` 并添加以下代码:
let name = 'TutorialsPoint' let company = { getName:function(){ return name }, setName:function(newName){ name = newName } } export default company
步骤 2 - 创建一个文件`company2.js`。此文件使用 `company1.js` 文件中定义的组件。
import c from './company1.js' console.log(c.getName()) c.setName('Google Inc') console.log(c.getName())
步骤 3 - 使用HTML 文件执行模块
要执行这两个模块,我们需要创建一个如下所示的 html 文件,并在实时服务器上运行它。请注意,我们应该在 script 标签中使用`type="module"` 属性。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script src="./company2.js" type="module"></script> </body> </html>
上述代码的输出如下所示:
TutorialsPoint Google Inc
示例:组合默认导出和命名导出
步骤 1 - 创建一个文件`company1.js` 并添加以下代码:
//named export export let name = 'TutorialsPoint' let company = { getName:function(){ return name }, setName:function(newName){ name =newName } } //default export export default company
步骤 2 - 创建一个文件`company2.js`。此文件使用`company1.js` 文件中定义的组件。首先导入默认导出,然后导入命名导出。
import c, {name} from './company1.js' console.log(name) console.log(c.getName()) c.setName("Mohtashim") console.log(c.getName())
步骤 3 - 使用 HTML 文件执行模块
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script src="company2.js" type="module"></script> </body> </html>
上述代码的输出如下所示:
TutorialsPoint TutorialsPoint Mohtashim