coffeescript的不同写法( $ = jQuery // $ = @jQuery) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
icexfire

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

  •  
  •   icexfire May 26, 2013 4364 views
    This topic created in 4722 days ago, the information mentioned may be changed or developed.
    刚刚接触 coffee,求教 >.<

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

    另外还看到过一种写法:
    $ = require('jquery')
    这个又是什么状况呢?
    14 replies    1970-01-01 08:00:00 +08:00
    tangzx
        1
    tangzx  
       May 26, 2013 via iPhone   1
    你都知道@jQuery等价于this.jQuery了吧?

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

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

    CommonJS只是一个module的组织方法,虽然不像AMD针对browser做了优化,但是也不是不可以用在browser中的,当然最主要还是用在node.js中。
    tangzx
        8
    tangzx  
       May 26, 2013 via iPhone   1
    function(){ }).call(this) 的意思是函数里面的this和外面的this(window)为同一个东西
    tangzx
        9
    tangzx  
       May 26, 2013 via iPhone   1
    官方原版的jQuery会同时绑定window.jQuery和局部变量jQuery,所以this.jQuery和直接jQuery效果一样
    tangzx
        10
    tangzx  
       May 26, 2013 via iPhone   1
    地铁&&手机上敲代码敲代码我容易么我
    icexfire
        11
    icexfire  
    OP
       May 26, 2013
    @tangzx "会同时绑定window.jQuery和局部变量jQuery" 这个是在哪里看到的呢?好奇~
    tangzx
        12
    tangzx  
       May 26, 2013   1
    @icexfire 这个确实是俺搞错了,你可以在firebug或者chromedev控制台里试一试window.a=1,然后直接调用a就能出1了,所以应该不是同时绑定,而是”就是一个东西“
    tangzx
        13
    tangzx  
       May 26, 2013   1
    (function($=this.jQuery;){ }).call(this) //正确
    (function($=this.jQuery;){ })() //错误,$会为undefined
    chuangbo
        14
    chuangbo  
       May 27, 2013 via iPad   1
    以楼主现在的 JS 程度,不需要纠结在这个细节上,先模仿吧。
    About     Help     Advertise     Blog     API     FAQ     Solana     2159 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 00:02 PVG 08:02 LAX 17:02 JFK 20:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86