0

デスクトップのような感覚を持たせたい小さなWebアプリに取り組んでいます。アプリケーションはバックエンドでpythonを使用し、Web側では(jqueryなどの上に)手動でコーディングされたjavascriptを使用します。私は2つの間を行き来したいいくつかのオブジェクトを持っており、人々がこの問題にどのようにアプローチしているか疑問に思いました。例として、オブジェクトとして扱う「フィルター」があります。

filter: { 
   name:'genericGeneFilter', 
   type:'geneFilter',
   symbol:'ExampleSymbol',
   includeExclude:'include'}

人々はどのように次のことをしますか:

  1. クラスを1か所で定義します(サーバー側とクライアント側の両方が定義を取得できるようにします)
  2. ユーザーインタラクション(フォームフィールド、外観など)を便利に定義します
  3. サーバー/クライアントとの間でデータを渡します。シリアル化されたフォーム、json、gets / posts、またはhtmlを使用しますか?
  4. 前後に渡される「オブジェクト」に関して、クライアントとサーバーの同期を維持します。
4

3 に答える 3

1

ノックアウトを見てください。これは、この種のWeb開発に適したフレームワークであり、動的バインディング、サーバーへのデータの送受信、および自動データモデル同期を使用したユーザーインタラクション用のビューモデルが含まれています。

于 2012-06-18T13:22:14.663 に答える
1

また、 backbonejsを見ることができます

Backbone.jsは、キー値バインディングとカスタムイベントを備えたモデル、列挙可能な関数の豊富なAPIを備えたコレクション、宣言型イベント処理を備えたビューを提供することでWebアプリケーションに構造を提供し、RESTfulJSONインターフェイスを介してすべてを既存のAPIに接続します。

emberjsと呼ばれる別のjsライブラリがあり、backbonejsよりもはるかに多くのことを実行しているようです。

Ember.js(以前のSproutCore 2.0)はJavaScriptフレームワークであり、通常は手作業で行う必要のあるすべての面倒な作業を実行します。すべてのWebアプリに共通するタスクがあります。Ember.jsがこれらのことを行うので、キラー機能とUIの構築に集中できます。これらは、Ember.jsを使用する喜びをもたらす3つの機能です:(1)バインディング、(2)計算されたプロパティ、および(3)自動更新テンプレート。

githubリポジトリで詳細を読む

于 2012-06-18T13:24:27.733 に答える
1
  1. サーバーでnodejsを使用することは、サーバーとクライアントの両方が単一のjsファイルを読み取ることができる場所を私が知る唯一の方法です。モバイルアプリUIインタラクション用のCordovajsライブラリを開発している人々は、クライアント(ブラウザ)とサーバー(ノードjs)の両方でファイルを読み取り可能にするためにrequirejsの構文パターンを回避しています。私のアプリはこのアーキテクチャのさまざまな種類を使用していないため、完全に話すことはできませんが、次のコーディングのアップグレードのためにこの可能性を熟読します。
  2. ユーザーインタラクションを定義することの意味がわかりません。イベントリスナーの場合、試行錯誤(&stackoverflow)により、ブラウザー間およびデバイス間の互換性のためにobject.addEventListener()を使用するようになりました。サーバーへのリモート呼び出しの場合、すべての呼び出しをプロキシするヘルパーメソッドを作成するのが好きです。これは、サーバーから返されたすべての成功メッセージとエラーメッセージを処理する最も簡単な方法だと思います。
  3. エンドユーザー(イントラネットなど)を制御でき、誰もが最新のブラウザーを使用していると合理的に想定できる場合は、XMLHttpRequest()が適切に機能します。そのようなコントロールがなく、古いバージョンのIEをサポートする必要がある場合は、jQuery($ .ajax())などのライブラリを使用することをお勧めします。これはすべて、AJAXデザインパターンを使用することを前提としています。WebSocketはまったく新しいものであり、サーバーに電話をかけるときの応答時間が向上します。WebSocketは、完全に異なるモデルのセットアップと動作が複雑です。AJAXを使用すると、サーバーを呼び出して応答を受け取ることができます。WebSocketを使用すると、「チャネルにサブスクライブ」し、メッセージを個別に送受信できます。つまり、クライアントAはサーバーに情報を送信でき、サーバーはクライアントBが最初に要求することなく同じデータをクライアントBに送信できます。数か月前の私自身の調査中に出くわしたPythonに使用できるライブラリがいくつかあることを私は知っています。AJAXを使用する場合、サーバーを制御しているときにデータをPOSTして、熟練していないハッカーのデータを少し見にくくすることを好みます。データをパッケージ化するには、ネイティブのjs Domメソッドを使用してJSONオブジェクトを作成するのが好きです。これは、フォームデータを送信する前に検証することについてOCDを使用しているためです。次に、JSON.stringify()を使用して、データを送信できるようにします。AJAXを使用する場合、サーバーを制御しているときにデータをPOSTして、熟練していないハッカーのデータを少し見にくくすることを好みます。データをパッケージ化するには、ネイティブのjs Domメソッドを使用してJSONオブジェクトを作成するのが好きです。これは、フォームデータを送信する前に検証することについてOCDを使用しているためです。次に、JSON.stringify()を使用して、データを送信できるようにします。AJAXを使用する場合、サーバーを制御しているときにデータをPOSTして、熟練していないハッカーのデータを少し見にくくすることを好みます。データをパッケージ化するには、ネイティブのjs Domメソッドを使用してJSONオブジェクトを作成するのが好きです。これは、フォームデータを送信する前に検証することについてOCDを使用しているためです。次に、JSON.stringify()を使用して、データを送信できるようにします。
  4. 質問を完全に理解しないでください。サーバー上のオブジェクトのスコープは何ですか?アプリケーションレベル、クライアントレベル、ユーザーレベル?これは、アプリケーションのニーズに応じて、さまざまな方法で処理できます。通信技術としてWebSocketを使用している場合、サーバーは最初にブラウザーから要求しなくても、更新を自動的に送信できます。AJAXを使用している場合、クライアントは更新を要求するか、通信のようなWebSocketをシミュレートするためにロングポーリングなどの手法を使用する必要があります。
于 2012-06-18T23:34:39.733 に答える