coffeescript的不同写法( $ = jQuery // $ = @jQuery)

2013-05-26 16:37:38 +08:00
 icexfire
刚刚接触 coffee,求教 >.<

这两种有什么不同么?
两种的javascript 就是一个 $ = jQuery; 另一个 $ = this.jQuery;
但是都是在 (function(){ }).call(this) 里面,

另外还看到过一种写法:
$ = require('jquery')
这个又是什么状况呢?
3602 次点击
所在节点    问与答
14 条回复
tangzx
2013-05-26 16:52:23 +08:00
你都知道@jQuery等价于this.jQuery了吧?

JavaScript在浏览器里运行时最外层的this指向window,故这几种写法没区别,如果直接贴在<script>里的话
icexfire
2013-05-26 17:08:58 +08:00
@tangzx 也就是这几种都因为在 (function(){ }).call(this) 里面,所以 this 都不是指向 windows 的,都是指向那个匿名的 function()么?
然后 @jquery 只是显式的表示出来了,这样么?

那么 require 那个呢?
icexfire
2013-05-26 17:09:21 +08:00
@livid 出现乱码了 囧
icexfire
2013-05-26 17:16:45 +08:00
@tangzx 难道 $ = require('jquery') 这种是在coffee编译成js的时候自动解决添加依赖的jquery么?就不用手动在网页中载入 jq了? >.<
insraq
2013-05-26 17:36:21 +08:00
$ = require('jquery') 跟CoffeeScript没关系,是把jQuery wrap成了一个CommonJS module.
icexfire
2013-05-26 17:50:19 +08:00
@insraq 但是 jquery 这个不是只能用在浏览器操作 dom 之类的操作么。。。CommonJS 不涉及这个吧?。。。那为什么要弄成 module?
insraq
2013-05-26 17:59:38 +08:00
jQuery可以用在node.js上的 http://blog.jquery.com/2013/04/09/jquery-2-0-beta-3-released/

CommonJS只是一个module的组织方法,虽然不像AMD针对browser做了优化,但是也不是不可以用在browser中的,当然最主要还是用在node.js中。
tangzx
2013-05-26 20:36:35 +08:00
function(){ }).call(this) 的意思是函数里面的this和外面的this(window)为同一个东西
tangzx
2013-05-26 20:39:19 +08:00
官方原版的jQuery会同时绑定window.jQuery和局部变量jQuery,所以this.jQuery和直接jQuery效果一样
tangzx
2013-05-26 20:40:47 +08:00
地铁&&手机上敲代码敲代码我容易么我
icexfire
2013-05-26 22:40:10 +08:00
@tangzx "会同时绑定window.jQuery和局部变量jQuery" 这个是在哪里看到的呢?好奇~
tangzx
2013-05-26 23:01:15 +08:00
@icexfire 这个确实是俺搞错了,你可以在firebug或者chromedev控制台里试一试window.a=1,然后直接调用a就能出1了,所以应该不是同时绑定,而是”就是一个东西“
tangzx
2013-05-26 23:02:26 +08:00
(function($=this.jQuery;){ }).call(this) //正确
(function($=this.jQuery;){ })() //错误,$会为undefined
chuangbo
2013-05-27 00:54:05 +08:00
以楼主现在的 JS 程度,不需要纠结在这个细节上,先模仿吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/70202

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX