Titanium中的内容和数据呼叫密集型应用程序

时间:2012-08-10 06:26:22

标签: javascript titanium appcelerator titanium-mobile appcelerator-mobile

我开始研究Titanium应用程序,它是内容和数据呼叫密集型应用程序。

我需要一些关于构建此类应用程序时应遵循的最佳实践的指导。 我非常清楚commonJS方法。我想知道最佳实践编码,以限制或消除Appcelerator中的内存/缓存问题。如何处理或处理这些问题?

由于

1 个答案:

答案 0 :(得分:2)

我使用了MVC和M V VM的混合体我想出了:

MVC适用于redirectint yoursite / user的网址,并将用户作为参数。因此,控制器是应用程序的入口点。

在.net的MVVM模式中,View是应用程序的入口点。查看请求ViewModel(将事件连接到UI)和ViewModel请求到Business(Model)。最后,当达到数据时,数据通过事件冒泡“反映”。这听起来很麻烦,但实际上并非

使用相同的方法我使用以下

UI> C> B>技术>网络

在控制器上我会嫌事件,在Tech中触发它们。

“Tech”抽象所有技术(SQLite,JSON,Ti.App.Properties等)

企业了解实体和图标,但没有技术方面

getIcon('Badge'){ tech.getIcon('Badge') } )

在技术方面,我们可以拥有像var

这样的词典
getIcon(icon)
{
    var Icon = { 
            'Badge': 'src/cfg/img/badge.png' 
        }  

    return Icon[icon]
}

所以控制器看起来像:

oTable = ui.TableEmployees() // our custom made TableView at 'ui.js'
Ti.App.addEventListener( 'EmployeesUpdated', function(e){ oTable.data = e.data } )

最后,每当我需要更新信息时,我都会去

business.refreshEntity('Employees')

业务访问技术

tech = require('src/tech')
refreshEntity(entity){ tech.refreshEntity(entity) }

终于在科技

refreshEntity(entity)
{
    HTTPClient = new Ti.Network.HTTPClient( { onload:..., onerror:... } )
    HTTPClient.send()
    data = transform(response)
    if (data != cachedData)
        Ti.App.fireEvent( 'EmployeesUpdated', {data: data} )
}

通过这种方式,您可以使用刷新计时器,计时器等,并且只有在数据发生变化时才将其提升为所有受影响的视图