本文主要介紹了seajs中模組依賴的加載處理,結合實例形式分析了seajs模組依賴與加載的原理、相關注意事項與使用方法,需要的朋友可以參考下,希望能幫助到大家。
最近在做專案的時候發現一些關於模組依賴問題,特記錄下:
例如現有3個檔案:
/*init.js*/ define(function(require, exports, module){ require('jquery'); require('jquery.plugA'); }) /*jquery.plugA.js*/ define(function(require, exports, module){ require('jquery'); require('jquery.plugB'); //code... }) /*jquery.plugB.js*/ define(functioin(require, exports, module){ require('jquery'); //code... })
例如執行init.js時, init.js、jquery.plugA.js、jquery.plugB.js都會依賴到jquery,那麼這種情況下seajs對jquery如何處理的呢?只執行一次?執行多次?還是其他方式?
這裡參考玉伯的回答:
我對模組呼叫的理解是,呼叫是指取得某個模組的介面。在SeaJS 裡,只有seajs.use, require.async, 和require 會產生模組調用,例如: var a = require('./a') 在執行require('./a') 時,會取得模組的接口,如果是第一次調用,會初始化模組a,以後再調用時,直接返回模組a 的接口; define 只是註冊模組信息,比如打包之後:define(id, deps, factory) 是註冊了一個模組到seajs .cache 中,define 類似:seajs.cache[id] = { id: id, dependencies: deps, factory: factory }
是純註冊資訊。
而require('./a') 時,才會執行seajs.cache['a'].factory, 執行後得到seajs.cache['a'].exports
相關推薦:
以上是seajs中模組依賴載入處理實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!