模塊化

 一、什麼是模塊化  
模塊化開發 ,能夠一次性引入多個模塊文件 ,同時也沒有引入的順序 
require.js加載的模塊,採用AMD規範。也就是說,模塊必須按照AMD的規定來寫。
具體來講,就是模塊必須採用特定的define()函數來定義。若是一個模塊不依賴其餘模塊,那麼能夠直接定義在define()數之中。
 
引入時:須要注意 引入順序    頻繁引入
jquery.js
cookie.js 
ajax.js
public.js
 
 
二、如何實現模塊化開發(以requirejs來講)
 
第一步:
     在頁面中引入:<script src="require.js" data-main="main"></script>
                 data-main的值是一個入口文件   main 實際上就是 main.js
第二步: 入口函數實現:
 
     經過cinfig方法爲模塊指定別名
requirejs.config({  //爲引入的模塊指定別名
     paths:{
           jquery:"jquery-1.11.1.min"   //爲jquery庫文件指定一個別名,方便後期調用
     }
})
第三步: 經過requirejs方法將寫好的模塊引入,並根據他們編寫子代碼
三、requirejs模塊化開發經常使用的方法
 
①requirejs.config爲模塊指定別名,方便模塊的引用
 
②requirejs將寫好的模塊引入,並根據他們編寫子代碼
有兩個參數
第一個參數是一個數組:引入的每一個模塊名稱,
第二個參數是一個回調函數,函數中就是頁面要實現某個功能的子代碼
 
③define用它編寫模塊(功能),在相應的地方進行引入
有兩個參數
第一個參數是該模塊要依賴的其它模塊,是一個數組  (能夠省略)
第二個參數是一個回調函數  函數中實現該模塊的功能
 
四、關於requirejs(模塊化開發)好處
 
①整個項目中通常不會出現全局變量(防止全局變量的污染)
②整個項目中全部模塊的項目加載順序不固定(順序任意)
③整個項目中模塊之間的執行是異步的
④整個項目實現代碼均是面向對象的書寫方式,便於模塊的管理和維護
 
五、關於AMD
 
AMD:  requirejs所倡導的就是AMD開發方式
     是"Asynchronous Module Definition"的縮寫,意思就是"異步模塊定義"。它採用異步方式加載模塊,模塊的加載不影響它後面語句的運行。全部依賴這個模塊的語句,都定義在一個回調函數中,等到加載完成以後,這個回調函數纔會運行。
AMD推崇的是依賴前置
 
CMD seajs模塊化  推崇的是依賴就近
 
es5在AMD中引入子模塊 : require()  例如gulp中插件的引入問題
 
六、es6的模塊化 : 
 
import 和 export模塊 
    • export :負責進行模塊化,也是模塊的輸出。
    • import : 負責把模塊引入,也是模塊的引入操做。
將es6轉成es5須要經過 gulp-babel 插件完成    (babel配置過程)
 (此時運行:babel  src/index.js –o dist/index.js  )
 
npm install  -g babel-cli   全局安裝babel     打開cmd直接安裝
npm install --save-dev  babel-preset-es2015  babel-cli      本地gulp項目下安裝babel
項目目錄建立文件,新建-自定義文件:      .babelrc ,輸入代碼:
{
      "presets":[
           "es2015"
],
"plugins":[]
}
,再次運行  babel  src/index.js –o dist/index.js   ,就能夠正常的將es6代碼轉成es5了
 
export 多變量定義 : 
 
var a = 9
 
var b = 8
 
var c = 90
 
export{ a,b,c }    起別名用  as
 
執行 import 導入的內容 : 
import {name} from "./temp.js";
 
babel-node  src2/xx.js
 
 
七、模塊化
requireJs     seaJS       CommonJS      ES6 module
   異步           異步             同步                  同步
AMD            CMD           common             import
 
8.模塊化規範
如何導出模塊 如何接收模塊?
define定義  return導出   require接收(requireJs )
 
module.exports 導出   require 導入(commonJS)
 
export default 導出    import 導入 (ES6 module)
相關文章
相關標籤/搜索