31

私のRailsアプリケーション(すべて2.3.5)は、インラインjavascript、rjs、プロトタイプ、jqueryを完全に組み合わせて使用​​しています。それを学習または成長痛と呼びましょう。最近、私は控えめなJavaScriptにますます夢中になっています。cssがクリーンアップしたのと同じように、htmlがクリーンになります。

しかし、私が見たほとんどの例は小さな例であり、それらはすべてのjavascript(jquery)をapplication.js内に配置します

今、私はかなり大きなアプリケーションを持っています、そして私は私のjsを構造化する方法を考えています。どういうわけか、スクリプトがまだビューに近いのが好きなので、次のようなことを考えています。

orders.html.erb
orders.js

ここで、orders.jsには、そのビューに固有の控えめなJavaScriptが含まれています。しかし、多分それは私があまりにも保守的であるだけです:)

私はここここでこの問題についてのイェフダ・カッツによるいくつかの投稿を読みました。そこで彼はこの問題に取り組んでいます。それはあなたのjsファイルを調べて、あなたのビューに関連するものだけをロードします。しかし、残念ながら、現在の実装を見つけることができません。

だから私の質問:

  • 控えめなJavaScriptをどのように最適に構成しますか。コードを管理します。HTMLから何かが何をすべきかが明らかであることをどのように確認しますか。良いクラス名は大いに役立つと思います:)
  • どのようにファイルを配置し、それらをすべてロードしますか?少しだけ?関連するスクリプトをロードするために、content_for :scriptまたはビューで使用しますか。javascript_include_tagまたは ... ?
  • 非常に一般的な関数(削除など)をパラメーター(属性を追加しますか?)を使用して記述しますか、それとも非常に特殊な関数(DRY?)を記述しますか。Rails 3には標準セットがあり、すべてが邪魔にならないことを私は知っています。しかし、Rails 2.3.5で開始するにはどうすればよいですか?

つまり、Railsで控えめなJavaScriptを実行するためのベストプラクティスは何ですか?:)

4

3 に答える 3

10

ベストプラクティスは1つではないと思いますが、私が何をしているのかをお知らせします。

  1. ディレクトリには、それぞれ独自の目的を持つ一連のjsファイルがありますpublic/javascripts/。いくつかの例は、などである可能性がutility.js chat.js shopping_basket.jsあります。

  2. 私はアセットパッケージャーを使用し、すべての一般的な使用機能用に1つの大きなファットコレクションを定義し、管理者専用機能用に別の大きなファットコレクションを定義します。サーバーへの往復はコストがかかりすぎます。基本的に、最初のページの読み込みにすべてのjsを含めて1つのblobに縮小します(一般的に)

  3. 基本的な$(document).readyフックをページにインラインで許可し、それらを非常に短くします。

  4. jsファイルがアクセスする必要のあるデータはページにインラインでレンダリングされます。(通常はDOMで、場合によってはvarsとして-例var xyz = 100

  5. 私は通常、JavaScriptをオフにして(そしてすべてが機能することを確認して)コントローラーを開発し、次にそれをオンにして、if request.xhr?必要に応じていくつかを振りかけます。


Rail 3.1には、組み込みのベストプラクティスが導入されていることに注意してください。http://guides.rubyonrails.org/asset_pipeline.htmlを参照してください。個人的なメモとして、新しいパイプラインでパフォーマンスと構成の問題が発生しましたが、他の多くの問題があります。それで大成功を収めました。

于 2010-05-23T13:29:47.903 に答える
3

私は最近、RubyonRailsでJavaScriptをどのように管理しているかを文書化しました。私は基本的に、物事を多くの小さくて細かいファイルに分割し、それぞれに適切な名前空間を付けてから、asset_packagerを使用して本番用にすべてを1つのファイルにマージします。

于 2010-05-29T13:16:08.260 に答える
1

私は同じ問題を解決しようとしているときにこの投稿を見つけましたが、既存の解決策のどれも私を正しいものとして思いませんでした。私はここに私のアプローチを書きました。Railsの設定より規約が大好きなので、特定のアクションページにのみ適用できるJavascriptを含めるための同じアプローチが必要でした。他に何もないとしても、それはあなたのオプションに追加するための少なくとも別のアプローチです。

于 2010-10-18T14:24:46.617 に答える