jQueryStarRatingプラグインfyneworks.com/jquery/star-rating/#tab-GoogleClosureCompilerのADVANCED_OPTIMIZATIONSを使用したテストをコンパイルできるようにexternsファイルを作成しました。
ただし、標準のjQuery externを参照していても、「$」の名前が変更されているため、プラグインが壊れています。
おそらく関連しています:変更されていないプラグインを使用すると、「rating」の名前も変更されます。私はその部分を次のように修正できます:
$.fn['rating'] = function(opts) {
グーグルクロージャーからコンパイルjQueryプラグイン...しかしそれは'$'を修正しません(そして可能であれば変更されていないプラグインを使用するのがいいでしょう)。
externでの私の試みから(これはおそらく間違っているか不完全です):
// ??? for '$'
// this one does NOT prevent 'rating' from being renamed
function rating(arg1) {}
// the following seem to work: they prevent the functions from being renamed
rating.focus = function() {}
rating.blur = function() {}
rating.fill = function() {}
... etc.
コマンドライン(およびダウンロードのrating.sh):
java -jar ../compiler-latest/compiler.jar --formatting pretty_print --compilation_level ADVANCED_OPTIMIZATIONS --externs externs/jquery-1.7.js --externs externs/jquery.rating-extern.js --js original/jquery.rating.js --js_output_file jquery.rating.gcc.js
エラーメッセージ:
Firefox:
$(".star1").rating is not a function
callback: function (value) {
jquery.ratingSampleCode.js (line 9)
Chrome:
Uncaught TypeError: Object [object Object] has no method 'rating'
jquery.ratingSampleCode.js:8
私のサンプルコードから:
$('.star1').rating({
callback: function (value) {
テストするには:http://prefabsoftware.com/test/rating-july15/
ダウンロードするには:prefabsoftware.com/test/rating-july15.zip
いくつかの便利なリンク:(古いレピュテーションポイントでログインできなかったため、マークダウンとして指定することはできません...)
- 高度なコンパイルとExterns:developers.google.com/closure/compiler/docs/api-tutorial3#externs
- サンプルexterns:contrib:code.google.com/p/closure-compiler/source/browse/#svn%2Ftrunk%2Fcontrib%2Fexterns)jQuery自体を含みますが、評価プラグインは含みません
- その他のexterns:code.google.com/p/closure-compiler/source/browse/#svn%2Ftrunk%2Fexterns
externの簡単な修正はありますか?またはより良い解決策?
ありがとう!
OK、これはexternsファイルで機能します。
$.prototype.rating = function(arg1) {}
jQuery.prototype.rating = function(arg1) {}
$.prototype.rating.focus = function() {}
... etc.