我开始开发一个 Titanium 应用程序,它是内容和数据调用密集型应用程序。
我需要一些关于构建此类应用程序时要遵循的最佳实践的指导。我非常了解 commonJS 方法。我想知道最佳实践编码来限制或消除 Appcelerator 中的内存/缓存问题。如何处理或处理这些问题?
谢谢
我开始开发一个 Titanium 应用程序,它是内容和数据调用密集型应用程序。
我需要一些关于构建此类应用程序时要遵循的最佳实践的指导。我非常了解 commonJS 方法。我想知道最佳实践编码来限制或消除 Appcelerator 中的内存/缓存问题。如何处理或处理这些问题?
谢谢
我使用了我想出的 MVC 和 MV VM 的混合体:
MVC 适合用于重定向您的站点/用户的 Web URL,并将用户作为参数。因此,控制器是应用程序的入口点。
在 .net 的 MVVM 模式中,视图是应用程序的入口点。View 请求 ViewModel(将事件连接到 UI)和 ViewModel 请求到业务(模型)。最后,当到达数据时,通过事件冒泡“反映”数据。这听起来很麻烦,但实际上不是
使用相同的方法,我使用以下
UI > C > B > 技术 > 互联网
在控制器上我订阅了事件,在技术中我触发了它们。
其中“技术”抽象了所有技术(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} )
}
这样,您就可以拉动刷新、计时器等,并且只有在数据发生更改时,您才能将其提升到所有受影响的视图