

How to Write CoffeeScript Efficiently - wyclif
http://esa-matti.suuronen.org/blog/2011/11/28/how-to-write-coffeescript-efficiently/

======
skrebbel
Should have been renamed to "Some Vim tricks for CoffeeScript writing".

------
nilbus
Could someone explain how {@foo} = bar compiles into this.foo = bar.foo;?

~~~
yesbabyyes
"@" is an alias for "this.", so "@foo" is the same as "this.foo".

{foo} = bar is using destructuring assignment, it means, take property "foo"
of bar and put it in variable foo, so

    
    
        {foo} = bar
    

compiles to

    
    
        var foo = bar.foo;

~~~
nilbus
Thanks! It was the destructuring part that I wasn't understanding right away.

~~~
yesbabyyes
No problem! CoffeeScript's destructuring is really nice, IMO:

    
    
        [first, rest..., last] = someArray
    
        professions =
          programmer:
            studyTime: "5 years"
            salary: 10000
          salesman:
            studyTime: "2 years"
            salary: 15000
        
        {programmer: {salary}} = professions
        
        console.log "A programmer's salary is %s", salary
    

EDIT: Fixed bug, "developer" should be "programmer".

~~~
jrnkntl

       {developer: {salary}} = professions

------
s00pcan
I followed the link to the Syntastic plugin and can't get it to work. The
version on github doesn't have the SyntasticEnable function for some reason,
so I used the package on vim.org. I added the statusline changes and
SyntaxEnable php to my vimrc, still does absolutely nothing. I'm not seeing
anything different on my statusline when saving files and the :Errors function
doesn't show anything either. Ideas?

------
diploid
Manually compiling your CoffeeScripts just seems archaic. Is there no
equivalent to Sinatra AssetPack for node.js?

Frankly, this is not an efficient workflow for CoffeeScript.

~~~
Epeli
Try <http://epeli.github.com/piler/>

------
VMG
sadly, this could also be called "why it is difficult to write CoffeScript
efficiently without some vim plugins"

