コードの特定の部分のみを実行する
私は同様の問題に直面しましたが、railsではなくasp.netに直面しました。
このjavascriptソリューションはどこでも機能するはずです:
http://paulirish.com/2009/markup-based-unobtrusive-comprehensive-dom-ready-execution/
これは基本的にDOMベースのルーティングの母です。現在地を指定するbodyタグに属性を指定します。それを読んでください、それはかなりシンプルで機能的です。
DOMベースのルーティングは最近非常に人気があり、多くのフレームワークに実装されています(railsにはこれに対する独自のソリューションがあると確信しています)が、この単純なバージョンはどこにでも簡単に実装できます。
また、その投稿にはいくつかのフォローアップリンクがあります。それらも読んで、自分に最適なものを決定する必要があります。
スクリプトをバンドルする
JavaScriptで「あなたが書いたりデバッグしたりするのはあなたが公開するものである」というのは誤解です。
クライアント側で解釈されるスクリプト言語であるため、処理せずにネット経由で直接送信できますが、ファイルが不必要に大きくなり、ファイルごとに1つずつリクエストが多くなります。したがって、そこからすべてのコメント/スペースを削除して、すべてのコードを1つのファイルにまとめることができますが、その結果、コードが保守できなくなります。これは必要なトレードオフだと思うかもしれませんが、そうではありません。
それらをバンドルするjavascriptファイルを「構築」し、それらのコンテンツをはるかに小さいサイズに縮小することができます。そのためのツールはたくさんあります。レールには独自のソリューションがあると確信しています(お気に入りの検索プロバイダーでJavaScriptをバンドルして検索してください)。テスト環境でバンドルされていない/縮小されていないコードを使用できるため、開発とデバッグが非常に簡単です。実稼働環境に公開する必要がある場合は、スクリプトをバンドルします。
次に、次のようなさまざまなファイルでオブジェクト/関数を定義できます。
file1:
var FOO = {
};
file2:
FOO.common = {
init : function(){ ... },
finalize : function(){ ... }
};
file3:
FOO.shopping = {
init : function(){ ... },
cart : function(){ ... },
category : function(){ ... }
};
このようにすると、基本的に1つのファイルの場合と同じ結果が得られますが、アプリの設計時に読む方が少しわかりやすくなります。
編集:このソリューションはjQueryの$(document).ready()
関数を使用しています。これが望ましくない場合は、他の準備ができているイベントに接続することもできます。