Jquery plugins jquerystarrating插件和googleclosure编译器的externs
我创建了一个externs文件,以便能够编译jQuery星级插件fyneworks.com/jQuery/Star Rating/#tab,并使用Google Closure编译器的高级_优化进行测试 但是,尽管我引用了标准的jQuery外部程序,“$”被重命名,这破坏了插件 可能相关:如果我使用未修改的插件,“评级”也会被重命名。我可以用以下方法修复该部分:Jquery plugins jquerystarrating插件和googleclosure编译器的externs,jquery-plugins,extern,google-closure-compiler,Jquery Plugins,Extern,Google Closure Compiler,我创建了一个externs文件,以便能够编译jQuery星级插件fyneworks.com/jQuery/Star Rating/#tab,并使用Google Closure编译器的高级_优化进行测试 但是,尽管我引用了标准的jQuery外部程序,“$”被重命名,这破坏了插件 可能相关:如果我使用未修改的插件,“评级”也会被重命名。我可以用以下方法修复该部分: $.fn['rating'] = function(opts) { 从。。。但这并不能修复“$”(如果可能的话,最好使用未修改的插件)
$.fn['rating'] = function(opts) {
从。。。但这并不能修复“$”(如果可能的话,最好使用未修改的插件)
从我的外部尝试(可能是错误的和/或不完整的):
命令行(和下载中的rating.sh):
错误消息:
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) {
要测试:
下载:prefactsoftware.com/test/rating-july15.zip
一些有用的链接:(我不允许将其指定为降价,因为我无法使用旧的信誉点登录…)
- 高级编译和外部程序:developers.google.com/closure/compiler/docs/api-tutorial3#Externs
- 外部示例:contrib:code.google.com/p/closure compiler/source/browse/#svn%2Ftrunk%2ftcontrib%2Fexterns)包括jQuery本身,但不包括评级插件
- 更多外部程序:code.google.com/p/closure compiler/source/browse/#svn%2ftunk%2externs
好的,这适用于externs文件:
$.prototype.rating = function(arg1) {}
jQuery.prototype.rating = function(arg1) {}
$.prototype.rating.focus = function() {}
... etc.
根据您的描述,您似乎未正确使用外部文件。插件的外部文件允许其他用户编译引用插件的代码。它根本不应该用来编译你的实际插件代码。要编译代码,只需要jQuery外部文件 jQuery代码样式在闭包编译器中存在已知问题。特别是,您需要避免以下情况:
- 使用
别名。使用完整的$
命名空间。编译器不能很好地处理别名名称空间jQuery
别名。改用jQuery.fn
jQuery.prototype
- 使用
方法添加函数原型或公共方法。相反,直接将它们添加到原型中。(例如:jQuery.extend
将变成jQuery.fn.extend({a:'foo'});
)李>jQuery.prototype.a='foo';
有关更多信息,请参见查看最新的外部代码:我明白了:我应该编译除插件之外的所有内容,并以通常的方式引用它。而且,非常感谢外部提示;我在上面添加了工作代码,因为我无法添加此注释。
$('.star1').rating({
callback: function (value) {
$.prototype.rating = function(arg1) {}
jQuery.prototype.rating = function(arg1) {}
$.prototype.rating.focus = function() {}
... etc.