titanium编程最佳实践

appcelerator认可的移动开发标准是在titanium开发跨平台指定单上下文,模块化,好的结构化代码,好的有组织的资源管理。通过遵循这些标准,开发人员将创建应用程序,满足前面的清单的稳定、快速、高效、可读的。

 

 

javacript和一般建议

 

避免全局作用域

把对象放到全局作用域有出现各种各样的问题!

  • 对象放在全局作用域将不能自动执行垃圾回收,你必须自己手动把全局对象设为null,标记他们准备回收。
  • 它很容易就会覆盖一个对象在全局作用域内,因为该变量是在程序里到到处可以访问。
  • 在app.js里的全局对象在其他上下文或者在CommonJS模块里是不容易访问得到的。你不能只是转储变量,所以你可以在你的应用程序访问它们。

避免在全局作用域里定义变量。如果非要在全局作用域里定义变量,可在以下情况考虑:

  • 你声明一个变量在CommonJS之外的函数或模块。使用模块化模式将缓解这个问题。
  • 省略了var关键字在声明变量(内部或外部的一个函数)。所以总是使用var当声明变量。

 

避免声明局部对象在全局作用域里的事件监听器

下面的代码将会导致内存泄漏,因为局部作用域的变量中引用一个全局事件侦听器。这是因为该程序将需要保留本地范围var为了全球事件监听器来使用它们。全球事件监听器也会一直持续,直到应用程序退出或侦听器是显式地删除。

 

var someFunction = function() {
    var table = Ti.UI.createTableView(),
        label = Ti.UI.createLabel(),
        view = Ti.UI.createView();


    Ti.App.addEventListener('bad:move', function(e) {
        table.setData(e.data);
    });

    view.add(table);
    view.add(label);

    return view;
};

 

 

全局事件监听器包括那些与Ti.App、Ti.Geolocation、Ti.Gesture等等。同样的问题是可能的和非全局事件监听器,就像那些你联想到一个UI元素。如果UI元素仍然是有效的在内存中,任何事件监听器——和对象引用,也必须保存在内存中。

上面的例子是一个反模式,最终消费应用程序的可用内存。重要的是要注意,这是一个常见的反模式,开发人员使用基于浏览器的环境ti,它会导致同样的结果,所以这不是独特的ti。

 

如果你需要一个定制事件,考虑一个方法/回调,你可以稍后调用。对全球事件(如位置、网络变化等等,这是强烈建议将它们放在app js。这个一般的经验法则是全球事件处理全局对象。

 

 

延迟脚本加载

瓶颈之一的ti应用程序是JavaScript评价。这是特别为Android的案例,尽管V8的运行时提供了大量的改进,这个问题与犀牛。出于这个原因,来加快应用程序的启动和响应能力,你应该避免加载脚本,直到他们是绝对需要的。如以下应用程序,其中包含有三个窗口是打开纷纷在点击(触摸)事件中,注意,依赖JavaScript为每个窗口是不会加载到绝对必要。

 

转载于:https://www.cnblogs.com/xiaozhanga4/archive/2012/10/06/2712918.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值