為什么要使用模塊化?
最主要的目的:
- 解決命名沖突
- 依賴管理
其他價值:
- 提高代碼可讀性
- 代碼解耦,提高復用性
CMD、AMD、CommonJS 規范分別指什么?有哪些應用
-
CMD規范:
CMD 即Common Module Definition
通用模塊定義,CMD規范是國內發展出來的,就像AMD有個requireJS,CMD有個瀏覽器的實現SeaJS
,SeaJS要解決的問題和requireJS一樣,只不過在模塊定義方式和模塊加載(可以說運行、解析)時機上有所不同。// 定義模塊 myModule.js
define(function(require, exports, module) {
var $ = require('jquery.js')
$('div').addClass('active');
});// 加載模塊
seajs.use(['myModule.js'], function(my){});
-
AMD規范:
AMD 即Asynchronous Module Definition
,中文名是異步模塊定義
的意思。它是一個在瀏覽器端模塊化開發的規范;
由于不是JavaScript原生支持,使用AMD規范進行頁面開發需要用到對應的庫函數,也就是大名鼎鼎RequireJS,實際上AMD 是RequireJS
在推廣過程中對模塊定義的規范化的產出。// 定義模塊 myModule.js define(['dependency'], function(){ var name = 'Byron'; function printName(){ console.log(name); } return { printName: printName }; });
// 加載模塊
require(['myModule'], function (my){
my.printName(); }); -
CommonJS規范:
1、
定義模塊
:根據CommonJS規范,一個單獨的文件就是一個模塊。每一個模塊都是一個單獨的作用域,也就是說,在該模塊內部定義的變量,無法被其他模塊讀取,除非定義為global對象的屬性
2、模塊輸出
: 模塊只有一個出口,module.exports對象,我們需要把模塊希望輸出的內容放入該對象
3、加載模塊
: 加載模塊使用require方法,該方法讀取一個文件并執行,返回文件內部的module.exports
對象//模塊定義 myModel.js var name = 'Byron'; function printName(){ console.log(name); } function printFullName(firstName){ console.log(firstName + name); } module.exports = { printName: printName, printFullName: printFullName } //加載模塊 var nameModule = require('./myModel.js'); nameModule.printName();
使用 requirejs 完善入門任務15,包括如下功能:
1. 首屏大圖為全屏輪播
2. 有回到頂部功能
3. 圖片區使用瀑布流布局(圖片高度不一),下部有加載更多按鈕,點擊加載更多會 加載更多數據(數據在后端 mock)
4(可選). 使用 r.js 打包應用
代碼: https://github.com/nciilin/trsk/tree/master/%E9%AB%98%E7%BA%A74