JS模块化规范之CMD

news2024/9/21 2:36:10

JS模块化规范之CMD

  • 模块化规范
    • CMD(Common Module Definition)
      • 概念
      • 基本语法
      • CMD实现

模块化规范

CMD(Common Module Definition)

概念

CommonJS module definition
CMD规范专门用于浏览器端,模块的加载时异步的,模块使用时才会加载执行。CMD规范整合了CommonJS和AMD规范的特点。在Sea.js中,所有JavaScript模块都遵循CMD模块定义规范。

基本语法

//定义没有依赖的模块
define(function(require,exports,module){
	exports.xxx = value
	module.exports = value
})
//定义没有依赖的模块
define(function(require,exports,module){
	//引入依赖模块(同步)
	var module2 = require('./module2')
	//引入依赖模块(异步)
	require.async('./module3',function(m3){
	})
	//暴露模块
	exports.xxx = value
})
//引入使用的模块
define(function (require){
	var m1 = require('./module1')
	var m4 = require('./module4')
	m1.show()
	m4.show()
})

CMD实现

  1. 下载sea.js,并引入
    • 官网:http://seajs.org/
    • github:https://github.com/sea.js/seajs
      然后将sea.js导入项目:js/libs/sea.js
  2. 创建项目结构
|-js
  |-libs
    |-sea.js
  |-modules
    |-module1.js
    |-module2.js
    |-module3.js
    |-module4.js
    |-main.js
|-index.html
  1. 定义sea.js的模块代码
//module1.js文件
define(function(require,exports,module){
	//内部变量数据
	var data = 'xuehua';
	//内部函数
	function show(){
		console.log('module1 show()' + data)
	}
	//向外暴露
	exports.show = show
})

//module2.js文件
define(function(require,exports,module){
	module.exports = {
		msg: 'I am xuehua'
	}
})

//module3.js文件
define(function (require,exports,module){
	const API_KEY = 'ABC123';
	exports.API_KEY = API_KEY;
})

//module4.js文件
define(function(require,exports,module){
	//引入依赖模块(同步)
	var module2 = require('./module2');
	function show(){
		console.log('module4 show()' + module2.msg)
	}
	exports.show = show
	//引入依赖模块(异步)
	require.async('./module3',function(m3){
		console.log('异步引入依赖模块3'+ m3.API_KEY)
	})
})

//main.js文件
define(function(require){
	var m1 = require('./module1')
	var m4 = require('./module4')
	m1.show()
	m4.show()
})

  1. 在index.html中引入
<script type="text/javascript" src="js/libs/sea.js"><script>
<script type="text/javascript">
	seajs.use('./js/modules/main')
</script>

最后得到的结果如下:

module1 show(),xuehua
module4 show() I am xuehua
异步引入依赖模块3 ABC123

好啦~CMD就先到这里啦!给大家拓展一个小知识【AMD和CMD的区别】
友友们,有问题的话欢迎留言讨论哟!
在这里插入图片描述

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

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

相关文章

macOS 开发 - 报错 Expected expression(空格问题)

文章目录 问题尝试解决方式 问题 一个简单的 查找沙盒内文件的代码&#xff0c;编译不通过&#xff0c;很郁闷 尝试 可以肯定 NSBundle 代码这么写没问题&#xff0c;即使重敲还是报错&#xff1b; 换个位置&#xff0c;甚至 mainBundle 都无法提示出来。 重启 Xcode 也无法…

钓鱼篇(中)

鱼竿感知 鱼竿感知系统其实非常重要&#xff0c;比如鱼儿上钩&#xff0c;你还一直弹窗&#xff0c;这样是个小白也能知道不正常。那么如何做好一个简单的感知系统呢&#xff1f;其实非常简单,这里我丢一个简单的demo,实际上它是可以写成一个框架的(这个先不考虑放出来) 这里…

5-高可用-降级

在开发高并发系统时&#xff0c;有很多手段来保护系统&#xff0c;如缓存、降级和限流等。 当访问量剧增、服务出现问题(如响应时间长或不响应)或非核心服务影响到核心流程的性能时&#xff0c;仍然需要保证服务还是可用的&#xff0c;即使是有损服务。 系统可以根据一些关键…

论文解读:On the Integration of Self-Attention and Convolution

自注意力机制与卷积结合&#xff1a;On the Integration of Self-Attention and Convolution(CVPR2022) 引言 1&#xff1a;卷积可以接受比较大的图片的&#xff0c;但自注意力机制如果图片特别大的话&#xff0c;运算规模会特别大&#xff0c;即上图中右边(卷积)会算得比较快…

c语言:求算数平均数|练习题

一、题目 输入3个数&#xff0c;求这三个数的算术平均数 二、代码图片【带注释】 三、源代码【带注释】 #include <stdio.h> #include<math.h> //输入正整数a、b、c的值&#xff0c; //求其算术平均值,并保留两个小数位输出 int pass0;//定义一个开关&#xff0c;…

《JVM由浅入深学习【一】 2023-12-19》JVM由简入深学习提升

JVM由浅入深一&#xff08;类加载&#xff09; JVM的类加载1. java运行时是什么时候被加载的&#xff1f;2. JVM类加载过程大致阶段3. 父类与子类初始化各个类型顺序4. 什么是类加载器&#xff1f;6. 双亲委派机制 JVM的类加载 1. java运行时是什么时候被加载的&#xff1f; …

win10部署安装Elasticsearch8.1.2

环境准备&#xff1a;JDk是1.8以上版本 1、官方下载Elasticsearch部署安装 访问官网,进入主页下载。 2、在下载页面&#xff0c;可以看到选择操作系统&#xff0c;选择系统后点击下载。&#xff08;我这里下载的Windows版本&#xff09; 3下载完成后&#xff0c;解压文件&am…

多级缓存:亿级流量的缓存方案

文章目录 一.多级缓存的引入二.JVM进程缓存三.Lua语法入门四.多级缓存1.OpenResty2.查询Tomcat3.Redis缓存预热4.查询Redis缓存5.Nginx本地缓存6.缓存同步 一.多级缓存的引入 传统缓存的问题 传统的缓存策略一般是请求到达Tomcat后&#xff0c;先查询Redis&#xff0c;如果未…

FA2016ASA (MHz范围晶体单元,内置热敏电阻) 汽车

FA2016ASA是爱普生推出的一款内置热敏电阻、频率范围为38.4MHz的晶振&#xff0c;确保数据的准确传输&#xff0c;同时有效避免频谱干扰的出现。可以在-40C to 125C 的温度内稳定工作。在汽车内部空间有限的情况下&#xff0c;FA2016ASA以其小型超薄的外形尺寸2.0 1.6 0.68mm…

【分享】如何给Excel加密?码住这三种方法!

想要给Excel文件进行加密&#xff0c;方法有很多&#xff0c;今天分享三种Excel加密方法给大家。 打开密码 设置了打开密码的excel文件&#xff0c;打开文件就会提示输入密码才能打开excel文件&#xff0c;只有输入了正确的密码才能打开并且编辑文件&#xff0c;如果密码错误…

Jenkins 构建环境指南

目录 Delete workspace before build starts&#xff08;常用&#xff09; Use secret text(s) or file(s) &#xff08;常用&#xff09; Add timestamps to the Console Output &#xff08;常用&#xff09; Inspect build log for published build scans Terminate a …

MFC 消息映射机制

目录 消息映射机制概述 宏展开 宏展开的作用 消息映射机制的执行流程 消息处理 消息映射机制概述 MFC的消息映射映射机制是可以在不重写WindowProc虚函数的大前提下&#xff0c;仍然可以处理消息。 类必须具备的要件 类内必须添加声明宏 DECLARE_MESSAGE_MAP() 类外…

【音视频 | AAC】AAC格式音频文件解析

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

33 在Vue3中如何通过插槽向父组件传值

概述 通过插槽向父组件传值&#xff0c;是一种比较高级的&#xff0c;但是非常使用的技术&#xff0c;在很多UI组件库里面经常看到。 这节课我们来学习一下这种用法。 基本用法 我们创建src/components/Demo33.vue&#xff0c;代码如下&#xff1a; <script setup> …

U盘无法读取怎么办?U盘无法读取修复方法

U盘无法读取是常见的故障&#xff0c;可能的原因包括U盘驱动程序未安装、U盘损坏、文件系统损坏等。为了解决这个问题&#xff0c;可以尝试重新安装U盘驱动程序、格式化U盘、检查U盘是否损坏等方法。如果以上方法均无效&#xff0c;建议寻求专业人士的帮助。 U盘无法读取怎么办…

MySQL——基础篇

学习视频链接&#xff1a;https://www.bilibili.com/video/BV1Kr4y1i7ru/?spm_id_from333.999.0.0&vd_source619f8ed6df662d99db4b3673d1d3ddcb 前言✴️ 基础篇——MySQL概述、SQL、函数、约束、多表查询、事务 进阶篇——存储引擎、索引、SQL优化、视图/存储过程/触发…

磁盘类型选择对阿里云RDS MySQL的性能影响

测试说明 这是一个云数据库性能测试系列&#xff0c;旨在通过简单标准的性能测试&#xff0c;帮助开发者、企业了解云数据库的性能&#xff0c;以选择适合的规格与类型。这个系列还包括&#xff1a; * 云数据库(RDS MySQL)性能深度测评与对比 * 阿里云RDS标准版(x86) vs 经济…

GitHub two-factor authentication开启教程

问题描述 最近登录GitHub个人页面动不动就有一个提示框”… two-factor authentication will be required for your account starting Jan 4, 2024 …“&#xff0c;点击去看了一下原来是GitHub对所有的用户登录都要开启双重身份认证&#xff0c;要在1月4号前完成 解决办法 …

Jenkins + gitlab 持续集成和持续部署的学习笔记

1. Jenkins 介绍 软件开发生命周期(SLDC, Software Development Life Cycle)&#xff1a;它集合了计划、开发、测试、部署的集合。 软件开发瀑布模型 软件的敏捷开发 1.1 持续集成 持续集成 (Continuous integration 简称 CI): 指的是频繁的将代码集成到主干。 持续集成的流…

清风数学建模学习笔记-斯皮尔曼相关系数

内容&#xff1a;斯皮尔曼相关系数 一.原理&#xff1a; 二.算法&#xff1a; 1.MATLAB: 2.SPSS&#xff1a; 分析-相关-双变量相关-勾选标注显著性相关性 3. 相关性系数的选择&#xff1a;