Web用のデスクトップのようなアプリを作成するには、どのフレームワークをお勧めしますか? [閉まっている]
-
02-07-2019 - |
質問
解決
これらの高レベルのフレームワークが多くのより大きな(例:自明ではない)アプリケーションに引き起こす速度の問題のため、単純なjQueryのみを使用します。テストでは、ドラッグ可能なオブジェクトまたはドロップターゲットが多数ある状況、および画面に長いリスト(> 1000エントリ)が表示された状況で、すべての高レベルフレームワークが故障しました。
一部はIE6およびIE7の問題によるものです(DOMツリーが特定の複雑さに達すると、パフォーマンスが急激に低下し始めます)が、一部はこれらのフレームワークが生成するオーバーヘッドによるものです。
したがって、高レベルのフレームワークはお勧めしません。私の推奨事項は、jQueryを使用してDOMを直接操作することです。
パフォーマンスを改善するためのヒント:
- 可能であれば、HTMLを サーバー。
- HTMLはできるだけシンプルに 可能です。
- 多くの要素を避ける DOMツリーで。
- 再帰を避ける テーブル構造(IEが突然停止する 比較的少数の後にそれらを示す ネストのレベル)。
- 非表示の削除 DOMツリーの要素。
- 削除 以前のDOMツリーからのもの それらを変更してから再挿入 それらを変更するのではなく、 ツリーにいる間。
他のヒント
私の観点からすると、カプチーノは禁止事項の例です。彼らはJavaScriptの上に別の言語を実装しましたが、ブラウザ開発者がすでに懸命に戦っている間はすでに遅さをもたらし、最悪の場合、ブラウザウィジェットにまったく依存せず、すべてのユーザーナビゲーションエクスペリエンスを壊しています。たとえば、独自のスクロールバーを実装しましたが、マウスホイールを使用しても動作しなくなるという主な欠点がありました!
ブラウザからUIを可能な限り近く保ちながら、リッチなウィジェットを提供するExtJSのアプローチが本当に好きです。
私も、ギズモとして、EXT JSを推奨しています。彼らのライセンスは変更されており、すべてのために機能しないかもしれませんが、デスクトップのようなものをしたい場合、それはまだ良い選択です。
デスクトップ環境のサンプルページは次のとおりです。 http:// extjs。 com / deploy / dev / examples / desktop / desktop.html
Appleは、sproutcoreが機能することを実証していますが、sproutcoreの機能を推定するのは困難です。現在、私は独自のライブラリセットを使用してWebアプリを構築し、Windowsソフトウェアスイートの機能セットを複製しています(ただし、Webインターフェイスに適合しています)。これまで、特に肥大化を望まないという理由で、フレームワークを避けてきました。このアプローチの問題は、既にフレームワークにある機能を複製するのに膨大な時間を浪費することであり、時間の経過とともにこれらのフレームワークに似たものに近づくと感じています。
このため、extjsでWebアプリを実装する実験をしてきましたが、驚くほど素晴らしい経験でした。パフォーマンスは優れており、コンポーネントセットは、高度なデモ(Webツールキットの一般的な問題)だけでなく、実際にアプリを構築するのに適しているため、開発が非常に簡単です。デスクトップのようなWebアプリの構築に興味がある場合は、絶対にお勧めします。
スケールアップの問題は明らかに適用されますが、正直なところ、スケールがそれほど重要ではない状況でツールキットを使用し、必要な場合にのみ基本的なJavaScriptにフォールバックする方が良いと感じています(早すぎる最適化はすべての悪の根源)。 Extjsはプロトタイプまたはjqueryの上に重ねることができるため、このアプローチは間違いなく実行可能です。通常、DOMのコンテンツを過剰に避けることは、オンデマンドでロードおよびアンロードするアプローチです。たとえば、extjsグリッドクラスにはサードパーティの拡張機能があり、データのロードとアンロードについて賢明であることにより、100万行のデータセットをスクロールできます。
GWT-Ext (下のExtを使用)の使用を検討することもできますJavaを使用する場合は、非常にクリーンなソリューションです。
qooxdoo が好きですが、プロトタイプではなくJSのOOPアプローチを採用していますが、堅牢なフレームワークであり、多くの機能があります。
SproutCoreやCapuccinoの経験はありません。しかし、この種の作業のためにDjangoの上でDojoを使用しようと試みました。遅くてバグがあるとしか言えません。
extjsは役に立つかもしれません。 http://dev.extjs.com/deploy/dev/examples/