Titanium TiMVC功能擴展:添加第三方類庫的使用
現(xiàn)在我介紹的就是如何自己添加需要的配置,如本篇將介紹的是如何方便地將第三方類庫整合到此框架中使用,最終目的是只需在config里添加一個新的類庫名稱就可以自動加載,然后在框架的控制器、視圖和模塊里任意調(diào)用
先看看我們最終要實現(xiàn)的效果,如我要添加一個 underscore.js 和 redux.js 2個類庫到框架中,那么只需在配置里添加以下代碼:
- /**
- * Vendor folder path
- * @type String
- */
- vendorPath : "mvc/vendor/",
- /**
- * Load vendor
- * @type array
- */
- loadVendor : [{
- name : "underscore"
- },{
- name : "redux"
- }],
以上我將第三方類庫都放到 mvc/vendor目錄下,然后要將2個類庫引用到項目中,這時只需填寫類庫文件名即可,這樣配置的話就可以非常方便地引入不同的類庫了 。接下來就看看如何實現(xiàn)吧:
要實現(xiàn)以上配置,就需要修改核心文件 core/timvc.js ,其實只需在此文件里添加以下代碼:
- /**
- * Load vendor from file by name
- * @param {String} name vendor name based on vendor path in config (usally /mvc/vendor)
- * @returns boolean with load status
- */
- this.loadVendor = function(name) {
- if(name == null) {
- //load all vendor with config
- for(var i = 0, v = self.config.loadVendor.length; i < v; i++) {
- var path = self.config.vendorPath + self.config.loadVendor[i].name + ".js";
- self.debug('path:' + path);
- var r = self.includeFile(path);
- if(!r)
- return false;
- }
- } else {
- //load vendor by name
- var path = self.config.vendorPath + name + ".js";
- var r = self.includeFile(path);
- }
- return true;
- }
以上方法就是加載配置目錄中所需要的類庫文件,代碼很簡單,我就不多說了 ,***一步就是將此方法放到 components/controller.js 的 setApp 方法里調(diào)用就可以了,因為這個 setApp 方法是所有頁面加載前調(diào)用的,至于為什么要放到 controller而不直接放到 timvc.js 里的 _init,這個是因為每當新的頁面或者控制器加載時,其應該都是獨立運行的,如果放到 timvc.js 里的話,就只有項目啟動時才加載一次,如果跳到另一個頁面的話,就會失效了,因此放到所有 controller的父頁面,讓所有都繼承它就能保證讓所有頁面都能生效。以下是具體代碼:
- /**
- * Set Appliation Class Reference
- * @param {TiMVC} set main app TiMVC class refernce used by TiMVC
- */
- this.setApp = function(a){
- self.App = a;
- self.App.loadVendor();
- }
OK,至此就完成了,然后你就可以直接在項目中使用類庫的代碼了