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

Like this? Share it with your network

Share

End to-End CoffeeScript

on

  • 8,402 views

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.

Statistics

Views

Total Views
8,402
Views on SlideShare
8,400
Embed Views
2

Actions

Likes
10
Downloads
127
Comments
0

2 Embeds 2

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

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

End to-End CoffeeScript Presentation 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]