3

いくつかのモデルの作成を終えたばかりで、すべての属性を 1) Rails ActiveRecord 2) Rails データベース移行、3) Backbone.js モデルに個別に記述する必要がありました。私はあまり乾燥していません。この問題を解決するための最初のステップは、バックエンドとフロントエンドで CoffeeScript を使用できる node.js に切り替えることだと思います (理想的には、同じ Backbone.js モデルを再利用します) が、データベース スキーマはどうでしょうか? モデル属性から SQL を生成するフレームワークを作成できることはわかっていますが、その取り組みに着手する前に、このようなものが既に存在するか、開発中であるのか疑問に思っていました。

また、このフレームワークがビューとコントローラーを統合して、app/views、app/controllers、app/assets/javascripts/views、app/assets/javascripts/routers などをすべて同様に定義しなくて済むようになれば素晴らしいと思います。いろいろな場所にあるもの。

4

3 に答える 3

0

モデルの場合、それから継承する基本クラスを作成するだけです。set_table_name派生クラスを呼び出す必要があります。私はこれで逃げました。派生クラスの機能を微調整できるという利点があります。例:

app / models / widget.rb:

class Widget < ActiveRecord::Base
   def some_common_method
      # ...
   end
end

app / models / blue_widget.rb:

class BlueWidget < Widget
   set_table_name "blue_widgets"
   # special methods, if any
end

移行の場合は、共通のテーブル列の関数を定義するだけです。例えば:

def common_table_columns(t)
   t.integer :id
   t.stirng :some_string
   # etc
end

create_table(:table1) { |t| common_table_columns(t) }

[:table2,:table3,:table4].each do |name|
   create_table(name) { |t| common_table_columns(t) }
end

create_table :table5 do |t|
    common_table_columns(t)
    t.string :extra
end

Backbone.jsについて話すことはできませんが(今のところ)、同じ種類の重複コードの排除を達成できると100%確信しています。Javascriptには、rubyと同じくらいの動的性があります。

そうは言っても、なぜ同じテーブルがいくつかあるのですか?適切な問題に対して適切なソリューションを使用していますか?

于 2012-04-06T07:46:55.820 に答える
0

ワカンダシステムの目標の一つです。

于 2012-04-06T07:41:47.507 に答える
0

現在開発中の node.js フレームワークであるDerbyを確認してください。これは、ビューとコントローラー (およびその他多数) を統合しようとしています。

[Derby] は、サーバーとブラウザーで同じコードを実行し、データを自動的に同期します。Derby は、テンプレートのレンダリング、パッケージ化、およびモデルとビューのバインディングをすぐに処理します。すべての機能が連携して動作するように設計されているため、コードの重複やグルー コードは必要ありません。

私は Derby を使って小さな趣味のアプリを作成していますが、これまでのところ楽しくて気が遠くなるようなものでした。統一された新しい世界には独自の物理学があります..

注意すべきことの 1 つは、Derby が「リアルタイム モデル同期エンジン」であるRacerの上に構築されていることです。Backbone.js、express、およびいくつかのデータベースレイヤーをつなぎ合わせる軽いグルーコードのようなものを期待していた場合、それが「重い」と感じるかもしれません。


編集:まだ詳しく調べていない他のフレームワーク:

于 2012-04-06T08:14:16.847 に答える