CMD規範說明javascript
專門用於瀏覽器端, 模塊的加載是異步的 ,模塊使用時纔會加載執行,github地址html
CMD基本語法java
定義暴露模塊git
//定義有依賴的模塊 define(function(require, exports, module){ //引入依賴模塊(同步) var module2 = require('./module2') //引入依賴模塊(異步) require.async('./module3', function (m3) { }) //暴露模塊 exports.xxx = value })
引入使用模塊github
define(function (require) { var m1 = require('./module1') var m4 = require('./module4') m1.show() m4.show() })
CMD規範的實現(瀏覽器端)瀏覽器
CMD規範須要用到sea.js,下載sea.js, 並引入,將sea.js導入項目: js/libs/sea.js異步
建立項目結構async
|-js |-libs |-sea.js |-modules |-module1.js |-module2.js |-module3.js |-module4.js |-main.js |-index.html
定義sea.js的模塊代碼:module1.js函數
define(function (require, exports, module) { //內部變量數據 var data = 'atguigu.com' //內部函數 function show() { console.log('module1 show() ' + data) } //向外暴露 exports.show = show })
定義sea.js的模塊代碼:module2.jsui
define(function (require, exports, module) { module.exports = { msg: 'I Will Back' } })
定義sea.js的模塊代碼:module3.js
define(function (require, exports, module) { const API_KEY = 'abc123' exports.API_KEY = API_KEY })
定義sea.js的模塊代碼:module4.js
define(function (require, exports, module) { //引入依賴模塊(同步) var module2 = require('./module2') function show() { console.log('module4 show() ' + module2.msg) } exports.show = show //引入依賴模塊(異步),最後執行,由於是異步的,主線的先執行完纔會執行這 require.async('./module3', function (m3) { console.log('異步引入依賴模塊3 ' + m3.API_KEY) }) })
main.js : 主(入口)模塊
define(function (require) { var m1 = require('./module1') var m4 = require('./module4') m1.show() m4.show() })
如何使用模塊
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script type="text/javascript" src="js/libs/sea.js"></script> <script type="text/javascript"> seajs.use('./js/modules/main') </script> </body> </html>