0

私は、コンテンツとデータ呼び出しを多用するアプリケーションである Titanium アプリケーションの作業を開始しました。

このようなアプリケーションを構築する際に従うべきベスト プラクティスに関するガイダンスが必要です。私はcommonJSのアプローチをよく知っています。Appcelerator でのメモリ/キャッシュの問題を制限または排除するためのコーディングのベスト プラクティスを知りたいです。これらの問題にどのようにアプローチまたは対処しますか?

ありがとう

4

1 に答える 1

2

私が思いついたMVCとMV VMのハイブリッドを使用します:

MVC は、redirectint yoursite/user の Web URL に適していて、ユーザーをパラメーターとして使用します。したがって、コントローラはアプリケーションのエントリ ポイントです。

.net の MVVM パターンでは、ビューはアプリケーションのエントリ ポイントです。View リクエスト ViewModel (イベントを UI に接続) および ViewModel リクエストを Business (モデル) に送信します。最終的にデータに到達すると、データはイベント バブリングを通じて「反映」されます。これは面倒に聞こえますが、実際にはそうではありません

同じアプローチを使用して、次を使用します

UI > C > B > テクノロジー > インターネット

Controller ではイベントをサブスクライブし、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} )
}

そうすれば、refresh-es、タイマーなどをプルすることができ、データが変更された場合にのみ、影響を受けるすべてのビューに昇格できます

于 2012-08-10T17:27:09.067 に答える