JS模块化规范之CMD

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 = valuemodule.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.mzph.cn/news/235928.shtml

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

相关文章

Pytest fixture 的四种作用域:session、module、class 和 function

当使用 Pytest 测试框架时&#xff0c;fixture 可以具有不同的作用域&#xff0c;以控制其生命周期和共享范围。Pytest 支持四种不同的 fixture 作用域&#xff1a;session、module、class 和 function。 session 作用域(Session Scope)&#xff1a; session 作用域是最宽泛的作…

简单的几个基础卷积操作

当构建卷积神经网络时&#xff0c;我们可以使用不同的卷积操作来提取图像特征。以下是一些常见的卷积操作&#xff0c;以及它们的 PyTorch 实现&#xff1a; 标准卷积层&#xff1a;通过 nn.Conv2d 实现标准的卷积操作。 conv_standard nn.Conv2d(in_channels3, out_channel…

应用 Strangler 模式将遗留系统分解为微服务

许多来源在一般情况下提供了微服务的解释&#xff0c;但缺乏特定领域的示例。新来者或不确定从哪里开始的人可能会发现掌握如何将遗留系统过渡到微服务架构具有挑战性。本指南主要面向那些正在努力启动迁移工作的个人&#xff0c;它提供了特定于业务的示例来帮助理解该过程。 …

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

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

【华为OD题库-103】BOSS的收入-java

题目 一个XX产品行销总公司&#xff0c;只有一个 boss&#xff0c;其有若干一级分销&#xff0c;一级分销又有若干二级分销&#xff0c;每个分销只有唯一的上级分销。规定每个月&#xff0c;下级分销需要将自己的总收入(自己的下级上交的)每满100元上交15元给自己的上级.现给出…

深度学习的推理部分

深度学习的推理部分指的是已经训练好的深度学习模型应用于新数据&#xff08;通常是测试或实际应用数据&#xff09;以进行预测、分类、分割等任务的过程。在深度学习中&#xff0c;训练和推理是两个阶段&#xff1a; 训练阶段&#xff1a; 在这个阶段&#xff0c;深度学习模型…

xcode上传app store connect后testflight没有可构建版本的原因

查看你的邮箱, 里面有原因提示 一般为使用了某些权限, 但是plist没有声明 xcode 修改display name后名字并没有改变 原因是并没有修改到plist的CFBundleDisplayName的字段 将CFBundleDisplayName的值修改为${INFOPLIST_KEY_CFBundleDisplayName} INFOPLIST_KEY_CFBundleDispla…

C++ 模拟实现string

目录 一.类的声明 二.确定成员变量 三.成员函数 1.带参的构造函数&#xff0c;析构函数&#xff0c;拷贝构造 2.size()与capacity() 3.运算符重载 重载数组下标访问[] 重载 重载比较运算符&#xff08;<&#xff0c; < &#xff0c; > &#xff0c; > …

改变传媒格局的新趋势

在如今信息高速发展的时代&#xff0c;人们早已进入了一个以手机为中心的智能化时代。随着科技的迅猛发展&#xff0c;手机无人直播成为了一种新兴的传媒形态&#xff0c;正逐渐改变着传媒格局。本文将从手机无人直播的定义、发展背景和影响等方面进行探讨。 首先&#xff0c;…

Python_Tkinter和OpenCV模拟行星凌日传输光度测定

传输光度测定 在天文学中&#xff0c;当相对较小的天体直接经过较大天体的圆盘和观察者之间时&#xff0c;就会发生凌日。 当小物体移过较大物体的表面时&#xff0c;较大物体会稍微变暗。 最著名的凌日是水星和金星对太阳的凌日。 借助当今的技术&#xff0c;天文学家可以在…

Vue3使用 xx UI解决布局高度自适应

解决方案 在相应的Sider部分添加&#xff1a;height: ‘91.8vh’&#xff0c;即可。示例&#xff1a; <Layout><Sider hide-trigger :style"{background: #fff, height: 91.8vh}"> }知识补充 vw、vh、vmin、vmax是一种视窗单位&#xff0c;也是相对单…

数字孪生开发技术分析

数字孪生的开发涉及多个技术领域&#xff0c;包括计算机科学、数据科学、人工智能和工程等。以下是数字孪生开发中常用的一些关键技术&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.建模和仿真&am…

《论文阅读28》Unsupervised 3D Shape Completion through GAN Inversion

GAN&#xff0c;全称GenerativeAdversarialNetworks&#xff0c;中文叫生成式对抗网络。顾名思义GAN分为两个模块&#xff0c;生成网络以及判别网络&#xff0c;其中 生成网络负责根据随机向量产生图片、语音等内容&#xff0c;产生的内容是数据集中没有见过的&#xff0c;也可…

hive 用户自定义函数udf,udaf,udtf

udf&#xff1a;一对一的关系 udtf&#xff1a;一对多的关系 udaf&#xff1a;多对一的关系 使用Java实现步骤 自定义编写UDF函数注意&#xff1a; 1.需要继承org.apache.hadoop.hive.ql.exec.UDF 2.需要实现evaluete函数 编写UDTF函数注意&#xff1a; 1.需要继承org.apache…

Vue前端设计模式

文章目录 一、什么是设计模式&#xff1f;二、设计几个原则三、常见的设计模式及实际案例3.1、单例模式3.1.1、Element UI3.1.2、Vuex 3.2、工厂模式3.2.1、VNode3.2.2、vue-route 3.3、策略模式3.3.1、表格 formatter3.3.2、表单验证 3.4、代理模式3.4.1、拦截器3.4.2、前端框…

用 Java 流的方式实现树型结构

在Java中&#xff0c;流&#xff08;Stream&#xff09;是一种处理集合数据的高级抽象&#xff0c;它提供了一种优雅且功能强大的方式来处理集合。当我们面对树型结构时&#xff0c;例如树&#xff08;Tree&#xff09;或图&#xff08;Graph&#xff09;&#xff0c;使用流的方…

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

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

Elasticsearch常见面试题

文章目录 1.简单介绍下ES&#xff1f;2.简单介绍当前可以下载的ES稳定版本&#xff1f;3.安装ES前需要安装哪种软件&#xff1f;4.请介绍启动ES服务的步骤&#xff1f;5.ES中的倒排索引是什么&#xff1f;6. ES是如何实现master选举的&#xff1f;7. 如何解决ES集群的脑裂问题8…

高速视频采集卡设计方案:620-基于PCIe的高速视频采集卡

一、产品概述 基于PCIe的高速视频采集卡&#xff0c;通过PCIe3.0X8传输到存储计算服务器&#xff0c;实现信号的分析、存储。 北京太速科技 产品固化FPGA逻辑&#xff0c;适配视频连续采集&#xff0c;缓存容量2GB&#xff0c;开源的PCIe QT客户端软件&#xff0c…

(七)STM32 NVIC 中断、优先级管理及 AFIO 时钟的开启

目录 1. 中断相关知识简介 1.1 什么是中断 1.2 什么是内中断、外中断 1.3 什么是可屏蔽中断、不可屏蔽中断 2. CM3 内核中断介绍 2.1 F103系统异常清单 2.2 F103 外部中断清单 3. NVIC 简介 3.1 NVIC 寄存器简介 3.2 NVIC 相关寄存器的介绍 4. 中断优先级 4.1 优先…