题目1: 为什么要使用模块化?
- 在一个项目中,经常会有上亿过万的代码,这时候我们为了方便管理,插入就要使用模块化。
- 解决命名冲突问题。
- 不用每个script都要仔细瞧瞧放在哪里,依赖管理。
- 提高代码的可读性。
- 代码可以解耦,提高代码的复用性。
题目2: CMD、AMD、CommonJS 规范分别指什么?有哪些应用
- AMD:
是"Asynchronous Module Definition"的缩写。意思是,"异步模块定义"。采用异步的方式加载模块,模块加载不影响后面语句的运行。
语法:
define(id?, dependencies?, factory);
实现AMD的库有RequireJS 、curl 、Dojo 等。
- CMD:
CMD(Common Module Definition)是 SeaJS推广过程中产生的。和AMD不同的是,它并不是异步加载,而是松散加载,只有当需要加载模块的时候,再用require方法引用模块。
示例:
define(function(require, exports, module) {
exports.add = function() {
var sum = 0, i = 0, args = arguments, l = args.length;
while (i < l) {
sum += args[i++];
}
return sum;
};
});
- commonJS:
commonJS是一个服务器端模块的规范,Node.js就是遵循这个规范。(同步加载)
示例:
//新建 一个 a.js
var student={
sayName:function(){
console.log(123)
}
}
module.export = student
//另外新建一个b.js
var p = require('./a')//a.js的路径
p.sayName() //123
//在node 文件
- requireJS
引入文件
<script data-main="index/index.js" src="require/require.js"></script>
//require.引入成功后回去找data-main的路径文件,然后加载
//加载模块设置
requireJS.config({
baseUrl: 'js/libe' //设置你的根路径
path: {
'jquery': '../jquery/jquery.min' //设置一些难找的路径
}
})
//可以直接调用AMD模块
requirejs(['jquery','xxxxxxx','xxxxxx'],function($,xxx,xxx){
//代码
})
//也可以
requirejs(['app/index'])
//然后在index里写
define(['jquery','xxxx','xxxx'],function($,xxxx,xxxx){
//开始你的表演
})











网友评论