2012-03-01 9 views
1

私はリソースを持つレールアプリを持っているとしましょう - ユーザー。私は提供されている任意のページで利用できるjavascriptを持っています。私はユーザーの下で提供される任意のページで利用できるはずのjavascriptを持っています。そして私はユーザーの下でそれぞれの特定のアクションのために利用可能なjavascriptを持っています。 Rails 3.1以降では、Javascriptが必要なページでのみJavascriptを使用できるようにする簡単な方法はありますか? coffeescriptはどうですか?JavascriptやCoffeescriptをRailsアプリケーションで分割する最も良い方法は何ですか?

+0

私はthis - http://stackoverflow.com/questions/602147/javascript-file-per-view-in-railsがあなたを助けることができると思います。 – Bob

答えて

0

ボブのリンクされたアイテムは関連していると思います(読み込まれるファイルの数に対するパフォーマンスのトレードオフに関連するコメントがあります)が、名前のスペーシング、スコープおよび構造に関する問題がありました。

、具体的質問に答える(そして、あなたはjQueryのを使用していると仮定)するには、以下のCoffeeScriptを考慮してください。

$ -> 
    doSomething() 
    doSomethingElse("#some-element") 

doSomething = -> 
    alert("I'm doing something") 

doSomethingElse = (selector) -> 
    alert("I'm hiding something") 
    $(selector).hide() 

のCoffeeScriptのコンパイラは、匿名関数内でこのすべてをラップします、したがって、唯一利用できるようになりますページがロードされるコンテキスト(スクリプトタグ、コントローラ特有のファイル、またはグローバルな可視性のためのapplication.js)内で実行されます。

考慮すべきモデルがいくつかあります。単純なことは、モデルに固有の「もの」と、一般的には有用なもの(グローバル)とのパターンに従うことです。だから私は、ユーザーに固有のjavascript関数をしたい場合はapp/assets/javascripts/users.js.coffeeに行く、それ以外の場合はグローバル(application.js.coffee)にする必要があります。

rails-backboneの宝石は、CoffeeScriptのモデル、ビュー、テンプレート、ルーターを作成するジェネレータを備えており、多くのものを通常のものと置き換えることができます。rails generate scaffold foo - 同じ種類のCRUD操作はまったく異なるやり方で行われ、特にテンプレート(埋め込みJavaScript)はERBテンプレートと非常によく似ています。これは私のために、より多くの信仰の跳躍です。

アプリケーション全体のファイルであろうとコントローラ固有のファイルであろうと、コントローラ固有のファイルであろうとなかろうと、Asset Pipelineはすべてのコードを一緒にグロムしてすべてに送信します(デフォルト設定を保持していると仮定します)それは別の話題です。これは質問に答える場合

わからない、あなたが持っていたが、私はそれが資産のパイプラインがない配信資産の、区別することが重要だと思うし、スコープの問題であり実行するJavaScriptの、 CoffeeScriptは非常に優れた仕事をしており、backbone.jsはそれ以上のことをしています。

関連する問題