广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript ES6 Module模块详解
  • 592
分享到

JavaScript ES6 Module模块详解

2024-04-02 19:04:59 592人浏览 泡泡鱼
摘要

目录0.什么是Module1.Module 的加载1.1 方式一1.2 方式二2.导出和导入2.1 一个模块的导出可以被其它模块导入,并访问。2.2 没有导出,也可以将其导入2.3

0.什么是Module

历史上,javascript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的require、python 的import,甚至就连 CSS 都有@import,但是 JavaScript 任何这方面的支持都没有,这对开发大型的、复杂的项目形成了巨大障碍。

es6 之前,社区制定了一些模块加载方案,最主要的有 Commonjs 和 AMD 两种。ES6 模块的设计思想是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。ES6 模块不是对象,而是通过export命令显式指定输出的代码,再通过import命令输入。

模块系统主要解决的问题:

  • 模块化的问题
  • 消除全局变量
  • 管理加载顺序

1.Module 的加载

使用 < script >标签加载模块时需要添加 type=“module”。

1.1 方式一


<script type="module">
    import module from "./module.js";
</script>

1.2 方式二


<script src="./module.js" type="module"></script>

2.导出和导入

2.1 一个模块的导出可以被其它模块导入,并访问。

例1:使用About.js调用Base.js内的Base对象,并在首页打印。

index.html


<script type="module">
    import About from "./js/About.js";
    console.log(About);
</script>

Base.js


const Base = {
    nick: 'admin',
    age: 19
}
export default Base;

About.js


import Base from '../js/Base.js';
const src = `nick:${Base.nick},age:${Base.age}.`;
export default src;

输出结果:

nick:admin,age:19.

2.2 没有导出,也可以将其导入

例2:About.js不导出,在首页将其导入。

index.html


<script type="module">
    import "./js/About.js";
</script>

About.js


const src = 'Hello World!';
console.log(src);

输出结果:

Hello World!

2.3 被导入的代码都会执行一遍,也仅会执行一遍

例3:导入3次About.js,观察导出结果。

index.html


<script type="module">
    import "./js/About.js";
    import "./js/About.js";
    import "./js/About.js";
</script>

About.js


const src = 'Hello World!';
console.log(src);

输出结果:


Hello World!

3.export default 和对应的 import

export default 用于导出一个默认值,一个模块只能有一个。

使用 export default 进行导出时,import 的名字可以随意起。

例4:使用 export default 进行导出,import 的名字随意起。

index.html


<script type="module">
    import bbb from "./js/About.js";
    console.log(bbb);
</script>

About.js


const src = 'Hello World!';
export default src;

输出结果:

Hello World!

4.export 和对应的 import

使用 export 进行导出时,import 的名字不能随意起。

例5:使用 export 进行导出。

index.html


<script type="module">
    import { age, nick } from "./js/About.js";
    console.log(nick, age);
</script>

About.js


const age = 18;
export {age};
// export age; ×
// export const age = 18; √
export const nick = 'admin';

输出结果:

admin 18

5.Module 的注意事项

1.模块中,顶层的 this 指向 undefined;

2import 具有提升效果,会提升到整个模块的头部,率先执行;

3.import 执行的时候,代码还没执行;

4.import 和 export 只能在模块的顶层,不能在代码块中执行;

5.import() 可以按条件导入;

6.复合写法导出的,无法在当前模块中使用

复合写法,导入后导出:


export About from './js/About.js';

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: JavaScript ES6 Module模块详解

本文链接: https://www.lsjlt.com/news/155300.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript ES6 Module模块详解
    目录0.什么是Module1.Module 的加载1.1 方式一1.2 方式二2.导出和导入2.1 一个模块的导出可以被其它模块导入,并访问。2.2 没有导出,也可以将其导入2.3 ...
    99+
    2022-11-12
  • Python--模块(Module)和包(Package)详解
    目录一、模块的导入1.什么是模块(module)2.模块有什么作用3.模块的分类4.什么是包(package)5.import/fromimport导入 6.使用名字导入7.制作包与...
    99+
    2022-11-12
  • 详解Python语法之模块Module
    目录一、定义二、作用三、导入1.import导入import 模块名from importfrom 模块名 import *总结一、定义 包含一系列数据,函数,类的文件,通常以....
    99+
    2022-11-12
  • 详解Node.js如何处理ES6模块
    目录一、两种模块的差异二、Node.js 的区分三、CommonJS 模块加载 ES6 模块四、ES6 模块加载 CommonJS 模块五、同时支持两种格式的模块一、两种模块的差异 ...
    99+
    2022-11-12
  • 一文详解es6中的模块化
    Es Module 的解析流程在开始之前,我们先大概了解一下整个流程大概是怎么样的,先有一个大概的了解:阶段一:构建(Construction),根据地址查找 js 文件,通过网络下载,并且解析模块文件为 Module Record;阶段二...
    99+
    2022-11-22
    ES6 前端 JavaScript 面试
  • JavaScript 模块化详解
    目录前言:1.概念2.模块化的好处3.引入多个script标签后出现的问题一、CommonJS二、AMD三、CMD四、ES6模块化前言: 1.概念 将一个复杂的程序依据一...
    99+
    2022-11-12
  • Javascript Constructor构造器模式与Module模块模式
    目录前言1.Constructor构造器模式1.1基础Constructor构造器模式1.2进阶 带原型的Constructor构造器模型2. Module 模块模式2.1对象字面量...
    99+
    2022-11-13
  • 如何解析es6模块
    这篇文章主要为大家分析了如何解析es6模块的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“如何解析es6模块”的知识吧。ES6就是ECMAScript的第6个...
    99+
    2023-06-28
  • Node.JS中的模块、exports和module讲解
    目录模块核心模块文件模块基本数据类型引用数据类型exports和module.exports的关系模块 分为两大类 核心模块 由node引擎提供的模块核心模块的标识就是模块的名字 v...
    99+
    2023-01-11
    node.js模块 exports和module node.js exports和module
  • python缺少module模块如何解决
    当Python提示缺少模块时,可以尝试以下几种解决方案:1. 安装缺少的模块:使用pip命令安装缺少的模块。例如,如果缺少numpy...
    99+
    2023-09-15
    python
  • Javascript模块导入导出详解
    笔者开始学习Javascript的时候,对模块不太懂,不知道怎么导入模块,导出模块,就胡乱一通试 比如 import xx from 'test.js'&n...
    99+
    2022-12-25
    JavaScript 模块导入导出 js模块导入/导出 如何在JavaScript中导入导出模块
  • JavaScript ES6模块怎么导入和导出
    本篇内容介绍了“JavaScript ES6模块怎么导入和导出”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言:ES6模块化导入...
    99+
    2023-07-02
  • JavaScript ES6模块导入和导出的方法
    目录前言:1.默认导入导出2.按需导入导出第一种情况,age is not defined第二种情况,sex is not defined 3.默认导出和整体导出一起使用总...
    99+
    2022-11-13
  • argparse模块详解
    目录1. argparse 模块简介2. 未使用argparse示例3. 使用argparse示例3.1 argparse简单示例3.2 argparse进阶示例3.2.1 可选参数...
    99+
    2023-02-27
    argparse 模块 python argparse 模块
  • Python语法中的Module模块该如何理解
    Python语法中的Module模块该如何理解,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、定义包含一系列数据,函数,类的文件,通常以.py结尾二、作用让一些相关的数据,函...
    99+
    2023-06-22
  • Burpsuite模块之Burpsuite Intruder模块详解
    目录一、简介二、模块说明Burp Suite Intruder的4种攻击类型一 Sniper(狙击手模式)二Battering ram(攻城锤模式)三Pitchfork(草叉模式)四...
    99+
    2022-11-12
  • Nginx监控模块(vts模块)详解
    目录Nginx 监控模块(vts模块)1、上传nginx-module-vts-master软件包并解压2、安装Nginx依赖环境3、优化路径及编译安装nginx4、备份nginx的...
    99+
    2022-11-13
  • JavaScript面试Module Federation实现原理详解
    目录基本概念1、什么是 Module Federation?2、Module Federation核心概念3、使用案例4、插件配置工作原理1、使用MF后在构建上有什么不同?2、如何加...
    99+
    2022-11-13
  • python—xlwt模块详解
    一、前言 xlwt模块是python中专门用于写入Excel的拓展模块,可以实现创建表单、写入指定单元格、指定单元格样式等人工实现的功能,一句话就是人使用excel实现的功能,这个扩展包都可以实现。 ...
    99+
    2023-09-04
    python excel 自动化办公 xlwt
  • python—requests模块详解
    一、前言 1、requests简介 requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到,它是python语言的第三方的库,专门用于发送HTTP请求,使用...
    99+
    2023-09-04
    python 开发语言 requests 网络爬虫
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作