Titanium TiMVC功能扩展:添加第三方类库的使用
创始人
2024-08-22 11:21:08
0

现在我介绍的就是如何自己添加需要的配置,如本篇将介绍的是如何方便地将第三方类库整合到此框架中使用,最终目的是只需在config里添加一个新的类库名称就可以自动加载,然后在框架的控制器、视图和模块里任意调用 :cool: 

先看看我们最终要实现的效果,如我要添加一个 underscore.js 和 redux.js 2个类库到框架中,那么只需在配置里添加以下代码:

  1. /** 
  2. * Vendor folder path 
  3. * @type String 
  4. */ 
  5. vendorPath : "mvc/vendor/", 
  6.  
  7. /** 
  8. * Load vendor 
  9. * @type array 
  10. */ 
  11. loadVendor : [{ 
  12.      name : "underscore" 
  13. },{ 
  14.      name : "redux" 
  15. }], 

 以上我将第三方类库都放到 mvc/vendor目录下,然后要将2个类库引用到项目中,这时只需填写类库文件名即可,这样配置的话就可以非常方便地引入不同的类库了 :biggrin: 。接下来就看看如何实现吧:

要实现以上配置,就需要修改核心文件 core/timvc.js ,其实只需在此文件里添加以下代码:

  1. /** 
  2.     * Load vendor from file by name 
  3.     * @param {String} name vendor name based on vendor path in config (usally /mvc/vendor) 
  4.     * @returns boolean with load status 
  5.     */ 
  6.    this.loadVendor = function(name) { 
  7.        if(name == null) { 
  8.            //load all vendor with config 
  9.            for(var i = 0, v = self.config.loadVendor.length; i < v; i++) { 
  10.                var path = self.config.vendorPath + self.config.loadVendor[i].name + ".js"; 
  11.                self.debug('path:' + path); 
  12.                var r = self.includeFile(path); 
  13.                if(!r) 
  14.                    return false; 
  15.            } 
  16.        } else { 
  17.            //load vendor by name 
  18.            var path = self.config.vendorPath + name + ".js"; 
  19.            var r = self.includeFile(path); 
  20.        } 
  21.        return true; 
  22.    } 

以上方法就是加载配置目录中所需要的类库文件,代码很简单,我就不多说了 :tongue: ,***一步就是将此方法放到 components/controller.js 的 setApp 方法里调用就可以了,因为这个 setApp 方法是所有页面加载前调用的,至于为什么要放到 controller而不直接放到 timvc.js 里的 _init,这个是因为每当新的页面或者控制器加载时,其应该都是独立运行的,如果放到 timvc.js 里的话,就只有项目启动时才加载一次,如果跳到另一个页面的话,就会失效了,因此放到所有 controller的父页面,让所有都继承它就能保证让所有页面都能生效。以下是具体代码:

  1. /** 
  2. * Set Appliation Class Reference 
  3. * @param {TiMVC} set main app TiMVC class refernce used by TiMVC 
  4. */ 
  5. this.setApp = function(a){ 
  6.     self.App = a; 
  7.     self.App.loadVendor(); 

OK,至此就完成了,然后你就可以直接在项目中使用类库的代码了 :biggrin:

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...