快速了解ES6模块化少不了这篇文章

简介: 在之前的JavaScript中是没有模块化概念的,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。如果要进行模块化操作,就需要引入第三方的类库。随着技术的发展,前后端分离,前端的业务变的越来越复杂化,于是才有了ES6模块化的诞生。为什么要有模块化,或者模块化的好处是什么呢?

前言

在之前的JavaScript中是没有模块化概念的,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。如果要进行模块化操作,就需要引入第三方的类库。随着技术的发展,前后端分离,前端的业务变的越来越复杂化,于是才有了ES6模块化的诞生。

为什么要有模块化,或者模块化的好处是什么呢?

大家都遵守同样的模块化规范写代码,降低了沟通的成本,极大方便了各个模块间的相互调用,利人利己。

可以将一段复杂的程序拆解开来,方便维护可拓展。

前端模块化规范

ES6模块化诞生之前,JavaScript社区尝试并提出了AMD、CMD、commonJS等模块化规范。

但是,这些模块化规范,存在一定的差异性与局限性,并不能通用。

例如:

  • AMD和CMD适用于浏览器端的JavaScript模块化
  • commonJS适用于服务器端的JavaScript模块化

    Node.js 就是遵循的这个规范

    导入其它模块使用require()

    导出使用module.exports对象

太多的模块化规范给开发者增加了学习的难度与开发的成本。所以,ES6模块化规范诞生了!

什么是ES6模块化规范

ES6模块化规范是浏览器端与服务端通用的模块化开发规范。它的出现极大的降低了前端开发者的模块化学习成本,开发者不需要在额外学习AMD、CMD或者commonJS等模块化规范。

ES6中模块化规范中定义:

  • 每个js文件都是一个独立的模块
  • 导入其他模块成员使用import关键字
  • 向外共享模块成员使用export关键字

在node.js中体验ES6模块化

node.js中默认仅支持commonJS模块化规范,若想在node中进行体验,要按照如下两步骤进行配置:

  • 确保安装了v14.15.1或者更高版本的node.js

    可以使用在cmd窗口中使用 node -v命令查看当前版本号哦~
  • 在package.json的根节点中添加"type":"module"节点

    不知道如何添加的小伙伴看这里:

    首先我们要在一个空文件夹内,执行npm init -y,这时候我们就能看见已经自动生成了package.json文件了

    完后在vs-code打开,在内添加"type":"module"节点即可

    小提示:type值默认为commonJS,所以我们平时node遵循的模块化规范都是commonJS

ES6模块化的基本语法

ES6的模块化主要包含如下3种用法:

  • 默认导出与默认导入
  • 按需导出与按需导入
  • 直接导入并执行模块中的代码

默认导出

语法:export default 默认导出的成员

let n1 = 10 // 定义模块私有成员 n1
let n2 = 20 // 定义模块私有成员 n2 因为没有共享出去,所以外界访问不到
function show(){  // 定义模块私有方法 show
    
}
export default { // 使用export default 默认导出语法 向外共享n1 和 show 两个成员
    n1,
    show
}

注意事项

  • 每个模块中,只允许用唯一的一次 export default,否则会报错!

默认导入

语法:import接收名称form模块标识符

// 从 m1.js 模块中导入 export default 向外共享的成员
// 并使用 m1 进行接收
import m1 form './m1.js'

console.log(m1)
// 输出为: { n1: 10, show: [Function:show]}

注意事项

  • 默认导入的时候,接收名字可以任意写,注意是合法的成员名称就行。
// m1 合法 不报错
import m1 form './m1.js'
// 成员名称不能用数字开头,所以会直接报错
import 123 form './m1.js'

按需导出

语法:export按需导出的成员

// 向外按需导出变量 s
export let s = 'Ned'
// 向外按需导出方法 show
export function show(){}

按需导入

语法:import {s} from模块标识符

import { s, show } form './m1.js'
console.log(s) // Ned
console.log(show) // [Function: show]

注意事项

  • 每个模块中可以使用多次按需导出
  • 按需导入的成员名称必须跟按需导出的名称一致
  • 按需导入时,可以使用as关键字进行重命名
  • 按需导入可以和默认导入一起使用

重命名:

import { s as str } form './m1.js'

使用as关键字,将s重命名为str,所以接下来我们使用str就好了,不能再使用s这个名字。

按需导入和默认导入一起使用:

import info,{ s as str } form './m1.js'

info就是默认导入,后面带大括号的就是按需导入。

直接导入并执行模块中的代码

如果只想单纯的执行某个模块中的代码,并不需要得到其内部向外共享的成员,可以这样做:

// m1.js:
for(let i = 0; i < 10; i++){
    console.log(i)
}
-------------------------
// 直接导入并执行模块中的代码
import './m1.js'

没错,就是直接导入即可。

最后

这篇文章简单介绍一下模块化的概念和语法,过几天我还会出一篇文章来告诉大家模块化在实际应用里是如何使用的。

在肝了在肝了ing😭

感兴趣的朋友可以留个赞,我们一同进步!

相关文章
|
2月前
|
存储 人工智能 弹性计算
阿里云gpu云服务器收费价格,热门实例简介和最新按量、1个月、1年收费标准参考
在阿里云所有gpu云服务器实例规格中,计算型gn5、gn6i、gn6v、gn7i和最新推出的gn8is、gn8v-tee等实例规格是其中比较热门的gpu云服务器实例。阿里云gpu云服务器最新租用价格参考,适合AI推理/训练的16核60G+1张A10 24G显存(gn7i-c16g1.4xlarge),按量优惠价1.9/小时起。本文为大家展示阿里云gpu云服务器中gn5、gn6i等热门实例规格的主要性能和适用场景以及最新按量和1个月、1年收费标准,以供参考。
|
算法 Linux
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
|
人工智能 API 决策智能
智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
【7月更文挑战第8天】智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
15946 134
智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
|
10月前
|
人工智能 API
MMedAgent:专为医疗领域设计的多模态 AI 智能体,支持医学影像处理、报告生成等多种医疗任务
MMedAgent 是专为医疗领域设计的多模态AI智能体,支持多种医疗任务,包括医学影像处理、报告生成等,性能优于现有开源方法。
529 19
MMedAgent:专为医疗领域设计的多模态 AI 智能体,支持医学影像处理、报告生成等多种医疗任务
|
Kubernetes 应用服务中间件 nginx
史上最全干货!Kubernetes 原理+实战总结(全文6万字,90张图,100个知识点)(上)
史上最全干货!Kubernetes 原理+实战总结(全文6万字,90张图,100个知识点)
52015 30
|
SQL 存储 关系型数据库
(一)全解MySQL之架构篇:自顶向下深入剖析MySQL整体架构!
无论你是前端还是后端,只要是一个合格的开发者,对于MySQL这个名词相信都不陌生,MySQL逐渐成为了最受欢迎的关系型数据库,无论你是大前端,亦或是Java、Go、Python、C/C++、PHP....等这些语言的程序员,对于MySQL是必然要掌握的核心技术之一,程序员不能没有MySQL,就像西方不能失去耶路撒冷一般。
2213 1
|
机器学习/深度学习 人工智能 算法
人工智能在艺术创作中的创新应用:机器创作的未来
【9月更文挑战第25天】 人工智能在艺术创作中的创新应用,不仅为艺术家们提供了全新的创作工具和媒介,更在创作理念、艺术形态等方面带来了深刻的变革。随着技术的不断发展和完善,机器创作将在未来展现出更加广阔的发展前景。我们期待在人工智能的助力下,艺术创作能够迎来更加繁荣和多元的未来。
|
人工智能 自然语言处理 语音技术
操作系统的“AI向”进化是一条必经之路
https://mp.weixin.qq.com/s/JnRgALfdagQBRTtjybOweg。这篇文章讨论了操作系统在人工智能时代的重要性以及统信UOS AI在这一领域的发展和趋势。文章首先提出了操作系统在人与计算机交互中的重要性,然后介绍了UOS AI V1.0和V1.1版本的发布和功能升级,包括对大模型的适配和生态建设。接着,张磊高级副总经理和CTO对未来操作系统需要与AI结合发展的观点进行了阐述,提出了AI助理和自然语言交互等新功能的重要性,并强调了操作系统生态的重要性。
|
应用服务中间件 Linux nginx
nginx + geoip2简明配置
有时候需要nginx结合IP地址库做一些事情,比如过滤掉某个国家的IP,该如何做呢?
|
JavaScript Java 数据库
企业微信接入系列-扫码绑定/登录
讲述在企业后台管理平台账号绑定企业微信以及企业微信扫码登录企业管理平台
企业微信接入系列-扫码绑定/登录
下一篇
开通oss服务