2012-01-02 8 views
1

現時点では、それぞれに$(document).ready関数を持つhtml + phpファイルがたくさんあります。Javascriptとjqueryネームスペース

私はできるだけ多くのJSを1つのファイルに照合して、関数の名前空間を確保する必要があると考えています。

私はproduct_editと呼ばれるPHPファイルを持っているのであれば、その後、私は、次のようなものだろう:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     productActions.documentReady(); 
    }); 
</script> 

をそして、私の単一site_scriptsファイルで、私はこのような何かを行うことができます:

var productActions = { 
    documentReady: function() { 
     $('#date').change(function() { 
      someGlobalFunction(); 
      productActions.getTerms(); 
     }); 

     $('#product_id').change(function() { 
      productActions.getTerms(); 
     }); 
    }, 

    getTerms: function() { 
     //do something here 
    } 
}; 

まず、これについては正しい方法で行っていますか?この全体的な方法論は正しい軌道にあるのか...それはナンセンスですか?

2番目:私のsite_scriptsファイルがキャッシュされているように見えるので、毎回ブラウザのキャッシュをクリアしなければなりません。これを回避する方法はありますか?

+1

私は欠点を認識していないんだが(もしあれば)、しかし、あなたは1)関数を '.ready'に直接渡すことができ、2)あなたのキャッシングの問題については、単に'?v2'をJavaScriptファイルのURLに追加して、ブラウザを再トリックするようにトリックします。 – pimvdb

答えて

1

する必要はありません余分な関数でラップしてください(コメント作成者の言葉通り)

$(document).ready(productActions.documentReady) 

さまざまな方法でキャッシュを処理できます。たとえばの場合、保存時にファイルにタイムスタンプを入れたい場合は、(ビルドスクリプトでこれを自動的に行います)、far-futures expires headersを適用して一度だけダウンロードされるようにします。

また、ネームスペースについては、大文字と小文字の両方で大域名前空間を使用するのが一般的です。私はi.TVで働いて、私たちはこのような何か:

window.ITV = {pages:{}} 
ITV.pages.tvListings = { 
    init: function() { } // basic init for page 
    prop1: "bla bla bla" 
} 

をそして、我々はいくつかの装飾性を行うことができますし、あなたのPHPで完全に再利用されるすべてのページ間でこのような何かを、実行します。

0

あなたのために、ユーザーのWeb開発者ツールバーをプロブルし、開発中にキャッシュを無効にします。あなたはjavascriptのファイルにクライアントがページを開くたびに更新したい場合は、JSは、HTMLファイルを追加するとき、ちょうどこのような何か:

<script type="" src="some.js?var=somerandvars" /> 
関連する問題