在coffescript中编写jquery插件 - 如何获取“(function($)”和“(jQuery)”?
我正在用 CoffeeScript 编写一个 jquery 插件,但不确定如何正确使用函数包装器部分。
我的coffeescript以此开头:
$.fn.extend({
myplugin: ->
@each ->
它使用函数包装器创建了javascript:
(function() {
$.fn.extend({
myplugin: function() {
return this.each(function() {
但我想要像这样传入'$':
(function($) {
$.fn.extend({
与结尾类似,我...在coffeescript中没有什么特别的。
我在 javascript 中得到了这个:
})();
但想要这样:
})(jQuery);
有谁知道如何使用咖啡脚本编译器来实现这一点? 或者在 Coffeescript 中完成此操作的最佳方法是什么?
I am writing a jquery plugin in coffeescript but am not sure how to get the function wrapper part right.
My coffeescript starts with this:
$.fn.extend({
myplugin: ->
@each ->
Which creates the javascript with a function wrapper:
(function() {
$.fn.extend({
myplugin: function() {
return this.each(function() {
but I want a '$' passed in like this:
(function($) {
$.fn.extend({
Similar for the ending I have... nothing in particular in coffeescript.
I get this in javascript:
})();
But would like this:
})(jQuery);
Does anyone know how to achieve this with the coffeescript compiler?
Or what is the best way to get this done within coffeescript?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
答案是,您不需要像 CoffeeScript 中那样调用它——您的脚本已经安全地包装在闭包中,因此不需要 jQuery-passed-in-as-a-parameter-tricks。 写下: ...,就可以开始了。
只需在脚本顶部
The answer is that you don't need to call it like that in CoffeeScript -- your script is already safely wrapped in a closure, so there's no need for jQuery-passed-in-as-a-parameter-tricks. Just write:
... at the top of your script, and you're good to go.
除非您在编译器中使用
--bare
标志,否则解决方案是最好的。如果您是,那么使用新的
do
关键字,您可以编写这样创建所需的范围,同时避免括号混乱。
Unless you're using the
--bare
flag in the compiler, thesolution is best. If you are, then with the new
do
keyword, you can writethus creating the desired scope while avoiding a mess o' parentheses.
更新/编辑:是的,根据 Jeremy 的解释:
编译为:
作为 jQuery 插件工作得很好:
$('body').myPlugin() ;
原文:
好的,我想我可能会接近这个,如果有帮助请告诉我。
渲染成:
UPDATE/EDIT: Yep, as per Jeremy's explanation:
compiles to:
Which works just fine as a jQuery plugin:
$('body').myPlugin();
Original:
Okay, i think I may getting close on this one, let me know if it helps.
renders into:
最简单的方法是扩展 $.fn 对象
简单的 jQuery 插件可以用 CoffeeScript 编写,如下所示:
它将编译为
The easiest way is to extend $.fn object
Simple jQuery plugin can be written in CoffeeScript as follows:
it will compile to
你应该看看 jQuery Boilerplate 的 CoffeeScript 版本 ~ https: //github.com/zenorocha/jquery-boilerplate/blob/master/jquery.boilerplate.coffee
You should take a look at the CoffeeScript version of jQuery Boilerplate ~ https://github.com/zenorocha/jquery-boilerplate/blob/master/jquery.boilerplate.coffee
虽然这篇文章很旧,但我发现它很有用。这是适合我的咖啡脚本代码。
注意:您不需要声明
$
变量,您可以直接使用它。Although this post is old I found it useful. Here is the coffee-script code that works for me.
Note: You don't need to declare the
$
variable, you can just use it right out of the box.您可以简单地自己添加闭包并使用
--bare
标志对其进行编译。咖啡-w -c --bare jquery.plugin.coffee
You could simply add the closure yourself and compile it with the
--bare
flag.coffee -w -c --bare jquery.plugin.coffee
简单而直接
这就是我在 jQuery 对象上添加我自己的方法
cleanFadeIn
所要做的全部事情。它还返回用于链接的对象:Simple and Straightforward
This is all I had to do in order to add my own method,
cleanFadeIn
, on jQuery objects. It returns the objects for chaining as well: