JavaScript模块化
JavaScript模块化
- 一、CommonJS规范
- 1、在node环境下的模块化
- 导入、导出
- 2、浏览器环境下使用模块化
- browserify编译js
- 二、ES6模块化规范
- 1、在浏览器端的定义和使用
- 2、在node环境下简单使用
- 方式一:
- 方式二:
- 3、导出数据
- 4、导入数据
- 5、数据引用问题
一、CommonJS规范
1、在node环境下的模块化
导入、导出
导入:require,例如:const axios = require('axios'); 或者解构导入const {axios,postgres:pg}=require('./_axios_postgres.js')
导出:exports,例如:exports.axios = {"axios":axios,"pg":pg}或者对象整体导出:module.exports = { axios,pg }

2、浏览器环境下使用模块化
默认是不支持require的,所以需要编译一下才能在html中引入模块化js
browserify编译js

二、ES6模块化规范
1、在浏览器端的定义和使用
导出代码
export const my_axios = { "a": 1, b: "2" }
export function getAxios() {return my_axios
}
导入代码
import * as es6 from "./27、es6模块化-导出.js"
console.log("xxx", es6.getAxios());
html测试代码,type="module"一定要加上
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<script type="module" src="./27、es6模块化-导入.js"></script>
<body></body>
</html>
控制台打印结果

2、在node环境下简单使用
方式一:
(1)修改上面导入导出文件为mjs文件

(2)执行结果

方式二:
在上面导入导出的js文件下新建package.json,加上内容type如下
{"type": "module"
}
运行结果

3、导出数据
(1)、分别导出。将导出的对象前面分别加上export
export const my_axios = { "a": 1, b: "2" }
export function getAxios() {return my_axios
}
(2)、统一导出。使用export {}
const postgres1 = "pg1"
const postgres2 = "pg2"
export {postgres1,postgres2}
(3)、默认导出。export default {}
const postgres3 = "pg3"
export default { postgres3}
或者
export default postgres3
4、导入数据
(1)、导入全部。
import * as es6 from "./27、es6模块化-导出.js"
(2)、命名导入。只针对分别导出和统一导出
import { my_axios as axios, getAxios } from "./28、es6模块化-导出.js"
(3)、默认导入。只针对默认导出
import xxx(随便起,获取到的是默认导出的所有对象) from "./28、es6模块化-导出.mjs"
(4)、通用导入。混合使用
import xxx(随便起,获取到的是默认导出的所有对象), { my_axios, getAxios } from "./28、es6模块化-导出.mjs"
(5)、动态导入。点击按钮后导入某个js
<body><button id="btn">导入</button>
</body>
<script>const btn = document.getElementById("btn")btn.onclick = async () => {const result = await import("./27、es6模块化-导出.js")console.log("result", result);}
</script>

(6)、import可以不接收任何数据。
比如每次启动项目都要在控制台打印一次当前版本号,
先创建version.js,内容写上console.log("v_1.1.2"),然后在访问开始页面直接使用import "./version.js"即可。
5、数据引用问题
思考一:

思考二:相当于复制了一份

思考三:

相关文章:
JavaScript模块化
JavaScript模块化 一、CommonJS规范1、在node环境下的模块化导入、导出 2、浏览器环境下使用模块化browserify编译js 二、ES6模块化规范1、在浏览器端的定义和使用2、在node环境下简单使用方式一:方式二: 3、导出数据4、导入数据5、数据引用问题 一、Com…...
文件包含漏洞Tomato靶机渗透_详解
一、导入靶机 将下载好的靶机拖入到VMware中,填写靶机机名称(随便起一个)和路径 虚拟机设置里修改网络状态为NAT模式 二、信息收集 1、主机发现 用御剑扫描工具扫描虚拟机的NAT网段,发现靶机的IP是192.168.204.141 2、端口扫描 用御剑端口扫描扫描全…...
湖北汽车工业学院-高等数学考纲
湖北汽车工业学院2024年普通专升本考试的《高等数学》考试大纲已经公布。考试形式为闭卷笔试,满分100分,考试时间为90分钟。考试内容主要包括以下几个部分: 1. **函数、极限、连续**: 涉及函数概念、表示法、有界性、周期性、奇偶…...
Linux:Xshell相关配置及前期准备
一、Linux的环境安装 1、裸机安装或者是双系统 2、虚拟机的安装 3、云服务器(推荐)——>安装简单,维护成本低,学习效果好,仿真性高(可多人一起用一个云服务器) 1.1 购买云服务器 使用云服…...
模型 正态分布(通俗解读)
系列文章 分享 模型,了解更多👉 模型_思维模型目录。随机世界的规律,大自然里的钟形曲线。 1 正态分布的应用 1.1 质量管理之六西格玛 六西格玛是一种旨在通过识别和消除缺陷原因来提高制造过程或业务流程质量的管理策略。我们先来了解下六…...
安装了Vue-pdf后,打包文件多出了worker.js和worker.js.gz
解决方式: 修改node_modules/worker-loader/dist/index文件 将 const filename _loaderUtils2.default.interpolateName(this, options.name || 中的 js/[hash].worker.js,更改为 static/js/[hash].worker.js...
使用excel生成国际化多语言js文件的脚本
1、创建一个空文件夹 2、终端 cnpm install xlsx3、在文件夹创建一个index.js // 导入 Node.js 内置的 fs 模块 const fs = require(fs); // 导入 xlsx 模块,用于处理 Excel 文件 const XLSX = require(xlsx);// 读取 Excel 文件 function readExcelFile(filePath) {const …...
【蝉联】摩斯再次获得“中国隐私计算市场份额第一”
蝉联第一 8月2日,全球领先的IT市场研究和咨询公司IDC发布了《中国隐私计算平台厂商市场份额,2023》报告。蚂蚁集团凭借商用隐私计算平台摩斯(MORSE),以 35.3%的市场份额蝉联第一。 2023年,中国隐私计算平台…...
安装 qcloud-python-sts 失败 提示 gbk codecs decode byte 应该如何解决
安装 qcloud-python-sts 失败 提示 gbk codecs decode byte 应该如何解决 解决方案: 将windows 修改为utf-8编码格式 解决步骤如下: 1. 进入控制台 2. 点击区域 4. 点击管理 4.勾选UTF-8 5.重启系统即可...
mv:自动对焦代码
try:# The camera will now focus on whatever is in front of it.sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS) except:raise (Exception("Auto focus is not supported by your sensor/board combination."))...
【C++】数组案例 五只小猪称体重
题目:给出物质小猪体重,找出最大的体重的值并打印 思路:利用菽粟写入五只小猪的体重,让每一个元素都赋值给一个整型变量并每赋值一次就于下一个数组中的元素比,若是大就继续赋值给这个变量,若是小则不赋值…...
Bug 解决 | 后端项目无法正常启动,或依赖服务连接失败
目录 1、版本问题 2、依赖项问题 明明拷贝的代码,为什么别人行,我启动就报错? 这篇文章我就理一下最最常见的项目启动报错的两种原因! 1、版本问题 比如明明项目的 Java 版本是 8,你非得拿 5 跑?那不是…...
Linux: network: mlx5_core crash;dos
https://bugzilla.redhat.com/show_bug.cgi?idCVE-2024-41090 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id8be915fc5ff9a5e296f6538be12ea75a1a93bdea https://www.openwall.com/lists/oss-security/2024/07/24/4 是tap的驱动向下传递的包…...
用手机剪辑视频素材从哪里找?用手机视频素材库分享
视频编辑是一门充满创意的艺术,无论是制作短片、广告还是个人Vlog,都离不开高质量的视频素材。如果自己拍摄的素材不能完全满足创作需求,或者需要更多样化的内容来丰富视频,那么优质的视频素材来源至关重要。下面推荐几个提供高品…...
DataStream API使用Sink及自定义Sink
目录 Data Sinks 案例 自定义Sink Human实体类 自定义RichSinkFunction MySQL Sink使用 测试 Data Sinks 数据接收器(Data sinks)消费数据流并将它们转发到文件、套接字、外部系统或打印它们。Flink带有各种内置输出格式,这些格式被封装在数据流的算子后面: …...
C++标准模板(STL)- 类型支持 (类型属性,检查类型是否拥有强结构相等性,std::has_strong_structural_equality)
类型特性 类型特性定义一个编译时基于模板的结构,以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为,除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例…...
《中国数据库前世今生》观影——2000年代/数据库分型及国产数据库开端
引出 《中国数据库前世今生》观影——2000年代/数据库分型及国产数据库开端 第3集:2000年代/数据库分型及国产数据库开端 y2k问题 千年虫,又叫做“计算机2000年问题”“电脑千禧年千年虫问题”或“千年危机”。缩写为“Y2K]”。是指在某些使用了计算机…...
图的同态Graph Homomorphism与同构Graph Isomorphism
图的同态Graph Homomorphism 图的同态(Graph Homomorphism)是图论中的一个重要概念,用于描述图之间的一种映射关系。图的同态描述了一个图如何通过映射保留其边的结构。 ### 图的同态定义 设有两个图 \( G (V_G, E_G) \) 和 \( H (V_H, …...
使用 Python 对雷达卫星 sar 图像进行降噪的三种方法
合成孔径雷达 (SAR) 图像广泛应用于各种领域(航空航天、军事、气象等)。问题是这种图像在其原始格式中受到噪点的影响。虽然这些图像通常也是沉重的文件,但从科学的角度来看,有效地对其进行去噪的任务似乎既具有挑战性,又在现实世界中非常有用。 卫星图像有两大类: 光学…...
C# Unity 面向对象补全计划 之 初识继承方法与多态
本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列旨在通过补全学习之后,给出任意类图都能实现并做到逻辑上严丝合缝 1.继承方法 C# & Unity 面向对象补全计划 之 继承(字段与属性&…...
[具身智能-653]:人的大脑神经网络就是天然的模拟电路,还是数字电路?
结论先给:人脑神经网络,本质是【天然模拟电路】,不是数字电路这和前面聊的模拟电路频域特性、硬件隐式频域滤波完全同逻辑。一、先分清:数字电路 vs 模拟电路 核心区别数字电路只有0、1两种离散电平,跳变是阶跃式&…...
抖音无水印视频下载终极指南:5分钟快速掌握免费批量下载技巧
抖音无水印视频下载终极指南:5分钟快速掌握免费批量下载技巧 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback…...
oh-my-prompt:模块化、高性能的终端提示符配置方案
1. 项目概述:一个为现代开发者量身打造的终端提示符如果你和我一样,每天有超过一半的工作时间是在终端(Terminal)里度过的,那么终端提示符(Prompt)就是你最亲密的“工作伙伴”。它不仅仅是那个闪…...
如何快速部署LeRobot机器人学习框架:避开3个关键陷阱的实战指南
如何快速部署LeRobot机器人学习框架:避开3个关键陷阱的实战指南 【免费下载链接】lerobot 🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning 项目地址: https://gitcode.com/GitHub_Trending/le/lerobot LeRobot是H…...
RK3368安卓9.0固件烧录后开机卡Recovery?手把手教你调整分区表解决4GB闪存空间不足
RK3368安卓9.0固件烧录实战:4GB闪存分区优化全解析 当你满怀期待地将Android 9.0固件烧录到RK3368开发板,却发现设备直接进入了Recovery模式,屏幕上躺着那个令人沮丧的红色感叹号机器人——这可能是每个嵌入式开发者都经历过的"入门仪式…...
Midjourney咖啡印相落地实操:3步完成色彩校准、5种纸张适配方案与打印机ICC配置清单
更多请点击: https://intelliparadigm.com 第一章:Midjourney Coffee印相技术原理与工艺边界 Midjourney Coffee印相并非官方命名的技术标准,而是社区对一类融合生成式AI图像(如Midjourney输出)与传统咖啡渍显影工艺的…...
ThunderAI:开源本地AI助手桌面应用部署与核心架构解析
1. 项目概述:一个开源的AI助手桌面应用 最近在GitHub上闲逛,发现了一个挺有意思的项目,叫“ThunderAI”。这名字听起来就挺带劲,对吧?点进去一看,是个用Python写的桌面应用程序,核心功能是把几个…...
Hyper-V下安装macOS(引导文件macOS.Monterey.14.x.UEFI.vhdx)版本:UEFI-OC095-
用于windows自带hyper-v虚拟机安装macos14时使用的虚拟磁盘,具体如何安装请参考文章...
R语言实战:用DescTools、ggiraphExtra、factoextra等包搞定多变量数据可视化(附完整代码)
R语言实战:多变量数据可视化的高效工具箱指南 在数据分析的日常工作中,我们常常需要处理包含数十甚至上百个变量的复杂数据集。传统的单变量或双变量可视化方法在这种场景下显得力不从心,而R语言生态系统中丰富的可视化包为我们提供了强大的工…...
RCB-F9T-0,支持多频段多星座及纳秒级精度的多协议GNSS授时板
简介今天我要向大家介绍的是 u-blox 的多频段GNSS授时板——RCB-F9T-0。这是一款专为高精度授时应用设计的紧凑型定时板。该模块基于 u-blox ZED-F9T-00B 高精度授时模块,搭载AEC-Q100认证的GNSS芯片;集成SMB天线连接器和5V有源天线供电电路;…...
