前端模块化:AMD, CMD, CommonJS, ES6 Module

本文探讨了前端模块化的四种主要规范:AMD、CMD、CommonJS 和 ES6 模块。AMD 采用依赖前置和异步加载,CMD 推崇依赖就近和懒加载。CommonJS 适用于服务器端,而ES6 模块提供了静态导出和导入。文章对比了它们的执行时机和优缺点。
摘要由CSDN通过智能技术生成

模块化就是将一个大的功能拆分为多个块,每一个块都是独立的,你不需要去担心污染全局变量,命名冲突什么的,它们只是向外暴露特定的变量和函数。

模块化的好处:①解决命名冲突 ②依赖管理 ③代码更加可读 ④提高复用性

目前流行的js模块化规范有AMD、CMD、CommonJS以及ES6的模块系统。

本文重点掌握AMD与CMD的区别、CommonJS与ES6 Module的区别


一、AMD

AMD,异步模块定义(Asynchronous Module Definition),它是一个在浏览器端模块化开发的规范。
它是依赖前置(依赖必须一开始就写好)会先尽早地执行(依赖)模块 。换句话说,所有的require都被提前执行(require 可以是全局或局部 )。

由于不是JavaScript原生支持,使用AMD规范进行页面开发需要用到对应的库函数,也就是大名鼎鼎RequireJS

(1)定义模块: define()
定义一个叫modelName的模块,且该模块的依赖为a,b,c。当加载完所有依赖(即加载完a,b,c)后,再执行回调函数,返回模块的输出值(即对外暴露的值)

define('modelName', ["a","b","c"], function(a,b,c){
	//`````
	return {};    //返回模块输出值(由向外暴露的变量 组成)
})
  • 参数一:定义的模块名称。若没有提供该参数,则默认为该模块所在文件的名称。(可选)
  • 参数二:当前模块的依赖(是数组),且数组里依赖的模块必须是已经定义的。
    若没有提供该参数,它默认为["require", "exports", "module"];(可选)
  • 参数三:模块初始化要执行的函数或对象

× 模块名格式:
模块名命名必须为驼峰形式,且不允许有文件扩展名(如“.js” )
模块名可以为 “相对的” 或 “顶级的”。如果首字符为“.”或“…”则为相对的模块名
顶级的模块名从根命名空间的概念模块解析
相对的模块名从 “require” 书写和调用的模块解析

(2)加载模块: require()
require()函数在加载依赖的函数的时候是异步加载的,这样浏览器不会失去响应,它指定的回调函数,只有前面的模块都加载成功后,才会运行,解决了依赖性的问题。

require(["a", "b", "c"], function(z,x,d){}); 
  • 参数一:是个数组,表示所依赖的模块
  • 参数二:是一个回调函数,参数一的模块都加载成功后&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值