0

我开始开发一个 Titanium 应用程序,它是内容和数据调用密集型应用程序。

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

谢谢

4

1 回答 1

2

我使用了我想出的 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} )
}

这样,您就可以拉动刷新、计时器等,并且只有在数据发生更改时,您才能将其提升到所有受影响的视图

于 2012-08-10T17:27:09.067 回答