ES6 export import

devtools/2024/9/22 16:59:33/

1.Export

模块是独立的文件,该文件内部的所有的变量外部都无法获取。如果希望获取某个变量,必须通过export输出, 声明的同时导出变量、函数以及类

javascript">// profile.js
export var firstName = 'Michael';
export var lastName = 'Jackson';
export var year = 1958;

或者用更好的方式:大括号指定要输出的一组变量 

javascript">// profile.js
var firstName = 'Michael';
var lastName = 'Jackson';
var year = 1958;export {firstName, lastName, year};

除了输出变量,还可以输出函数或者类(class)

javascript">export function multiply(x, y) {return x * y;
};

export 命令规定的是对外接口,必须与模块内部变量建立一一对应的关系

javascript">// 写法一
export var m = 1;// 写法二
var m = 1;
export {m};// 写法三
var n = 1;
export {n as m};// 报错
export 1;// 报错
var m = 1;
export m;

总结:

在 JavaScript 中,export 关键字用于将声明(变量、函数、类等)从一个模块导出,使其可以在其他模块中导入和使用。export 关键字可以与 import 关键字一起使用,用于模块之间的依赖管理。

导出语法

  1. 命名导出(Named Exports)

    • 使用花括号 {} 将要导出的内容包裹起来。
    • 可以导出多个声明,用逗号分隔。
    javascript">// 导出单个函数 export function myFunction() {} 
    // 导出多个变量 
    export const myVar1 = 'Hello'; 
    export let myVar2 = 123; 
    // 导出多个函数 
    export { myFunction1, myFunction2 }; 
    function myFunction1() {} 
    function myFunction2() {}
  2. 默认导出(Default Export)

    • 用 export default 语法导出一个默认的值(可以是函数、类、对象等)。
    • 一个模块只能有一个默认导出。
    javascript">// 导出一个函数作为默认导出 
    export default function() {} 
    // 导出一个类作为默认导出 
    export default class MyClass {} 
    // 导出一个对象作为默认导出 
    const myObject = { name: 'John', age: 30 }; 
    export default myObject;

  3. 解析流程

    当 JavaScript 解释器解析模块时,它会执行以下步骤来处理 export 关键字后面的内容:

        **命名导出:**解释器会识别 export { ... } 形式的语句,并将花括号中列出的变量、函             数或类等声明标记为模块的命名导出。

        **默认导出:**解释器会识别 export default ... 形式的语句,并将其后的值标记为模               块的默认导出。注意,只有一个默认导出可以存在于一个模块中。

          这些导出的声明和默认值会在模块加载时被收集和准备好,以便其他模块可以通过 import 语句访问它们。JavaScript 引擎在执行模块加载时会根据导出的声明和默认值建立模块的导出符号表,以便其他模块可以按名称或默认方式引用它们。

        之前的例子中,使用import导入时,都需要知道模块中所要加载的变量名或函数名,用户可能不想阅读源码,只想直接使用接口,就可以用export default命令,为模块指定输出

Import

*******importexport命令只能在模块的顶层,不能在代码块之中。否则会语法报错。

这样的设计,可以提高编译器效率,但是没有办法实现运行时加载。

因为require是运行时加载,所以import命令没有办法代替require的动态加载功能。

所以引入了import()函数。完成动态加载。

import(specifier)

specifier用来指定所要加载的模块的位置。import能接受什么参数,import()可以接受同样的参数。

import()返回一个Promise对象。

javascript">const main = document.querySelector('main');import(`./section-modules/${someVariable}.js`).then(module => {module.loadPageInto(main);}).catch(err => {main.textContent = err.message;});

复制代码

复制代码

5.import()函数适用场合

 1)按需加载:

复制代码

复制代码

复制代码

button.addEventListener('click', event => {import('./dialogBox.js').then(dialogBox => {dialogBox.open();}).catch(error => {/* Error handling */})
});

above: import模块在事件监听函数中,只有用户点击了按钮,才会加载这个模块。

 2)条件加载:

import()可以放在if...else语句中,实现条件加载。

javascript">if (condition) {import('moduleA').then(...);
} else {import('moduleB').then(...);
}


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

相关文章

文件共享服务NFS(服务名nfs,端口tcp/2049)

目录 前言 配置文件 工作原理 NFS服务器的配置 查看服务器是否安装 查看服务器状态 开启服务 编写配置文件 客户端挂载 前言 NFS(Network File System)是一种分布式文件系统协议,它允许网络中的不同计算机共享文件和目录&#xff0…

【OpenCV C++20 学习笔记】霍夫直线变换-Hough Line Transform

霍夫线条变换 原理标准和概率霍夫变换 API标准霍夫变换概率霍夫直线变换 实例 原理 霍夫直线变换一般用来检测直线,它要在边缘检测之后才能应用。 在数学上要定义一条直线通常有2种方法: 笛卡尔坐标系:两点确定一条直线,即 ( x…

谷粒商城实战笔记-144-性能压测-性能监控-堆内存与垃圾回收

文章目录 一,两种类型的应用1,CPU密集型应用示例:Apache Spark 2,IO密集型应用示例:MySQL 二,监控 我们通过压力测试对接口进行了性能评估,以确定其是否满足性能要求。 如果不符合,就…

可视化案例(3)

疫情地图 1.分析数据 通过三方网站等对大量数据进行分析,解析出数据中的key:value解析网站:JSON在线视图查看器(Online JSON Viewer) 2.导包 导入将使用的包和模块 # 导包 import json 3.获取数据 文本数据全部获取 # 读取数据 f ope…

【鸿蒙开发基础学习】TS到ArkTS适配指导

什么是ArkTS ArkTS提供了语言运行时相关能力 ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,保持了TS的基本风格,同时通过规范定义强化开发期静态检查和分析&#xf…

Selenium + Python 自动化测试09(多窗口切换)

我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。 上一篇我们讨论了截图的操作方法,本篇文章我们讲述一下多窗口切换的操作方法。 在实际的测试项目组中我们可能会遇到多窗口的情况,有时候需要在不同窗口…

乡村旅游宣传网站/某城市旅游网站的设计与实现/旅游景点宣传系统

摘要 随着计算机技术,网络技术的迅猛发展,Internet 的不断普及,网络在各个领域里发挥了越来越重要的作用。特别是随着近年人民生活水平不断提高,旅游宣传给用户带来了及大方便。 在经济快速发展的带动下,旅游业的发展也…