- ES6 教程
- ES6 - 主页
- ES6 - 概述
- ES6 - 环境
- ES6 - 语法
- ES6 - 变量
- ES6 - 运算符
- ES6 - 决策
- ES6 - 循环
- ES6 - 函数
- ES6 - 事件
- ES6 - Cookie
- ES6 - 页面重定向
- ES6 - 对话框
- ES6 - 无效关键字
- ES6 - 页面打印
- ES6 - 对象
- ES6 - 数字
- ES6 - 布尔值
- ES6 - 字符串
- ES6 - 符号
- ES6 - 新的字符串方法
- ES6 - 数组
- ES6 - 日期
- ES6 - 数学
- ES6 - 正则表达式
- ES6 - HTML DOM
- ES6 - 迭代器
- ES6 - 集合
- ES6 - 类
- ES6 - 地图和集合
- ES6 - 承诺
- ES6 - 模块
- ES6 - 错误处理
- ES6 - 对象扩展
- ES6 - 反射 API
- ES6 - 代理 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
或者,也可以使用带有 {} 绑定语法的单个导出关键字来导出模块中的组件,如下所示 -
//using single export keyword export {component1,component2,....,componentN}
默认导出
仅需要导出单个值的模块可以使用默认导出。每个模块只能有一个默认导出。
句法
export default component_name
但是,一个模块可以同时具有默认导出和多个命名导出。
导入模块
为了能够使用模块,请使用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 文件中定义的组件。使用以下任一方法导入模块。
方法一
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 文件,并在实时服务器中运行它。请注意,我们应该在脚本标签中使用属性 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 文件并在实时服务器中运行它。请注意,我们应该在脚本标签中使用属性 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