1: 为什么要使用??榛??
网页越来越复杂,js代码越来越多,在多人协作下如何管理代码?于是就有了模块化。
- 解决命名冲突;
- 方便依赖性管理;
- 提高代码的维护性和可读性;
- 代码解耦,提高代码复用性;
2: CMD、AMD、CommonJS 规范分别指什么?有哪些应用
- AMD
可以异步加载???,并且会提前加载依赖。
define("alpha", ["require", "exports", "beta"], function (require, exports, beta) {
//??榇? return ??槊?});
有三个参数,分别是:本??榈拿?、依赖模块数组、依赖模块传入使用。
- CommonJS
使用require方法加载模块,通过module.exports来导出接口。Node.js采用这个规范。
//myModel.js
function printName(){
console.log(name);
}
module.exports = { // 导出接口
printName: printName,
}
//加载模块
var nameModule = require('./myModel.js');
nameModule.printName(); //myModel.js里的方法
加载??槭峭降?,只有加载完成后才能执行后面的操作。
- CMD
就近加载依赖。
define(function(require, exports, module) {
// 模块代码
});
- AMD与CMD的区别:
AMD推崇依赖前置,在定义??榈氖焙蚓鸵髌湟览档哪??。
CMD推崇就近依赖,只有在用到某个模块的时候再去require。
//AMD 必须一开始就声明依赖??? define("alpha", ["require", "exports", "beta"], function (require, exports, beta) {
//??榇? });
//CMD
define(function(require, exports, module) {
// ??榇? //100行代码后,需要某个???。
var alpha = require('./alpha') //就近加载
});
3.requirejs的使用
- www/
- index.html
- js/
app/ 页面的js模块
sub.js
- lib/ 第三方库 如jq
jquery.js
canvas.js
- app.js 页面入口配置文件
在index.html中:
<script data-main="js/app.js" src="js/require.js"></script>
先加载require.js完成后,然后再加载app.js页面入口配置文件
requirejs.config({
baseUrl: 'js/lib', 基本路径
paths: { 路径缩写
app: '../app'
}
});
require(app/index.js)
详细的使用可以直接参考 requirejs文档,包括使用r.js打包压缩。
在r.js中,mian.js路径是相对于index.html,而build.js是相对于自己的位置,所以在写 baseUrl有所不同。
4: 使用 requirejs 完善入门任务15,包括如下功能:
实战task15-2