読み込み - 目立たないJavascriptを配置するレールのベストプラクティス




javascriptコーディングベストプラクティス (2)

私のレールアプリケーション(すべて2.3.5)は、インラインのjavascript、rjs、プロトタイプ、およびjqueryのトータルミックスを使用しています。 それを学習や成長の痛みと呼ぼう。 最近私はますます邪魔されないJavaScriptに惑わされてきました。 それはあなたのhtmlをきれいにします、同じ方法でCSSはそれをきれいにしました。

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

今私はかなり大きなアプリケーションがあり、私は私のjsを構造化する方法を考えています。 私は何とか私のスクリプトはまだビューに近いので、私は何かのようなものを考えているのが好きです

orders.html.erb
orders.js

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

私はYehuda Katzがこの問題についてこの記事を読んでいます。 hereでは、この問題に取り組んでいます。 それはあなたのjsファイルを通過し、あなたのビューに関連するものだけを読み込みます。 しかし、うん、私は現在の実装を見つけることができません。

だから私の質問:

  • どうやってあなたの目立たないジャバスクリプトを構築するのが最善ですか? あなたのコードを管理してください、どうすればHTMLから何がやられるのかがはっきりしていることを確認してください。 私は良いクラス名が長い道のりを行くと思う:)
  • どのようにあなたのファイルを整理し、それらをすべて読み込みますか? 少しだけ? 関連するスクリプトを読み込むために、viewのcontent_for :scriptまたはjavascript_include_tag content_for :scriptを使用しますか? または...?
  • 非常に汎用的な関数(deleteなど)、パラメータ(余分な属性を追加する)、または非常に特殊な関数(DRY?)を記述していますか? 私はRails 3に標準セットがあることを知っています。すべてが邪魔になりません。 しかし、Rails 2.3.5から始めるには?

要するに、邪魔にならないjavascriptをレールで実行するためのベストプラクティスは何ですか? :)

https://code.i-harness.com


1つのベストプラクティスがあるとは思わないが、私が何をしているかを教えてもらう。

  1. 私はpublic/javascripts/ディレクトリの中でそれぞれ独自の目的のために一連のjsファイルを持っています。 いくつかの例は、 utility.js chat.js shopping_basket.jsなどです。

  2. 私はアセット・パッケージャを使用し、私の全般的な使用機能と管理者専用機能のための1つの大きなファット・コレクションを定義します。 サーバーへのラウンドトリップはコストがかかり過ぎる。 私は基本的にすべてのjsを最初のページの負荷を1つのブロブに(一般的に)

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

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

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

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


私は同じ問題を解決しようとしている間にこの投稿を見つけましたが、既存の解決策のどれも私を正しいものとして襲っていませんでした。 私はhere.私のアプローチを書きましhere. 私はRailsの設定よりも大好きなので、特定のアクションページにのみ適用できるJavascriptを含むのと同じアプローチを望んでいました。 それ以外の場合は、少なくともあなたのオプションに追加する別のアプローチです。





unobtrusive-javascript