イントロ
私は現在、非常に標準的なDjangoベースのアプリ(基本的には派手なCRM /連絡先リストのようなもの)を書いています。これは一種の機能ですが、(jQueryを使用して)ますます多くのAJAXy UIコードを使用してインターフェイスを改善しようとすると、作業が非常に困難になり始めています。DOMを解析し、変更をサーバーにプッシュして戻し、JSONを取得し、それに基づいてDOMを更新しようとする、壊れやすいjQueryイベントハンドラーの長いブロックを取得しています。
少なくとも、クライアント側のテンプレートをいくつかミックスに追加したいと思います。または、JSフレームワークに切り替えて、Djangoアプリをデータベース抽象化レイヤーとして使用することもできます。または、Pythonを知っていて大好きですが、Djangoアプリを放棄して、JS/Node.jsソリューションなどを試してみることができます。
他の誰かがこの状況にありましたか?どのようにそれを解決しましたか?
設計目標
- DRY:モデルやテンプレートを複製する必要はありません(少なくとも、必要以上に複製する必要はありません)。
- ページにアクセスした訪問者に、サーバー側でレンダリングされた結果を取得してもらいたい。
- 訪問者が物事をクリックすると、クライアント側のテンプレートとレンダリングを介してそれを処理し、RESTインターフェイスへのAJAX呼び出しを介してサーバーを最新の状態に保ちたいと思います。
だから...どうすればこれを行うことができますか?いくつかのフレームワークとテンプレートシステムへのリンクを集めました。順不同:
dust.js:
これは、LinkedInが同様の問題を解決するために使用しているようです。サーバー側でNode.jsを使用しますが、これは理想的ではありません(Nodeを使用したことはありません)が、少なくともJVMベースではありません。また、githubでは休止しているようです-メンテナがどこに行ったのか疑問に思っているメーリングリストを見つけました。それはかなり良いように聞こえます-LinkedInからのブログ投稿は、テクノロジー、特にそれをコンパイルする機能を売るのに良い仕事をしています。しかし、それはただテンプレートを作成しているように見えます。私が欲しいものにはそれで十分ですか?
口ひげ:
このオプションにはPythonとJSの両方の実装があり、人気があるようです...しかし、DjangoでMustacheテンプレートを使用しているように見える人は見つかりません。それは、ブログ投稿に値するのは簡単すぎるからですか、それとも不可能であるか、そうでなければお勧めできませんか?また、かなり制限されています。少なくとも、ある種のMVCJSフレームワークに目を向ける必要があるでしょう。
バックボーン、スパイン、KnockoutJS、EmberJS、JavascriptMVCなど:
非常に多くのフレームワークがあり、それは一種の気が遠くなるようなものです。それらのすべては一見完全に良いように見えます。また、このルートに行った場合、アプリの多くを書き直す必要があるようです。実際にこのようなことをすでに行っている人を本当に見つけたいと思います。また、Djangoから来た人を背景として明確な選択肢があればいいのにと思います。それらを評価するために、半ダースの異なるフレームワークを学ぶ必要はありません。
DerbyJS
これは、クライアント側とサーバー側の両方を1つのパッケージで処理するため、面白そうに見えますが、少し未成熟です。彼らは本番環境でそれを使用することに対して警告します、そして私がドキュメントを理解するならば、それはまだどんな形の永続性もサポートしていません、それは...制限しています。完成すれば自分の欲しいものにピッタリな気がしますが…
それで....
だから、ええと...今何?誰かがこれらのツールのいずれかを使用して、クライアント側のレンダリングをDjango Webアプリに追加しようとしたことがありますか?どうだった?