JavaScript的模块系统详解(三)
程序员文章站
2024-03-14 19:37:52
...
这是JavaScript模块系列的最后一篇,介绍AMD。
为什么?
AMD全称是Asynchronous Module Defintion
,或者叫异步模块规范。它和CommonJS的最大区别就是AMD支持异步模块加载,有利于浏览器端应用的用户体验,它对异步加载的实现完全符合开发人员使用传统闭包的习惯:
//Calling define with a dependency array and a factory function
define(['dep1', 'dep2'], function (dep1, dep2) {
//Define the module value by returning a value.
return function () {};
});
// Or:
define(function (require) {
var dep1 = require('dep1'),
dep2 = require('dep2');
return function () {};
});
通过define函数,AMD模块系统能够定义当前模块的功能和依赖,对于那些无相互依赖的模块可以同步加载。
特点
- 异步加载
- 支持循环依赖
- 兼容require和exports
- 集成了依赖管理
- 可以将各模块分别定义在不同的文件
- 支持插件机制,可以在加载过程中进行定制化控制
缺点
- 需要额外加载模块系统(可以通过预编译解决)
- 不适合进行静态分析
具体实现
当前最流行的两个AMD实现是require.js和Dojo。使用require.js非常简单,直接在HTML文件中引入,并设置data-main属性,定义JavaScript执行的入口。
推荐文章
上一篇: 约数-求一个数的约数、约数个数、约数之和
下一篇: Linux grep命令的一些使用体会
推荐阅读
-
JavaScript的模块系统详解(三)
-
linux—Centos7系统不同虚拟机之间的免密登录设置详解及问题剖析
-
【实例解析】大型服装集团BI决策系统的分析主题模块 博客分类: 解决方案综合数据分析系统 商业智能服装企业信息化BI决策系统大型服装集团BI系统
-
Java设计模块系列之书店管理系统单机版(三)
-
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
-
javascript中的_proto_、constructor和prototype详解
-
Java设计模块系列之书店管理系统单机版(三)
-
Thinkphp5.0自动生成模块及目录的方法详解
-
mac系统下安装多个php并*切换的方法详解
-
利用Laravel事件系统如何实现登录日志的记录详解