本文實例講述了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
擴展:URI與URL的區別
URI:Uniform Resource Identifiers ,統一資源標識符;
URL:Uniform Resource Locators ,統一資源定位符;
URN:Uniform Resource Names,統一資源名稱
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數學運算用法總結》、《JavaScript中json操作技巧總結》、《JavaScript錯誤與調試技巧總結》及《JavaScript數據結構與算法技巧總結》
希望本文所述對大家JavaScript程序設計有所幫助。
新聞熱點
疑難解答