1

ビューの 1 つに html.erb ファイルがあります。ファイルはかなり大きく、約 2/3 の JavaScript コードと 1/3 の html しかありません。このファイルが雑然としすぎているのは好きではありません。JavaScript 部分は主にイベント ハンドラーであり、ページ内の対応する html 要素に対する日付ピッカー、ダイアログなどの jquery UI コンポーネントの使用です。javascript部分をhtml部分から分離したいと思います。

  1. javascript を別の js.erb ファイルに移動して、パーシャルのように使用できますか? これの利点は何ですか?

  2. I18n.() や <%= form_authenticity_token %> などの Rails API を使用する場合、JavaScript を静的な .js ファイルに移動するにはどうすればよいですか。ラッピングするJavaScript関数に毎回渡す必要がありますか? これを行うより良い方法はありますか?

  3. javascript を html.erb ファイルから移動すると、html.erb ページのキャッシュ/レンダリングに役立ちますか?

再利用可能なパターンがあるかどうかを調べることに興味があります

html.erb ファイルのサンプル コード:

 <% content_for :javascript do %>
 <script type="text/javascript">

 $(document).ready(function() 
 {
     $('#create_segment_dialog').dialog({
            title: "<%= I18n.t("segment.create_segment_title") %>",

     // lots of javascript


 }

 </script>
 <%end %>

 //HTML starts here

 <div id="right-column">
4

1 に答える 1

3

私の2cですが、これについてはさまざまな意見があることを私は知っています:

JSコードをできるだけ多く1つまたは複数の関数に分離し、アセットパイプラインのJSファイルに配置してみてください。この動きを利用して、JSを他のメソッド/コントローラーで使用できる再利用可能なコンポーネントに分割します。

これは、そこに移動するJSのアセットパイプラインのすべてのメリットを享受できることを意味します。

  • JSアセットのキャッシュとフィンガープリント
  • 帯域幅を節約するための縮小化と圧縮のサポート
  • それがあなたが望むものであるならばあなたのコードを難読化するための縮小
  • ブラウザが行う必要のあるリクエストの数を減らすためのJSファイルの連結
  • 別の場所からアセットを提供する可能性(CDN、Web層とアプリ層)
  • そのJavaScriptが他のメソッド/コントローラーによって使用されている場合のDRYnessの改善

欠点は?ご指摘のとおり、Rails変数はパラメーターとして関数に渡す必要があります。

JavaScriptを.js.erbパーシャルに移動することはオプションですが、このコードが特定のメソッドまたはコントローラーに非常に固有である場合、必ずしもDRYnessが向上するわけではありません。HTMLとJSを分離することで、コードが少し読みやすくなる可能性があります。 。

于 2012-11-05T01:49:29.137 に答える