返回顶部
首页 > 资讯 > 前端开发 > JavaScript >amd、cmd、esmodule、commonjs区别详解
  • 736
分享到

amd、cmd、esmodule、commonjs区别详解

amdcmdesmodulecommonjs 2023-05-16 15:05:14 736人浏览 泡泡鱼
摘要

目录AMD规范CMD规范ESModule规范Commonjs规范总结AMD、CMD、ESModule和CommonJS是javascript中最常用的模块化规范。在这篇文章中,我将会

AMD、CMD、ESModule和CommonJS是javascript中最常用的模块化规范。在这篇文章中,我将会深入探讨这些规范的区别,以及它们在实际开发中的应用。

AMD规范

AMD规范(Asynchronous Module Definition,异步模块定义)是RequireJS在推广模块化开发的过程中提出的一种规范。该规范的主要特点是异步加载模块,这样可以在需要时才去加载模块,提高页面加载速度。AMD规范的代码示例如下:

//定义模块
define(['module1', 'module2'], function(m1, m2) {
  //...
  return module;
});
 
//使用模块
require(['module'], function(module) {
  //...
});

在AMD规范中,使用define函数来定义一个模块,require函数来加载一个模块。在define函数中,第一个参数是一个数组,表示该模块依赖的其他模块;第二个参数是一个回调函数,表示该模块的代码。在回调函数中,我们可以使用依赖的模块,并将模块作为返回值。在require函数中,第一个参数也是一个数组,表示需要加载的模块;第二个参数是一个回调函数,在该函数中可以使用已加载的模块。

CMD规范

CMD规范(Common Module Definition,通用模块定义)是SeaJS在推广模块化开发的过程中提出的一种规范。该规范与AMD规范类似,也是异步加载模块,但是它的代码风格更加简洁。CMD规范的代码示例如下:

//定义模块
define(function(require, exports, module) {
  var m1 = require('module1');
  var m2 = require('module2');
  //...
  module.exports = module;
});
 
//使用模块
var module = require('module');

在CMD规范中,使用define函数来定义一个模块,require函数来加载一个模块。在define函数中,回调函数的参数可以自定义,但是一般情况下第一个参数是require,表示依赖其他模块的方法;第二个参数是exports,表示该模块对外输出的方法和属性;第三个参数是module,表示该模块自身。在回调函数中,我们可以使用require函数来加载其他模块,并将需要输出的方法和属性添加到exports对象上。在require函数中,只需要传入需要加载的模块名称即可。

ESModule规范

ESModule规范(es6 Module,ES6模块)是ECMAScript 6在语言层面上提供的模块化规范。该规范采用静态编译的方式来进行模块化,也就像前面两种规范,ESModule也支持异步加载模块。但是它的语法与前两种规范有很大的不同。ESModule规范的代码示例如下:

//定义模块
export function module() {
  //...
}
 
//使用模块
import { module } from 'module';

在ESModule规范中,使用export关键字来将模块的方法和属性输出,使用import关键字来加载其他模块。在export关键字后面,可以跟着一个函数或者变量名,表示需要输出的方法或属性。在import关键字后面,可以跟着需要加载的模块名称和需要导入的方法或属性。

ESModule的语法比较简洁,而且具有很好的可读性,这是因为ESModule采用了语言层面上的支持。与前两种规范不同,ESModule规范不需要使用额外的库来实现模块化,而是使用了标准的语法来支持。

CommonJS规范

CommonJS规范是node.js在推广模块化开发的过程中提出的一种规范。该规范与前三种规范的最大区别在于它采用同步加载模块的方式。CommonJS规范的代码示例如下:

//定义模块
var module1 = require('module1');
var module2 = require('module2');
 
//使用模块
var module = require('module');

在CommonJS规范中,使用require函数来加载其他模块,并将需要使用的模块赋值给变量。在使用模块时,只需要使用require函数来加载即可。

由于CommonJS规范是node.js在推广模块化开发的过程中提出的一种规范,因此它在服务器端的应用非常广泛。但是在浏览器端的应用中,CommonJS规范的同步加载方式可能会导致页面加载速度变慢,因此在浏览器端的应用中,更多地使用异步加载模块的规范,比如AMD和CMD。

总结

在实际开发中,我们可以根据项目需求和团队开发习惯来选择使用适合自己的模块化规范。如果需要异步加载模块,可以选择AMD或CMD规范;如果在语言层面上支持模块化,则可以选择ESModule规范;如果需要在Node.js中使用模块化,则可以选择CommonJS规范。无论使用哪种规范,模块化开发的目的都是为了提高代码的可维护性和可重用性,使代码更加清晰明了,从而提高开发效率。

到此这篇关于amd、cmd、esmodule、commonjs区别详解的文章就介绍到这了,更多相关amd cmd esmodule commonjs内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: amd、cmd、esmodule、commonjs区别详解

本文链接: https://lsjlt.com/news/210004.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • amd、cmd、esmodule、commonjs区别详解
    目录AMD规范CMD规范ESModule规范CommonJS规范总结AMD、CMD、ESModule和CommonJS是JavaScript中最常用的模块化规范。在这篇文章中,我将会...
    99+
    2023-05-16
    amd cmd esmodule commonjs
  • javascript中AMD,CMD,Commonjs和es6有什么区别
    本文小编为大家详细介绍“javascript中AMD,CMD,Commonjs和es6有什么区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“javascript中AMD,CMD,Commonjs和es6有什么区别”文章能帮助大家解决疑惑...
    99+
    2023-06-17
  • JS中ESModule和commonjs介绍及使用区别
    目录ES Module导出仅导出重导出(re-exporting / aggregating)嵌入式脚本引入语法嵌入式脚本特点commonJS导出引入特点值拷贝ES Module和 ...
    99+
    2024-04-02
  • CommonJS/AMD/UMD/ES Module介绍和区别
    CommonJS、AMD、UMD和ES Module都是用于模块化开发的标准或规范。1. CommonJS:- CommonJS是一...
    99+
    2023-09-21
    CommonJS
  • js中AMD和CMD的区别是什么
    这篇文章主要介绍“js中AMD和CMD的区别是什么”,在日常操作中,相信很多人在js中AMD和CMD的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”js中AMD和CMD的区别是什么”的疑惑有所帮助!...
    99+
    2023-06-20
  • es6和commonJs的区别解析
    目录一、export语句的区别:2. 加载方式不同:3.应用场景不同:4.对象引用不同:5. 循环依赖处理不同:总结:一、export语句的区别: ES6 和 Common...
    99+
    2023-03-21
    es6和commonJs区别 es6和commonJs区别
  • docker中的run/cmd/entrypoint的区别详解
    Dockerfile中run、cmd和entrypoint都能够用于执行命令,下面是三者的主要用途: run命令执行命令并创建新的镜像层,通常用于安装软件包 cmd...
    99+
    2024-04-02
  • Windows批处理文件(.bat和.cmd)及区别详解
    目录cmd文件和bat文件的区别指令描述指令:echo和@打印:echo赋值:set注释:REM 和 ::标题:title暂停:PAUSE启动:start指令:call延时:time...
    99+
    2022-11-13
    Windows批处理文件 Windows批处理文件 .bat Windows批处理文件 .cmd
  • nginx location/区别详解
    目录1.location和proxy_pass都带/,则真实地址不带location匹配目录2.location不带/,proxy_pass带/,则真实地址会带/3.location...
    99+
    2024-04-02
  • jsp和servlet区别详解
    jsp和servlet区别详解jsp和servlet的区别有以下几点:Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。推荐:《Java学习》js...
    99+
    2015-04-20
    java教程 jsp servlet
  • MyISAM和InnoDB区别详解
    MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不...
    99+
    2024-04-02
  • resulttype和resultMap区别详解
    目录 一、对象不同 1. resultMap 2. resultType 3. 分析 二、描述不同 1、resultMap 2、resulTtype 三、类型适用不同 一、对象不同 1. resultMap 如果查询出来的结果的列名和实...
    99+
    2023-09-05
    mybatis java mysql
  • Redis和Memcached的区别详解
    Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较: 1.Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持...
    99+
    2022-06-04
    详解 区别 Redis
  • Linux下“/”和“~”的区别详解
    ”/“是根目录,”~“是家目录。linux存储是以挂载的方式,相当于PofNAHfXm是树状的,源头就是”/“,也就是根目录。而每个用户都有”家“目录,也就是用户的个人目录,比如root用户的”家“目录就是/root,普...
    99+
    2022-06-04
    Linux “/”和“~”区别 Linux /和~
  • Servlet中/和/*的区别详解
    目录本文提纲版本约定✍正文点拨“市面上”的错误答案1、/用于Servlet,demo:这个urlPatterns是合法的。只不过它属于精确匹配,也就是说别看它中间有*,仍...
    99+
    2024-04-02
  • C和C++的区别详解
    目录通过程序来介绍1.iostream文件2.头文件名的区别C语言C++3.名称空间namespace封装性4.使用cout进行C++的输出指针和数组名的区别反汇编查看区别结论解引用...
    99+
    2024-04-02
  • mysql中#{}和${}的区别详解
    #{}会将传入的数据当成一个字符串,会对自动传入的数据加一个双引号 order by #{userId}   这里假如userId = 111,那么解析成sql时...
    99+
    2024-04-02
  • vue3ref和reactive的区别详解
    目录Refreactive源码分析视频 点击进入 Ref ref数据响应式监听。ref 函数传入一个值作为参数,一般传入基本数据类型,返回一个基于该值的响应式Ref对象,该...
    99+
    2023-03-19
    vue3 ref 和reactive
  • Oracle与MySQL的区别详解
    目录什么是mysql什么是oracleMySQL的优点MySQL的缺点Oracle的优点Oracle的缺点Oracle与MySQL的区别什么是MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司...
    99+
    2023-04-14
    Oracle与MySQL的区别 Oracle与MySQL优缺点 Oracle优缺点 MySQL优缺点
  • bashshell和dashshell的区别详解
    最近在工作中遇到一个很奇葩的问题,就是一个嵌入式的SDK编译,它里面执行shell命令的时候,使用的dash shell来解析,而通常我们默认用的是bash shell来解析;我按照...
    99+
    2023-05-19
    bash shell dash shell
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作