我开始研究Titanium应用程序,它是内容和数据呼叫密集型应用程序。
我需要一些关于构建此类应用程序时应遵循的最佳实践的指导。 我非常清楚commonJS方法。我想知道最佳实践编码,以限制或消除Appcelerator中的内存/缓存问题。如何处理或处理这些问题?
由于
答案 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} )
}
通过这种方式,您可以使用刷新计时器,计时器等,并且只有在数据发生变化时才将其提升为所有受影响的视图