seajs中模塊依賴的加載處理實例分析
本文實例講述了seajs中模塊依賴的加載處理。分享給大家供大家參考,具體如下:
最近在做項目的時候發(fā)現(xiàn)一些關于模塊依賴問題,特記錄下:
比如現(xiàn)有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... })
比如執(zhí)行init.js時,init.js、jquery.plugA.js、jquery.plugB.js都會依賴到jquery,那么這種情況下seajs對jquery如何處理的呢?只執(zhí)行一次?執(zhí)行多次?還是其他方式?
此處參考玉伯的回答:
我對模塊調用的理解是,調用是指獲取某個模塊的接口。在 SeaJS 里,只有 seajs.use, require.async, 和 require 會產生模塊調用,比如: var a = require('./a')
在執(zhí)行 require(‘./a') 時,會獲取模塊的接口,如果是第一次調用,會初始化模塊 a,以后再調用時,直接返回模塊 a 的接口; define 只是注冊模塊信息,比如打包之后:define(id, deps, factory)
是注冊了一個模塊到 seajs.cache 中,define 類似:seajs.cache[id] = { id: id, dependencies: deps, factory: factory }
是純注冊信息。
而 require('./a')
時,才會執(zhí)行 seajs.cache['a'].factory
, 執(zhí)行后得到 seajs.cache['a'].exports
擴展:URI與URL的區(qū)別
URI:Uniform Resource Identifiers ,統(tǒng)一資源標識符;
URL:Uniform Resource Locators ,統(tǒng)一資源定位符;
URN:Uniform Resource Names,統(tǒng)一資源名稱
URL,URN是URI的子集.
參考
Module.STATUS的具體含義:https://github.com/seajs/seajs/issues/303
分清 URI、URL 和 URNhttp://www.ibm.com/developerworks/cn/xml/x-urlni.html
更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript擴展技巧總結》、《JavaScript字符與字符串操作技巧總結》、《JavaScript數(shù)學運算用法總結》、《JavaScript中json操作技巧總結》、《JavaScript錯誤與調試技巧總結》及《JavaScript數(shù)據結構與算法技巧總結》
希望本文所述對大家JavaScript程序設計有所幫助。
相關文章
seaJs使用心得之exports與module.exports的區(qū)別實例分析
這篇文章主要介紹了seaJs使用心得之exports與module.exports的區(qū)別,結合實例形式分析了exports與module.exports具體功能、使用方法及相關操作注意事項,需要的朋友可以參考下2017-10-10Seajs 簡易文檔 提供簡單、極致的模塊化開發(fā)體驗
這篇文章主要介紹了Seajs 簡易文檔 提供簡單、極致的模塊化開發(fā)體驗,非官方文檔,整理來自己官方文檔的文字與實例,方便速查。需要的朋友可以參考下2016-04-04