当前位置: 首页 > article >正文

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

简介:

在 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.kler.cn/a/159869.html

相关文章:

  • 第16章 SELECT 底层执行原理
  • Linux——简单认识vim、gcc以及make/Makefile
  • Python 实现阿里滑块全攻略
  • hive数据查询语法
  • Logrus入门
  • ‍️代码的华尔兹:在 Makefile 的指尖上舞动自动化的诗篇
  • Photoshop Elements 2023 v21.0(ps简化版)
  • ambari 开启hdfs回收站机制
  • SpringDataRedis 操作 Redis,并指定数据序列化器
  • git 克隆无权限-重新输入账号密码
  • 文献阅读:基于改进ConvNext的玉米叶片病害分类
  • 计算机网络之网络传输,三次握手和四次挥手
  • 结构体精讲1
  • vscode插件离线下载
  • 国产智能运维操作系统新选择-浪潮KeyarchOS
  • DockerCompose修改某个服务的配置(添加或编辑端口号映射)后如何重启单个服务使其生效
  • Selenium 中并行测试的重要性!
  • java面试题-Hashmap、Hashtable、ConcurrentHashMap原理
  • 微信小程序基础bug
  • 学生档案管理系统设计
  • AI界的“复仇者联盟”:Meta和IBM领衔50+机构对决OpenAI
  • 如何关闭vue项目中的[eslint]校验
  • 纠正性反馈回路
  • 上门安装维修平台开发之产品模型属性设计解析
  • 学习UnitTest框架,轻松打造无懈可击的代码!
  • 外包干了2个月,技术倒退2年。。。