iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >ES6基础语法之模块化怎么实现
  • 898
分享到

ES6基础语法之模块化怎么实现

2023-06-30 11:06:28 898人浏览 泡泡鱼
摘要

本篇内容介绍了“es6基础语法之模块化怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ES6 引入了模块化, ES6 的模块化分为导出

本篇内容介绍了“es6基础语法之模块化怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

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

ES6模块化特点:

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

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

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

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

一、export与import基本使用

export 命令用于导出, import 命令 用于导入:

module1.js

// export let name = "孙悟空";// export let sex = "男";//或let name = "孙悟空";let sex = "男";export {name,sex};

test1.js

// import { name,sex } from "../export/module1.js";// console.log(name); //孙悟空// console.log(sex);  //男//或导入部分变量import { sex } from "../export/module1.js";console.log(sex);  //男

Demo01.html

<!--     module1.js:模块代码,通过export暴露变量    test1.js:导入module1.js提供的变量    Demo01.html:引入test1.js内容--><script type="module" src="import/test1.js"></script>

二、网页中直接import模块

module1.js

// export let name = "孙悟空";// export let sex = "男";//或let name = "孙悟空";let sex = "男";export {name,sex};

HTML:

<!DOCTYPE html><html><head><meta charset="utf-8"><title>网页中import模块</title></head><body><h2>姓名:<span id="spanName"></span></h2><h2>性别:<span id="spanSex"></span></h2></body></html><!--  module1.js:模块代码,通过export暴露变量 Demo02.html:导入module1.js提供的变量 --><script type="module">import {name,sex} from "./export/module1.js";document.getElementById("spanName").innerHTML = name;document.getElementById("spanSex").innerHTML = sex;</script>

三、as的使用

(1)as在export中的用法:变量使用别名,隐藏模块内部的变量

module2.js:

let name = "孙悟空";let sex = "男";export {name as expName,sex as expSex};

HTML:

<!DOCTYPE html><html><head><meta charset="utf-8"><title>as在export中的用法</title></head><body><h2>姓名:<span id="spanName"></span></h2><h2>性别:<span id="spanSex"></span></h2></body></html><!--  module2.js:模块代码,通过export暴露变量(变量使用别名,隐藏模块内部的变量) Demo03.html:导入module2.js提供的变量 --><script type="module">import {expName,expSex} from "./export/module2.js";document.getElementById("spanName").innerHTML = expName;document.getElementById("spanSex").innerHTML = expSex;</script>

(2)as在import中的用法:导入多个模块的变量,使用as解决命名冲突。

module1.js

// export let name = "孙悟空";// export let sex = "男";//或let name = "孙悟空";let sex = "男";export {name,sex};

module3.js

// export let name = "孙悟空";// export let sex = "男";//或let name = "猪八戒";let sex = "男";export {name,sex};

HTML:

<!DOCTYPE html><html><head><meta charset="utf-8"><title>as在import中的用法</title></head><body><h2>姓名:<span id="spanName1"></span></h2><h2>性别:<span id="spanSex1"></span></h2><hr /><h2>姓名:<span id="spanName2"></span></h2><h2>性别:<span id="spanSex2"></span></h2></body></html><!--  module1.js:模块代码(暴露name,sex) module3.js:模块代码(暴露name,sex) Demo04.html:导入两个模块的变量,使用as解决命名冲突 --><script type="module">import {name as name1,sex as sex1} from "./export/module1.js";import {name as name2,sex as sex2} from "./export/module3.js";document.getElementById("spanName1").innerHTML = name1;document.getElementById("spanSex1").innerHTML = sex1;document.getElementById("spanName2").innerHTML = name2;document.getElementById("spanSex2").innerHTML = sex2;</script>

四、导入模块中的函数和类

(1)导入模块中的函数

module4.js

// function Add(...items)// {// let sum = 0;// for(let item of items)// {// sum += item;// }// return sum;// }// export{Add};//或export function Add(...items){let sum = 0;for(let item of items){sum += item;}return sum;};

HTML

<script type="module">//导入函数import {Add} from './export/module4.js';let result = Add(1,2,3,4,5);console.log(result); //15</script>

(2)导入模块中的类:

module4.js

// class Student// {// constructor(stuno,stuname) // {// this.stuno = stuno;// this.stuname = stuname;// }// sayHi()// {// console.log("大家好,我是"+this.stuname+",我的学号是"+this.stuno);// }// }// export {Student};//或export class Student{constructor(stuno,stuname) {this.stuno = stuno;this.stuname = stuname;}sayHi(){console.log("大家好,我是"+this.stuname+",我的学号是"+this.stuno);}}

HTML

<script type="module">//导入类import {Student} from './export/module4.js';let stu = new Student("001","孙悟空");stu.sayHi();</script>

五、import的特点

module5.js

let name = "孙悟空";let sex = "男";let emp = {name:"孙悟空",sex:"男"};export {name,sex,emp};

HTML

<script type="module">//只读特点//import {name,sex,emp} from './export/module5.js';//(1)普通类型的值不能改变// name = "猪八戒"; //报错// sex = "男";//报错//(2)不能直接改变对象//emp = {name:"猪八戒",sex:"男"};//(3)可以改变变量的属性值// emp.name = "猪八戒";// emp.sex = "男";//单例特点//(1)下面两句import只会执行一次//import {name,sex,emp} from './export/module5.js';//import {name,sex,emp} from './export/module5.js';//(2)下面两句import相当于 import {name,sex} from './export/module5.js';// import {name} from './export/module5.js';// import {sex} from './export/module5.js';//静态特点//(1)不支持表达式//import {"na"+"me"} from './export/module5.js'; //报错//(2)不支持动态导入,以下代码也会报错// if(true)// import {name,sex} from './export/module5.js';// else// import {emp} from './export/module5.js';</script>

六、模块的整体import加载

module5.js

let name = "孙悟空";let sex = "男";let emp = {name:"孙悟空",sex:"男"};export {name,sex,emp};

HTML

<script type="module">//加载module5中所有暴露出来的内容import * as test from './export/module5.js';console.log(test.name);console.log(test.emp.name);</script>

七、export default命令

使用import命令的时候,用户需要知道所要加载的变量名或函数名,否则无法加载,export default 向外暴露的

成员,可以使用任意变量来接收,解决上述问题。

export default 命令特点:

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

(2)export default 中的 default 是对应的导出接口变量。

(3)导入导出不需要{}符号。

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

(1)export default导出变量

module6.js

//export default导出变量不需要var//export var a = 10; // 正确// 正确var a = 10;export default a;// 错误//export default var a = 10;

HTML

<script type="module">//接受默认变量import b from './export/module6.js'; //此处可以用任意变量(b)来接受console.log(b);</script>

(2)export default导出函数

module6.js

function Add(...items){let sum = 0;for(let item of items){sum += item;}return sum;}//此处Add不需要{}export default Add

HTML

<script type="module">//接受默认函数import sum from './export/module6.js'; //此处可以用任意变量(sum)来接受let result = sum(1,2,3,4,5);console.log(result);</script>

八、export与import的复合写法

export 与 import 可以在同一模块使用,我们称为复合使用。

(1)复合使用的基本语法

module1.js

// export let name = "孙悟空";// export let sex = "男";//或let name = "孙悟空";let sex = "男";export {name,sex};

module7.js

//复合使用的语法let emp = {name:"猪八戒",sex:"男"};export { name, sex } from './module1.js';// //上面的export等于如下:// // import { name, sex } from './module1.js';// // export { name, sex };export {emp}

HTML

<script type="module">//导入module7,在module7中导出module1内容import {name,sex,emp} from "./export/module7.js";console.log(name);console.log(emp.name);</script>

(2)复合写法实现接口改名

module1.js

// export let name = "孙悟空";// export let sex = "男";//或let name = "孙悟空";let sex = "男";export {name,sex};

module7.js

//复合写法实现接口改名let emp = {name:"猪八戒",sex:"男"};export { name as myname, sex as mysex } from './module1.js';export {emp}

HTML

<script type="module">//导入改名后的变量// import {myname,mysex,emp} from "./export/module7.js";// console.log(myname);// console.log(emp.name);</script>

(3)转换为默认接口

module1.js

// export let name = "孙悟空";// export let sex = "男";//或let name = "孙悟空";let sex = "男";export {name,sex};

module7.js

// 转换为默认接口let emp = {name:"猪八戒",sex:"男"};export {name as default,sex} from './module1.js';export {emp}

HTML

<script type="module">//导入修改成默认接口的name,使用abc接收import abc from "./export/module7.js";import {sex,emp} from "./export/module7.js";console.log(abc);console.log(emp.name);</script>

(4)默认接口转换为命名接口

module6.js

function Add(...items){let sum = 0;for(let item of items){sum += item;}return sum;}//此处Add不需要{}export default Add

module7.js

//将默认接口转换为命名接口export {default as sum} from './module6.js';

HTML

<script type="module">//导入默认接口转换成的sum接口import {sum} from "./export/module7.js";let result = sum(1,2,3,4,5);console.log(result);</script>

(5)导出所有接口

module1.js

// export let name = "孙悟空";// export let sex = "男";//或let name = "孙悟空";let sex = "男";export {name,sex};

module7.js

//导出所有export * from './module1.js'

HTML

<script type="module">//接收导出的所有接口import {name,sex} from "./export/module7.js";console.log(name);console.log(sex);</script>

“ES6基础语法之模块化怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: ES6基础语法之模块化怎么实现

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

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

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

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

下载Word文档
猜你喜欢
  • ES6基础语法之模块化怎么实现
    本篇内容介绍了“ES6基础语法之模块化怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ES6 引入了模块化, ES6 的模块化分为导出...
    99+
    2023-06-30
  • ES6基础语法之模块化介绍
    ES6 引入了模块化, ES6 的模块化分为导出(export) @与导入(import)两个模块。 ES6模块化特点: (1)ES6 的模块自动开启严格模式,不管你有没有在模块头部...
    99+
    2024-04-02
  • ES6基础语法之class类怎么用
    这篇文章主要介绍了ES6基础语法之class类怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ES6基础语法之class类怎么用文章都会有所收获,下面我们一起来看看吧。一、class基本语法JavaScri...
    99+
    2023-06-30
  • ES6基础语法之函数怎么使用
    这篇“ES6基础语法之函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ES6基础语法之函数怎么使用”文章吧。一、函...
    99+
    2023-06-30
  • ES6基础语法之对象介绍
    一、对象和属性和方法 JavaScript中对象: var person={name:"Jack",age:20}; 或: var name = "jack"; var age = ...
    99+
    2024-04-02
  • ES6基础语法之函数介绍
    一、函数参数的扩展 ES6支持参数的默认值: function fn(name,age,sex="男") { console.log(`大家好,我是${name},性别${sex}...
    99+
    2024-04-02
  • ES6基础语法之数组拓展
    一、Array.of() 将参数中所有值作为元素形成数组: console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4] 参数的值可以为不同的...
    99+
    2024-04-02
  • ES6基础语法之class类介绍
    一、class基本语法 JavaScript 语言中,编写一个学生类,代码如下:(prototype可以个对象添加属性和方法) function Student(stuno,stun...
    99+
    2024-04-02
  • ES6基础语法之Map和Set对象怎么用
    本篇内容主要讲解“ES6基础语法之Map和Set对象怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ES6基础语法之Map和Set对象怎么用”吧!一、Map对象Map 对象保存键值对。任何值...
    99+
    2023-06-30
  • Python基础之模块怎么使用
    这篇文章主要介绍“Python基础之模块怎么使用”,在日常操作中,相信很多人在Python基础之模块怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python基础之模块怎么使用”的疑惑有所帮助!接下来...
    99+
    2023-07-06
  • ES6基础语法之字符串扩展
    一、字符串的遍历 JS中遍历字符串: var str = "hello,world"; for(var i = 0;i<str.length;i++) { console.l...
    99+
    2024-04-02
  • ES6基础语法之Map和Set对象
    一、Map对象 Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。 Map中的键值是有序的。 let myMap = new Map(); myMap.se...
    99+
    2024-04-02
  • ES6基础语法之数组的使用实例分析
    这篇文章主要介绍了ES6基础语法之数组的使用实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ES6基础语法之数组的使用实例分析文章都会有所收获,下面我们一起来看看吧。一、Array.of()将参数中所有值...
    99+
    2023-06-30
  • ES6基础语法之字符串扩展的方法
    这篇文章主要介绍“ES6基础语法之字符串扩展的方法”,在日常操作中,相信很多人在ES6基础语法之字符串扩展的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ES6基础语法之字符串扩展的方法”的疑惑有所帮助!...
    99+
    2023-06-30
  • python标准库模块之json库的基础用法
    目录前言作用loads,load的用法dumps,dump的用法结语前言 json,全称为JavaScript Object Notation,也就是JavaScript对象标记,通...
    99+
    2024-04-02
  • Node.js基础入门之使用方式及模块化详解
    目录什么是Node.js Node.js下载 Node.js和JavaScript的区别Node.js安装与验证 Node.js使用方式1. REPL模式2. 文...
    99+
    2024-04-02
  • JavaScript基础之语法实例分析
    这篇文章主要介绍“JavaScript基础之语法实例分析”,在日常操作中,相信很多人在JavaScript基础之语法实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ja...
    99+
    2024-04-02
  • Vuex模块化进阶指南:从零基础到专家之路
    Vuex模块化概述 Vuex模块化是一种将Vuex状态按照不同的功能或业务域进行拆分和组织的方式。这可以使Vuex状态更加清晰、易于理解和管理。同时,模块化还可以提高代码的可复用性,并有助于构建更复杂和可扩展的Vuex应用。 Vuex模...
    99+
    2024-02-08
    Vuex 模块化 状态管理 数据共享 代码复用
  • webpack之基础打包优化的实现
    目录前言优化loader压缩代码gzip压缩抽离公共依赖包最后前言 webpack至今已经发展了5个版本,如果你还不会webpack,那么赶紧学习起来吧。webpack是web前端开...
    99+
    2024-04-02
  • Vue基础之MVVM,模板语法和数据绑定
    目录1. Vue概述Vue官网MVVM架构模式Vue简介2. 初识Vue3. 模板语法 1、插值语法:2、指令语法:4. 数据绑定5. el与data的两种写法1、el有2种写法ne...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作