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 面向对象补全计划 之 继承(字段与属性&…...
CREO 6.0装配实战:别再乱拖零件了,手把手教你用‘移动’和‘角度偏移’精准定位
CREO 6.0装配实战:从零件乱飞到精准定位的进阶技巧 刚接触CREO装配模块的新手设计师,最常遇到的挫败感莫过于:明明在脑海中构思好了零件位置,实际操作时却总是出现零件"乱飞"、"定位不准"的情况。这种体验就像…...
国家中小学智慧教育平台电子课本下载工具:教育资源获取的完整解决方案
国家中小学智慧教育平台电子课本下载工具:教育资源获取的完整解决方案 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内…...
别再乱点JIRA后台了!手把手教你配置项目专属的创建/编辑界面(附避坑清单)
别再乱点JIRA后台了!手把手教你配置项目专属的创建/编辑界面(附避坑清单) 当团队开始使用JIRA管理敏捷开发流程时,默认的界面配置往往成为效率杀手。开发人员创建Bug时被无关字段干扰,产品经理填写用户故事时找不到必填…...
TEdit地图编辑器:从零开始掌握泰拉瑞亚世界创作
TEdit地图编辑器:从零开始掌握泰拉瑞亚世界创作 【免费下载链接】Terraria-Map-Editor TEdit - Terraria Map Editor - TEdit is a stand alone, open source map editor for Terraria. It lets you edit maps just like (almost) paint! It also lets you change w…...
心灵鸡汤01 - 人生九不争
一、跟父母,不争口舌; 二、跟朋友,不争面子; 三、跟领导,不争高低; 四、跟小人,不争道理; 五、跟伴侣,不争对错; 六、跟亲戚,不争穷富;…...
npcpy:模块化AI智能体框架,从角色构建到团队协作的工程实践
1. 项目概述:一个为AI应用构建者准备的“瑞士军刀”如果你和我一样,在过去几年里尝试过用大语言模型(LLM)构建点什么东西,那你大概率经历过这样的循环:从LangChain、LlamaIndex这类框架开始,被它…...
搜极星破局:拆解企业 “看不见、控不住、比不过” 困局
引言:AI 时代,企业陷入三重信息绝境2026 年,生成式 AI 全面主导用户决策链路,品牌竞争从搜索排名转向 AI 认知权重。但多数企业正深陷看不见、控不住、比不过的三重困局:看不见自身在 AI 平台的真实曝光状态࿰…...
从任务编排到自动化工作流:OpenClaw与Apache Airflow实战解析
1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫Charpup/openclaw-task-workflow。光看名字,你可能会有点摸不着头脑——“Charpup”是什么?“OpenClaw”又是什么?这其实是一个典型的、由开发者社区驱动的自动化任…...
基于Node.js的Gemini CLI蓝图:构建高效AI命令行工具
1. 项目概述:一个让Gemini API在命令行中“活”起来的蓝图 如果你和我一样,日常工作中大量时间都泡在终端里,那么你肯定理解那种感觉:为了调用一个AI模型,不得不频繁地在浏览器、API文档和命令行之间来回切换ÿ…...
别再满世界找旧版了!用JetBrains Toolbox App一键管理所有IDE版本(含IDEA/PyCharm/WebStorm)
高效管理开发环境:JetBrains Toolbox App 的进阶使用指南 每次打开编辑器都要重新配置环境?项目组里有人用新版有人用旧版导致协作困难?插件突然不兼容最新版本?这些问题困扰着许多开发者。JetBrains Toolbox App 作为官方推出的管…...
