MVC .NET 3 - メンテナンス可能なリファクタリング可能なJavascriptファイル

私は現在、次のようなページ固有のjavascriptファイルを持っています。

$(document).ready(function() 
{
  namespace.home.list = {}; 

  namespace.home.list.Update = function ()
  {
    var element = $(namespace.ElementIds.LIST);
    //some code that pulls a list from the server and dumps the data into our element
  });
};

私の慣習では、この.jsファイルはController Home/List(およびこれに対応してView Home/List.cshtml)に属しています。

さらに、namespace.ElementIdsは、(ほぼ)同一の.csファイルと同期して手動で保持されるIdのリストを持っているため、サーバーが生成したhtmlは、jsファイルで参照するものと同じIDを持つ要素を作成します。

私は、elementIdとjsの名前空間をリファクタリングに適したものにするための解決策として、これに不満です。より良い方法がありますか?

現在のところ、私のjavascriptはsrc属性でスクリプトタグを使って読み込まれていますが、C#クラスだけを使ってnamespace + elementIdsを定義できるようにするためのスクリプトタグは何も持っていない.cshtmlファイルであると考えています。私はこれが良い考えではないと感じていますが、なぜ私は実際にその理由を知りません。リファクタリング機能を強化し、サーバコードをクライアントコードにリンクすることができますが、その欠点は何ですか?キャッシングの欠如?パフォーマンスの低下?

2
これは広告のように聞こえるかもしれませんが、Javascriptのリファクタリングに最適なツールはReSharperです。それは超クレイジースマートです!あなたはCSSクラスをリファクタリングすることができ、jQueryセレクタの名前を変更します!
追加された 著者 Scott Rippey,
ReSharper 6.1が利用可能になったらそれを見ていきます。ヘッドアップをありがとう。
追加された 著者 Jag,
ReSharper 6はJavaScriptの優れたサポートを追加しました。それはまだ全体的にちょっとバギーだ。私はあなたの場合は6.1を待つだろうが、ReSharperの場合は+1を待つ。
追加された 著者 Aren,

1 答え

一般的に、あなたはあなたの文書にリンクされている多くのJavaScriptファイルを持っていたくはありません。それぞれは、HTTPプロトコルで往復の時間とオーバーヘッドを消費します。

プロジェクト内のすべてのJSファイルを収集し、それらを1つの縮小jsファイル(または場所に軽い負荷が必要な場合は2〜3)にまとめるシステムを構築/使用する必要があります。これにより、それらが素早く一度に読み込まれるようになります。

次に、ドキュメント内の1つのファイルをリンクし、元のjsファイルの名前を変更する必要はありません。またはそれがどこに住んでいるか。

名前空間については、次の点に注意する必要があります。

おそらくグローバルな名前空間を汚染しないように、ほとんどのモジュールをスコープ内にまとめておくべきでしょう。これは、名前空間のメカニズムのためのショートカットを追加するという利点があります。

;(function($, $namespace) {

    var $module = $namespace.list = {};

    $module.Update = function ()
    {
       var element = $($namespace.ElementIds.LIST);
       //some code that pulls a list from the server and dumps the data into our element
    };

})(jQuery, namespace.home);

これにより、便利な(一般的な)名前を持つプライベートヘルパー関数を持つことができます。それらはその範囲内からのみアクセス可能であり、他のモジュールと競合しないからです。さらに、これはあなたのjQueryがグローバル名前空間で$識別子を取るかもしれない別のjsライブラリと決して衝突しないようにします。

1
追加された
私はあなたの記事のアイデアが好きです、私は間違いなくそれらを利用することができます。それは私が見ている問題を正確に解決するものではありません。エンドユーザーに最適化されるよりもむしろ、開発者が最適化したjs/refactoringの方法ですが、他に何も出てこない間は、リッテ。
追加された 著者 Jag,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript