js模块化的应用!!!(前无古人,后无来者)

news2025/1/24 22:37:43

简介:

在 ES6 前, 实现模块化使用的是 RequireJS 或者 seaJS(分别是基于 AMD 规范的模块化库,  和基于 CMD 规范的模块化库)。

ES6 引入了模块化,其设计思想是在编译时就能确定模块的依赖关系,以及输入和输出的变量。

ES6 的模块化分为导出(export) @与导入(import)两个模块。

 特点:

ES6 的模块自动开启严格模式,不管你有没有在模块头部加上 use strict;。

模块中可以导入和导出各种类型的变量,如函数,对象,字符串,数字,布尔值,类等。

每个模块都有自己的上下文,每一个模块内声明的变量都是局部变量,不会污染全局作用域。

每一个模块只加载一次(是单例的), 若再去加载同目录下同文件,直接从内存中读取。

 export 与 import的使用:

模块导入导出各种类型的变量,如字符串,数值,函数,类。

  • 导出的函数声明与类声明必须要有名称(export default 命令另外考虑)。 
  • 不仅能导出声明还能导出引用(例如函数)。
  • export 命令可以出现在模块的任何位置,但必需处于模块顶层。
  • import 命令会提升到整个模块的头部,首先执行。

 第一步:创建一个js文件(这里涉及到export default 导出,后续会讲解),并将变量和函数导出

// 在js中,模块化是将公共的代码,单独封装到一个js文件中,通过export或者export default将文件内容导出,供其他文件使用,这也难怪的一个js就成为一个模板
const a1 = 100;
const a2 = 200;
const sum = (a, b) => {
  return a + b;
};

// 按需导出,必须使用{}导出
export { a1, a2, sum };

// 默认导出,一般一个模块只有一个export default,如果存在多个export default,只保留最后一个导出。
export default sum;
// export default a ;

2.导入变量和函数

import sumFun from "./http.js";
console.log("导入的函数和为:",sumFun(19, 20));

// 这是一个新的js文件,作为实例,实际开发中会将需要的函数导入到需要的文件中

3.在html中引用js文件(注意引入的是2.导入变量和函数这个js文件)

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
   //注意这里在导入的时候要写:type="module"
    <script type="module" src="./27.对象解构赋值.js"></script>

  </body>
</html>

4.看效果:

 注意事项:

export 命令导出的接口名称,须和模块内部的变量有一一对应关系。(简单来说就是,你导出的变量名必须是你定义过的,不能异想天开)

/*-----export [test.js]-----*/
let myName = "Tom";
export { myName as exportName }
 
/*-----import [xxx.js]-----*/
import { exportName } from "./test.js";
console.log(exportName);// Tom

导入的变量名,须和导出的接口名称相同,即顺序可以不一致。

不同模块导出接口名称命名重复, 使用 as 重新定义变量名。

import { a1 as aa, b1 as bb } from "./http.js"; // 使用as起别名
import * as http from "./http.js"; // 通过*一次导入所有模块内容, 为了方便使用通过as起别名

在一个文件或模块中,export、import 可以有多个,export default 仅有一个

通过 export 方式导出,在导入时要加{ },export default 则不需要。

export default 向外暴露的成员,可以使用任意变量来接收。

 通过*一次导入所有模块内容, 为了方便使用通过as起别名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1289579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ArcGIS微课1000例】0078:创建点、线、面数据的最小几何边界

本实例为专栏系统文章:讲述在ArcMap10.6中创建点数据最小几何边界(范围),配套案例数据,持续同步更新! 文章目录 一、工具介绍二、实战演练三、注意事项一、工具介绍 创建包含若干面的要素类,用以表示封闭单个输入要素或成组的输入要素指定的最小边界几何。 工具位于:数…

【数据结构】——二叉树简答题模板

目录 一、树和二叉树的概念&#xff08;一&#xff09;二叉树的定义和性质&#xff08;二&#xff09;树和二叉树的区别 二、完全二叉树和满二叉树三、二叉树的遍历&#xff08;一&#xff09;由序列确定二叉树&#xff08;二&#xff09;不同遍历序列的关系 四、二叉树的性质&…

气膜厂家怎样确保产品质量和售后服务?

气膜厂家作为一家专业生产气膜产品的企业&#xff0c;确保产品质量和提供良好的售后服务是我们的责任和使命。为了确保产品质量和售后服务的可靠性&#xff0c;我们采取了以下措施。 起初&#xff0c;我们严格按照国家标准和相关行业规范进行生产。气膜产品的质量是产品能否长…

【eNSP实践】eNSP实战篇(3)之路由器、交换机、主机模拟企业网络场景(图文详解)

目录 写在前面涉及知识1、前情提要2、实践操作2.1 eNSP搭建虚拟环境2.2 建立设备连线2.3 统计IP并标注2.4 配置主机IP及启动设备 3、命令行配置3.1 启动所有设备3.2 执行命令添加端口及网关 4、实验总结写在最后 写在前面 其实我之前写了3篇文章都是针对eNSP的基础配置&#x…

深度学习猫狗分类 - python opencv cnn 计算机竞赛

文章目录 0 前言1 课题背景2 使用CNN进行猫狗分类3 数据集处理4 神经网络的编写5 Tensorflow计算图的构建6 模型的训练和测试7 预测效果8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习猫狗分类 ** 该项目较为新颖&a…

Notes数据结合报表工具Tableau

大家好&#xff0c;才是真的好。 我希望你看过前面两篇内容《Domino REST API安装和运行》和《Domino REST API安装和运行》&#xff0c;更希望你能看过《Notes数据直接在Excel中统计&#xff01;》&#xff0c;有了这些内容作为基础&#xff0c;今天的内容就显得特别简单。 …

虹科新闻丨虹科正式加入广州市新联会科创分会

来源&#xff1a;虹科电子科技有限公司 虹科新闻丨虹科正式加入广州市新联会科创分会 11月7日&#xff0c;由广州市委统战部、广州开发区管委会、黄埔区人民政府指导&#xff0c;佳都集团、佳都科技集团、广州开发区投资集团共同主办的未来之城大湾区元宇宙创新示范中心&#…

D. Jumping Through Segments

显然是一个二分答案&#xff0c;关键是怎么搞判断函数&#xff1f; 我们维护合法的降落区间就好了~ // Problem: D. Jumping Through Segments // Contest: Codeforces - Codeforces Round 913 (Div. 3) // URL: https://codeforces.com/contest/1907/problem/D // Memory Li…

2023五岳杯量子计算挑战赛APMCM亚太地区

问题一要求在特定区域内部署两个边缘服务器&#xff0c;以便根据计算需求分布覆盖最大的计算需求。每个边缘服务器都有一个覆盖半径为1。目标是确定两个边缘服务器的位置&#xff0c;以覆盖最大的计算需求。假设边缘服务器的位置位于网格的中心&#xff0c;每个网格内的计算需求…

最小生成树算法与二分图算法

文章目录 概述 P r i m Prim Prim 算法 - 稠密图 - O ( n 2 ) O(n^2) O(n2)思路概述时间复杂度分析AcWing 858. Prim算法求最小生成树CODE K r u s k a l Kruskal Kruskal 算法 - 稀疏图 - O ( m l o g m ) O(mlogm) O(mlogm)思路解析时间复杂度分析AcWing 859. Kruskal算法求…

JDBC增删查改操作-jsp实验-实现页面跳转

实验 JDBC增删查改操作 一、实验目的 1、掌握JDBC增删查改MySQL或者sql server数据库表的方法。 2、在增删查改页面间跳转 二、实验内容 在MySQL或者sql server中创建一张表&#xff0c;之后使用JDBC进行增删查改。&#xff08;功能不限&#xff09;&#xff0c;包括&#xff1…

Java多线程万字详解(基础概念、多线程实现方式、锁、消费者机制、线程池)

1 、基础概念解释 1.1线程与进程 线程&#xff1a;是操作系统能够进行运算调度的最小单位。它被包含在进程当中&#xff0c;是进程中的实际运作单位。 进程&#xff1a;是程序的基本执行实体。一个进程中至少有一个线程。一个进程中是可以有多个线程的。如QQ&#xff0c;微信那…

并发编程(已整理,已废弃)

这一块知识&#xff0c;那真是有的啃了。 直接先看速成基础&#xff0c;再直接吃掉高频考点。 每个小知识点&#xff0c;直接看短视频&#xff0c;浅浅了解&#xff0c;在写下来就是自己的资料。 # 基础 一个进程有多个线程&#xff0c;多个线程共享进程的堆和方法区&#xf…

Linux环境变量与命令行参数

Linux环境变量与命令行参数 一.命令行参数1.语法2.应用1:简易计算器 二.环境变量1.环境变量的概念2.环境变量的作用3.进一步理解环境变量的作用4.常见环境变量5.导出环境变量(添加环境变量)6.环境变量的特性7.另一种获取环境变量的方式8.小功能:用于身份验证的代码9.补充:第三种…

​DeepMind:开发出可以向人类学习的人工智能

Nature发表了一篇Google DeepMind的研究成果&#xff1a;研究人员在3D模拟环境中使用神经网络和强化学习&#xff0c;展示了AI智能体如何在没有直接从人类那里获取数据的情况下&#xff0c;通过观察来学习和模仿人类的行为。 这项研究被视为向人工通用智能&#xff08;AGI&…

ssm土家风景文化管理平台源码和论文答辩PPT

摘要 土家风景文化管理平台是土家风景文化管理必不可少的一个部分。在风景文化管理的整个过程中&#xff0c;平台担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类土家风景文化管理平台也在不断改进。本课题所设计的土家风景文化管理平台&#xff0c;使用jav…

SAP MM中的科目分配类别是什么,如何配置

一、概述 这篇文章将概述 SAP MM 中的科目分配类别的基本概念以及如何在系统中配置它。我将在SAP配置中逐步解释配置。在此之前要理解采购的两种模式&#xff0c;库存物料采购和消耗型物料采购之间的区别。 1.1、库存采购 库存采购的物料&#xff0c;在收货后做库存管理&…

python创建子进程执行ping命令无法检测到超时情况(破案了:ping命令-W参数单位为s,我写了个1000)

文章目录 问题描述破案了&#xff1a;ping命令-W参数单位为s&#xff0c;我写了个1000。。。,,ԾㅂԾ,, 问题描述 我用了创建子进程的方式去执行ping&#xff0c;一开始用os.system()&#xff0c;有问题&#xff0c;后面用subprocess问题还是存在&#xff0c;后来我把这个改了&…

Python BeautifulSoup 选择器无法找到对应元素(异步加载导致)

文章目录 问题原因解决方案找到包含内容的 XHR 异步请求无头浏览器 个人简介 问题 使用 Python BeautifulSoup 爬取一个股吧帖子发现某个样式无法找到&#xff0c;但是在网页中确实存在这个元素&#xff1a;网页使用 document.querySelector 可以正常查找&#xff1a; 但是 Py…

javascript实现List列表数据结构

书籍推荐 有幸拜读《数据结构与算法Javascript描述》这本书&#xff0c;先强烈安利一波&#xff01;非常感谢作者大大给我们前端领域带来这本书。 全书从javascript的角度出发&#xff0c;简单明了的分析了数据结构在javascript领域的实现过程与实际的应用案例&#xff0c;且…