2011-12-14 12 views
2

スクリプトがBackbone.jsおよびUnderscore.jsに依存する場合、Closureの高度な圧縮を使用するために必要な一般的なヘルプ。外部ライブラリを使用したクロージャ高度な圧縮:Backbone.js、underscore.js

私はClosureのAPIチュートリアルを通して読んでみましたが、コンパイルされたスクリプトが動作しませんでした。私のPythonスクリプト(ラhttp://code.google.com/closure/compiler/docs/api-tutorial3.html#howto-app)に

('js_externs', 'function _(){};function Backbone(){}') 

が、これは働いていない。具体的に私はjs_externsパラメータを追加しました。

+1

ここで質問する必要がありますが、実際には私たちがあなたを助けることはあまりありません。 – calvinf

+0

多くのJSライブラリは、拡張モードでClosureコンパイラが要求する厳密な制限に従うようには書かれていません。したがって、包括的な「externs」ファイルを構築しなければなりません(簡単な作業ではありません)。サードパーティのライブラリでClosure Advancedモードを使用するのは非常に困難です。 –

+0

あなた自身でライブラリを変更したい場合は、この文書をチェックしてください:http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf - これはあなたに何かのヒントを与えるはずですそれ。 –

答えて

2

変数宣言だけでなく、高度なモードでも、使用しているバックボーンライブラリによって定義されたプロパティが必要であるか、すべてのプロパティに対してクォートされたプロパティアクセス(配列アクセス)を使用する必要があります。私は同様の設定の必要性を持っていた

http://code.google.com/p/closure-compiler/source/search?q=jquery-1.7.js&origq=jquery-1.7.js&btnG=Search+Trunk

+0

リンクが壊れています。 – jjrv

+1

は今修正する必要があります – John

-3

:たとえば

_['aBackboneMethod']() 

は、ここではjQueryの外部宣言がファイルです。 externバックボーンは必要ありません。パスに非圧縮のbackbone.js、underscore.js、jquery.jsをドロップ(plovrだれですか?)し、goog.provide('Backbone')goog.provide('underscore')goog.provide('jQuery')を必要な場所に置いてから、goog.require('Backbone')に置きます。 Voilà!

+0

これらのスクリプトがADVANCED_OPTIMIZATIONSを使用してClosureコンパイラと互換性があることが分かっていない限り(確かにjQueryではありません)、これは動作しません。 –

+0

これは実際には機能しませんが、これは外部のJSを '閉鎖する'という慣用的なアプローチであると期待しています。 – skrat

関連する問題