amd、cmd、esmodule、commonjs区别是什么
这篇文章主要介绍“amd、cmd、esmodule、commonjs区别是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“amd、cmd、esmodule、commonjs区别是什么”文章能帮助大家解决问题。
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。
相关内容
这些是最新的
热门排行
- THINKPHP5+GatewayWorker+Workerman 开发在线客服系统
- 在手机浏览器网页中点击链接跳转到微信界面的方法
- 尊云网站目录系统 ThinkPHP5网站分类目录程序 v2.2.221011
- CentOS 7安装shadowsock(一键安装脚本)
- AdminTemplate 基于LayUI 2.4.5实现的网站后台管理模板
- 用NW.js(node-webkit)开发多平台的桌面客户端
- PHP生成随机昵称/用户名
- THINKPHP5网站分类目录程序 尊云网站目录系统
- 织梦(DEDECMS)微信支付接口 微信插件
- 基于LayUI开发的 网站后台管理模板 BeginnerAdmin
- 响应式后台网站模板 - AMA.ADMIN
- layuiAdmin后台管理模板 Iframe版
- LayUI 1.0.9 升级 至 LayUI 2.1.4 方法
- 简洁清爽的会员中心模板
- jQuery幸运大转盘抽奖活动代码