End to-End CoffeeScript
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

End to-End CoffeeScript

  • 8,500 views
Uploaded on

Talk at RailsConf 2011 by Trevor Burnham about running CoffeeScript code on both the front and back ends of a Rails 3.1 app.

Talk at RailsConf 2011 by Trevor Burnham about running CoffeeScript code on both the front and back ends of a Rails 3.1 app.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
8,500
On Slideshare
8,498
From Embeds
2
Number of Embeds
2

Actions

Shares
Downloads
127
Comments
0
Likes
10

Embeds 2

http://www.slideshare.net 1
http://a0.twimg.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. End-to-End CoffeeScript CoffeeScript
    • Presented by Trevor Burnham
    • at RailsConf/BohConf 2011
  • 2. Part I CoffeeScript!?!? CoffeeScript!?!?
  • 3. What is CoffeeScript?
  • 4. Do you have to use it?
  • 5. But seriously...
  • 6. Things I’ll cover today:
    • A brief primer on the CoffeeScript language
    • How it works with the Rails 3.1 asset pipeline
    • Running the same JS/CS code on both the client and the server
  • 7. And things I won’t:
    • The CoffeeScript language in depth (that would take a whole book... available at http://coffeescript-book.com )
    • Sprockets 2 ( #= require foo )
    • jQuery UJS ( $.rails )
  • 8. CoffeeScript crash course
    • “ Dash rocket” instead of function
    • Semantic whitespace instead of {}
    • Implicit parentheses, implicit var scoping
  • 9. Awesome goodies for Rubyists
    • Postfix if/unless
    • Implicit return s
    • String interpolations
  • 10. Things that feel weird to Rubyists
    • Parentheses are not optional on functions with no arguments
    • It’s just JavaScript™
  • 11. Things that feel weird to JavaScripters
    • CoffeeScript’s of is JavaScript’s in
    • CoffeeScript’s in is Python’s in
    • CoffeeScript’s == is JavaScript’s ===
  • 12. Tradeoffs
    • Debugging (will get better, but currently kind of a pain)
    • Changing versions (though it’s been pretty stable for the last 5 months)
    • Less documentation (but there is a book from PragProg...)
  • 13. Even so!
    • After only a week of using CoffeeScript, I felt more productive than I ever had in JavaScript.
    • The community is awesome.
    • Learning CoffeeScript might make you think more deeply about JavaScript.
  • 14. Part II CoffeeScript in Rails 3.1 CoffeeScript in Rails 3.1
  • 15. Let’s make a Rails app!
    • rails new EndToEnd
    • cd EndToEnd
    • rails generate controller User signup
    • Clone the repo if you want to follow along... http://github.com/TrevorBurnham/EndToEnd )
  • 16. JavaScripts are assets
    • New in Rails 3.1, generate controller gives us a CoffeeScript file automatically:
  • 17. Compound extensions
    • .html.erb & .html.haml -> HTML
    • .css.scss & .css.sass -> CSS
    • .js.coffee -> JavaScript
    • Want to use a different format? Just rename! application.js -> application.js.coffee
  • 18. Compound extensions
    • Stylesheets and JavaScripts are automatically concatenated by Sprockets 2, even in development:
    • All the CSS and JS is loaded on every page, so it’s still up to you to isolate controller-specific functionality.
  • 19. Building a sign-up box
  • 20. Adding JS validations
  • 21. Great, but...
    • Client-side validations are just there to provide a friendlier user experience. What really matters are server-side validations.
    • Traditionally, we’d do this by using ActiveRecord, repeating much of the work we just did...
    • But there’s another way!
  • 22. Server-side JavaScript! (And CoffeeScript)
    • If you’ve got coffee-script in your Gemfile, then you’ve already got ExecJS: https://github.com/sstephenson/execjs
    • It uses the best available JS environment on your system. Use therubyracer (or therubyracer-heroku ) for maximum portability.
  • 23. No need to rewrite the same validation code!
    • ExecJS lets us turn our CoffeeScript validation script into a Ruby object:
  • 24. A small taste of what’s to come what’s to come
    • Future plugins will make the server-side JS process smoother in Rails
    • With jsdom, you can do practically anything that you could do with client-side JS (including manipulating HTML with jQuery!)
    • Validation, templating... anything you’re duplicating can be done as end-to-end JS.
  • 25. How can you become a CoffeeScript ninja?
    • Official site, great overview: http://coffeescript.org
    • Nice screencast: http://peepcode.com/products/coffeescript
    • Totally unbiased book recommendation: http://coffeescript-book.com
  • 26. Thanks
    • Questions? [email_address]