2012-05-10 9 views
0

私は、JSアセットをとり、すべてのアセットがプロダクションの準備が整った状態で、1つのスクリプトファイルに縮小され連結されたバージョンを作成するPHPクラスに取り組んでいます。私の唯一の懸念は何かを壊すかもしれないということです。たとえば、ビルドがファイルを必要に応じて連結した場合(たとえば、jQueryプラグインの後のjQueryコア)。私はそれが私が(スクリプトディレクトリを読んでいると思っていた)最も自動であることを意図していますが、これはいくつかの問題を引き起こす可能性があります。ビルドプロセスでJavaScriptが壊れるのを防ぐには?

私はBuildrも見ました。それは同じことを行い、ディレクトリ内にあるすべてのものを構築しますが、おそらく同じ問題がありますか?

これにはどのような解決策がありますか?これのために何とかJSコードをラッピングするような何か?

答えて

1

なぜ連結順序が心配ですか?実際に(例えばjQueryなど)ファイル内で適切に定義されていれば、それらが連結される順番は関係ありません(1つのファイルを構成すると仮定して)。これは、Javascriptでは、インタプリタがまだ評価されていないコードを現在のファイルで実行できるためです。

 
dosomething(); 

function dosomething(){ 
console.log('yup'); 
} 

doSomethingのは、前にそれを呼び出すに評価されていない。彼らが呼び出されたときではなく、未解決のシンボルが

は、次のことを考えてみましょう(コードが解析された後におそらく起きている)グローバルオブジェクトで検索されていますしかし、通訳者はまだそれを見ることができます。

+0

非常に良い点。 – cgTag

+0

これは、名前空間の使用を開始するたびに実行可能ではありません。これは、自明なjavascriptプロジェクトでは非常に一般的です。 – HoLyVieR

+0

私は同意しますが、それは彼自身の要件を批判しています。アイデアは、JSがどのように「壊れるか」という考え方が間違っていたことを指摘することです。 – dwerner

0

必要なものは依存関係管理です。あなたの可能性の1つはGoogle Closure Compilerで作業することです。スクリプトを圧縮するときに依存関係を検出します(See this)。しかし、それが適切に機能するためには、良いサイズでまだ使用していないプロジェクトで作業している場合、迷惑になるライブラリを使用する必要があります。

+0

私は、このケースには合っていません...とにかくありがとうございます。 –

関連する問題