ES6-04-模块化的暴露:export关键字

devtools/2024/10/18 16:48:13/

一、export关键字

在ES6中,模块化的暴露主要通过export关键字来实现。根据暴露方式的不同,可以将其分为以下几种类型:

1-1、分别暴露

每个export都暴露各自的方法或者变量

// test.js  
export let a = 100;  
export function sayHello() {  console.log("Hello, World");  
}

在其他文件中,可以使用解构赋值来引入这些暴露的变量或函数。

1-2、统一暴露

使用一个export暴露所有的方法和变量。

// test.js  
let city = '北京';  
const scorer = function() {  console.log("给我打分!");  
}  
export { city, scorer };

 引入时,可以直接通过解构赋值来引入所需的变量或函数。

1-3、默认暴露

使用export default来暴露一个默认值。

// test.js  
export default {  data: "四月",  test: function() {  console.log("一个小测试!!!");  }  
};

引入时,可以直接使用import关键字,不需要解构赋值。

1-4、ES6模块化暴露的注意事项

  • 导入与导出的变量名匹配:在引入模块时,导入的变量名必须与导出的变量名相匹配,除非使用了as关键字进行重命名。
  • ES6模块化的兼容性:虽然ES6模块化是标准化的解决方案,但在某些老旧的浏览器或环境中可能不被支持。在这些情况下,可能需要使用构建工具(如Webpack、Rollup等)或转译器(如Babel)来将ES6模块化代码转换为更兼容的格式(如CommonJS)。

二、import 关键字

与暴露方式相对应,ES6也提供了几种引入模块的方式:

2-1、通用引入(整个模块)

使用import * as moduleName from 'modulePath'

// 引入m1.js模块  
import * as _m1 from "js/m1.js";  
_m1.teach();

 

2-2、解构赋值引入

直接引入模块中暴露的特定变量或函数。

// 引入m1.js模块中的a和teach  
import { a, teach } from "js/m1.js";  
console.log(a); // 输出 100  
teach(); // 输出 "m1--我们可以教给你很多东西!"

 

2-3、默认引入

使用import defaultName from 'modulePath'

// 引入m3.js模块的默认暴露  
import m3 from "js/m3.js";  
m3.change(); // 输出 "m3---我们可以改变你!!"

2-4、注意事项

  • 命名冲突:当使用解构赋值引入多个模块时,如果变量名相同,则会产生命名冲突。可以使用as关键字进行重命名。
  • 导入路径:在import语句中,'modulePath'需要替换为实际的模块文件路径。
  • 模块化兼容性:虽然ES6模块化是标准化的解决方案,但在一些老旧环境或浏览器中可能不被支持。在这些情况下,可以使用构建工具或转译器进行转换。

http://www.ppmy.cn/devtools/50985.html

相关文章

iOS 18 为 iPhone 15 机型引入了更多充电限制选项

iOS 18 为 iPhone 15 机型引入了更多充电限制选项 所有四款iPhone 15型号都具备一项设置,可以限制设备充电至80%以内,这样能够缩短电池完全充电所需的时间,并有可能延长iPhone电池的使用寿命。随着iOS 18的推出,Apple进一步加入了…

2024 Jiangsu Collegiate Programming Contest E. Divide 题解 主席树

Divide 题目描述 Given an integer sequence a 1 , a 2 , … , a n a_1,a_2,\ldots,a_n a1​,a2​,…,an​ of length n n n. For an interval a l , … , a r a_l,\ldots,a_r al​,…,ar​ in this sequence, a Reduce operation divides the maximum value of the inter…

Flutter 中点击输入框之外的区域,进行失焦,收起键盘

首先引用 FocusNode() FocusNode focusNode FocusNode(); 然后在输入框组件中调用即可 TextField(controller: _textController,textAlign: TextAlign.start,focusNode: focusNode,onTapOutside: (e) > {focusNode.unfocus()},onEditingComplete: () {FocusScope.of(con…

【C#】图形图像编程

实验目标和要求: 掌握C#图形绘制基本概念;掌握C#字体处理;能进行C#图形图像综合设计。 运行效果如下所示: 1.功能说明与核心代码 使用panel为画板,完成以下设计内容: 使用pen绘制基础图形;使…

前端面试项目细节重难点(已工作|做分享)(九)

面试官:请你讲讲你在工作中如何开发一个新需求,你的整个开发过程是什么样的? 答:仔细想想,我开发新需求的过程如下: (1)第一步:理解需求文档: 首先&#x…

什么是分布式光伏系统?

随着全球对可再生能源和环保技术的日益重视,分布式光伏系统已成为电力领域中不可或缺的一部分。它代表了一种新兴的能源供应方式,具有显著的环保和经济价值。 一、定义与特点 分布式光伏系统是指将光伏组件安装在用户侧,如屋顶、墙面等建筑物…

VB.NET实现上位机自动识别可用串口

在实际应用中有时会牵扯到挑选可用串口,比如上位机和从站设备使用Modbus RTU协议进行通讯时需要选择COM串口,每次启动连接前都在设备管理器查看较为麻烦,可以设置一个串口自动识别功能,如果选择了错误的串口还可以提示串口选择错误…

新服务器常见设置

Step.1 设置安全组 创建普通用户 adduser username赋予sudo权限,需要在root用户下或者有sudo权限的用户下操作: usermod -aG sudo username开放80端口(HTTP默认端口)和443端口(HTTPS默认端口) 重设SSH端口…