JavaScript ES6 Module模块详解

 更新时间:2021年10月24日 17:11:57   作者:daixiangcn  
这篇文章主要介绍了ES6新特性之模块Module用法,简要说明了模块Module的概念、功能并结合实例形式分析了模块Module的使用方法与相关注意事项,需要的朋友可以参考下

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';

总结

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

相关文章

  • 使用JS实现抖音上很火的圣诞树的示例代码

    使用JS实现抖音上很火的圣诞树的示例代码

    圣诞节快到了,经常会在抖音上刷到圣诞树的视频,所以本文小编给大家介绍了如何使用JS实现圣诞树,文章通过代码示例给大家介绍的非常详细,感兴趣的小伙伴跟着小编一起来看看吧
    2023-12-12
  • bootstrap table实现横向合并与纵向合并

    bootstrap table实现横向合并与纵向合并

    这篇文章主要为大家详细介绍了bootstrap table实现横向合并与纵向合并,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 根据后端返回的json数据快速生成ts类型的实现代码

    根据后端返回的json数据快速生成ts类型的实现代码

    在前端开发中,我们通常需要处理来自后端或其他数据源的 JSON 数据,这些数据可能非常复杂,包含不同类型的属性,甚至嵌套对象和数组,为了更好地使用这些数据,我们希望将其转换为TypeScript类型定义,以获得类型检查和代码智能提示的好处
    2023-10-10
  • 手机图片预览插件photoswipe.js使用总结

    手机图片预览插件photoswipe.js使用总结

    这篇文章主要为大家详细总结了手机图片预览插件photoswipe.js使用方法,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • js脚本加载失败问题解决办法

    js脚本加载失败问题解决办法

    在项目中经常会用到动态加载js,下面这篇文章主要给大家介绍了关于js脚本加载失败问题的解决办法,文中通过实例代码介绍的非常详细,对大家学习或者使用js具有一定的参考学习价值,需要的朋友可以参考下
    2023-06-06
  • 关于function类中定义变量this的简单说明

    关于function类中定义变量this的简单说明

    下面小编就为大家带来一篇关于function类中定义变量this的简单说明。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • html dom节点操作(获取/修改/添加或删除)

    html dom节点操作(获取/修改/添加或删除)

    DOM 是关于如何获取、修改、添加或删除 HTML 元素的标准,下面为大家介绍下html dom节点操作,感兴趣的朋友可以参考下
    2014-01-01
  • JavaScript 程序编码规范

    JavaScript 程序编码规范

    这是一套适用于JavaScript程序的编码规范。它基于Sun的Java程序编码规范。但进行了大幅度的修改, 因为JavaScript不是Java。
    2010-11-11
  • Javascript实用方法之json合并的场景分析

    Javascript实用方法之json合并的场景分析

    这篇文章主要介绍了Javascript实用方法之json合并,jQuery 的“extend()”方法有两个原型:合并的方法,分别是浅合并和深度合并,本文通过代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • javascript浏览器用户代理检测脚本实现方法

    javascript浏览器用户代理检测脚本实现方法

    下面小编就为大家带来一篇javascript浏览器用户代理检测脚本实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10

最新评论