ES6模块化学习

1. 回顾:node.js 中如何实现模块化

node.js 遵循了 CommonJS 的模块化规范。其中:
        导入其它模块使用 require() 方法
        模块对外共享成员使用 module.exports 对象

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

2. 前端模块化规范的分类

在 ES6 模块化规范诞生之前,JavaScript 社区已经尝试并提出了 AMD、CMD、CommonJS 等模块化规范。
但是,这些由社区提出的模块化标准,还是存在一定的差异性与局限性、并不是浏览器与服务器通用的模块化标准,例如:
        AMD 和 CMD 适用于浏览器端的 Javascript 模块化
        CommonJS 适用于服务器端的 Javascript 模块化

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

3. 什么是 ES6 模块化规范

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

ES6 模块化规范中定义:
        每个 js 文件都是一个独立的模块 
        导入其它模块成员使用 import 关键字  
        向外共享模块成员使用 export 关键字

4. 在 node.js 中体验 ES6 模块化

node.js 中默认仅支持 CommonJS 模块化规范,若想基于 node.js 体验与学习 ES6 的模块化语法,可以按照如下两个步骤进行配置:
        ①确保安装了 v14.15.1 或更高版本的 node.js (node -v 查看node版本)
        ②在 package.json 的根节点中添加
"type": "module" 节点npm init -y 初始化包管理配置文件,注意:初始化包管理配置文件的时候,文件名不能是中文

5. ES6 模块化的基本语法

ES6 的模块化主要包含如下 3 种用法:
        ①默认导出与默认导入
        ②按需导出与按需导入
        ③直接导入并执行模块中的代码

5.1 默认导出与默认导入

①默认导出

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

 默认导出的注意事项每个模块中,只允许使用唯一的一次 export default,否则会报错!

②默认导入

        默认导入的语法: import 接收名称 from '模块标识符'

默认导入的注意事项:默认导入时的接收名称可以任意名称,只要是合法的成员名称即可:


③按需导出

        按需导出的语法: export 按需导出的成员

④按需导入

        按需导入的语法: import { s1 } from '模块标识符'


按需导出与按需导入的注意事项:
        每个模块中可以使用多次按需导出 
        按需导入的成员名称必须和按需导出的名称保持一致 
        按需导入时,可以使用 as 关键字进行重命名 
        按需导入可以和默认导入一起使用

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

如果只想单纯地执行某个模块中的代码,并不需要得到模块中向外共享的成员。此时,可以直接导入并执行模块代码,示例代码如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

水利水库大坝结构安全自动化监测主要测哪些内容?

在大坝安全自动化监测系统建设中,应根据坝型、坝体结构和地质条件等因素选定监测项目;主要监测对象包括坝体、坝基及有关的各种主要水工建筑物、大坝附近的不稳定岸坡和大坝周边的气象环境。深圳安锐科技建议参考下列表格适当调整。 (一&am…

计算机网络(2

计算机网络续 一. 网络编程 网络编程, 指网络上的主机, 通过不同的进程, 以编程的方式实现网络通信(或网络数据传输). 即便是同一个主机, 只要不同进程, 基于网络来传输数据, 也属于网络编程. 二. 网络编程套接字(socket) socket: 操作系统提供的网络编程的 API 称作 “soc…

(0)2024年基于财务的数据科学项目Python编程基础(Jupyter Notebooks)

目录 前言学习目标:学习内容:大纲 前言 随着数据科学的迅猛发展,其在财务领域的应用也日益广泛。财务数据的分析和预测对于企业的决策过程至关重要。 本专栏旨在通过Jupyter Notebooks这一强大的交互式计算工具,介绍基于财务的数…

Day05-组织架构-角色管理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.组织架构-编辑部门-弹出层获取数据2.组织架构-编辑部门-编辑表单校验3.组织架构-编辑部门-确认取消4.组织架构-删除部门5.角色管理-搭建页面结构6.角色管理-获取数…

MySQL中的DDL语句

第一题 输入密码登录mysql,创建数据库zoo,转换到zoo数据库, mysql> create database zoo character set gbk; mysql> use zoo查看创建数据库zoo信息 mysql> show create database zoo;删除数据库zoo mysql> drop database zo…

【后端面试题】【中间件】【NoSQL】MongoDB查询优化2(优化排序、mongos优化)

优化排序 在MongoDB里面,如果能够利用索引来排序的话,直接按照索引顺序加载数据就可以了。如果不能利用索引来排序的话,就必须在加载了数据之后,再次进行排序,也就是进行内存排序。 可想而知,如果内存排序…

2024暑假集训第三次考试

3004. Sleepy Cow Sorting 思路分析 这道题是一道思维题。 这个就要结合之前学习过的算法,看这个题目的排序方式,我们就理所当然的想到了插入排序,也是这道题的正解。只需要看看前面有几个数是无序的就是需要排的次数。转换一下,也…

【CUDA】 矩阵乘法 matMatMul

矩阵乘法 matMatMul 矩阵乘法是基本线性代数子程序(BLAS)的重要组成部分,而且线性代数中许多其他操作以此为基础。 图1是两个矩阵的乘法。 基础方法,正方形tile和长方形tile 基础方法 执行矩阵乘法的基础方法是使用单个线程执…

传统视觉Transformer的替代者:交叉注意力Transformer(CAT)

传统视觉Transformer的替代者:交叉注意力Transformer(CAT) 在深度学习的世界里,Transformer架构以其在自然语言处理(NLP)领域的卓越表现而闻名。然而,当它进入计算机视觉(CV)领域时,却面临着计算成本高昂和推理速度慢的双重挑战。现在,一项革命性的创新——交叉注意…

Qualcomm QCS6490 开发板运行高通AI Hub图像分类程序

相关代码可以在如下链接下载: ai-hub-models/apps/android/ImageClassification at main quic/ai-hub-models GitHub 所用硬件有: 1. UBUNTU20.04 2. 高通QCS6490 开发板 对下载下来的代码进行编译 1. ubuntu环境配置 1. python环境配置 如果你…

[SAP ABAP] 子例程

子例程 示例1 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 输出结果如下所示 示例2 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 输出结果如下所示 补充扩展练习 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 输出结果如下所示 提示…

odoo 物联网 设备数据采集方案

图一 架构手稿(许老师专属) 图二 架构简图 部署 方案一: odoo业务数据库与设备采集数据库使用一个instance。 缺点:重启pg服务相互影响。 方案二: odoo业务数据库与设备采集数据库独立部署,使用两个instance。 优点:…

RedHat / CentOS安装FTP服务

本章教程,记录在RedHat / CentOS中安装FTP的具体步骤。FTP默认端口:21 1、安装 epel 源 yum install -y epel-release2、安装 pure-ftpd yum -y install pure-ftpd3、修改默认配置 # 默认配置位于 /etc/pure-ftpd/pure-ftpd.conf,在配置文件中找到下面几个参数进行修改:#…

AI视频生成技术爆发 引领虚拟数字人产业新潮流

2024年刚开局,先有OpenAI的AI视频生成模型Sora惊艳全网,随后阿里巴巴发布EMO,一张照片音频,就能生成具有生动表情和各种头部姿势、口型完全匹配高保真的人声头像动态视频。 技术的革新不仅为内容创作者打开了新世界的大门&#xf…

数据结构——队列练习题

在C语言中,.和->运算符用于访问结构体的成员变量。它们之间的区别在于:.运算符用于访问结构体变量的成员。->运算符用于访问结构体指针变量的成员 1a(rear指向队尾元素后一位,判空判满时牺牲一个存储单元) 首先…

PEFT - 安装及简单使用

LLM、AIGC、RAG 开发交流裙:377891973 文章目录 一、关于 PEFT二、安装1、使用 PyPI 安装2、使用源码安装 三、快速开始1、训练2、保存模型3、推理4、后续步骤 本文翻译整理自:https://huggingface.co/docs/peft/index 一、关于 PEFT 🤗PEFT…

BugKu-WEB-sodirty

目录 前言 正文 信息收集 代码审计 验证 结尾 前言 七月始,暑假副本也正式开启 正文 信息收集 看着貌似没啥意义 看样子是有备份文件 下载下来 快速审计一下 代码审计 来吧 app.js没啥东西,主要是功能是实现error 我们找一找有没有index.js 找到了 \www\routes\in…

使用 Git Hooks 防止敏感信息泄露

欢迎关注公众号:冬瓜白 在日常开发中,我们可能会不小心将敏感信息提交到 Git。为了防止这种情况,可以利用 Git Hooks 编写一个简单的脚本,当发现提交中包含敏感词时,给出提示。 以下是一个基于 pre-commit 钩子的示例…

踩坑:Unity导出WebGL发布到手机上竖屏时强制显示横屏

具体的适配问题 公司的项目需要将游戏导出WebGL 发布到Web平台 本以为是个很简单的事情 谁知道却被个横竖屏适配搞的头晕 毕竟只有大学浅浅的学了下HTML这门语言 出来工作后基本上都是在跟C# Lua打交道 言归正传 看看具体问题吧 游戏如果从横屏进入 基本上不会有什么适配问题…

Finding Global Homophily in Graph Neural Networks When Meeting Heterophily

本文发表于:ICML22 推荐指数: #paper/⭐⭐⭐ 问题背景: 异配图的邻接矩阵难以确定,以及异配图的计算复杂度开销大 可行的解决办法:高通滤波多跳邻居,GPRGNN(pagerank一类,各阶邻居的权重不同,ACM-GCN(高低通滤波,H2GCN(应该复杂度很大&…