私は、コンテンツとデータ呼び出しを多用するアプリケーションである Titanium アプリケーションの作業を開始しました。
このようなアプリケーションを構築する際に従うべきベスト プラクティスに関するガイダンスが必要です。私はcommonJSのアプローチをよく知っています。Appcelerator でのメモリ/キャッシュの問題を制限または排除するためのコーディングのベスト プラクティスを知りたいです。これらの問題にどのようにアプローチまたは対処しますか?
ありがとう
私は、コンテンツとデータ呼び出しを多用するアプリケーションである Titanium アプリケーションの作業を開始しました。
このようなアプリケーションを構築する際に従うべきベスト プラクティスに関するガイダンスが必要です。私はcommonJSのアプローチをよく知っています。Appcelerator でのメモリ/キャッシュの問題を制限または排除するためのコーディングのベスト プラクティスを知りたいです。これらの問題にどのようにアプローチまたは対処しますか?
ありがとう
私が思いついた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、タイマーなどをプルすることができ、データが変更された場合にのみ、影響を受けるすべてのビューに昇格できます