Programming in CoffeeScript [NOOK Book]


Use CoffeeScript to Write Better JavaScript Code Than Ever Before!

If you can do it in JavaScript, you can do it better in CoffeeScript. And, since CoffeeScript “compiles down” to JavaScript, your code will fit neatly into virtually any web environment. In Programming in CoffeeScript, Mark Bates shows web developers why CoffeeScript is so useful and how it avoids the problems that often make JavaScript code buggy and unmanageable. He guides you through every feature and ...

See more details below
Programming in CoffeeScript

Available on NOOK devices and apps  
  • NOOK Devices
  • Samsung Galaxy Tab 4 NOOK
  • NOOK HD/HD+ Tablet
  • NOOK
  • NOOK Color
  • NOOK Tablet
  • Tablet/Phone
  • NOOK for Windows 8 Tablet
  • NOOK for iOS
  • NOOK for Android
  • NOOK Kids for iPad
  • PC/Mac
  • NOOK for Windows 8
  • NOOK for PC
  • NOOK for Mac

Want a NOOK? Explore Now

NOOK Book (eBook)
$17.99 price
(Save 43%)$31.99 List Price


Use CoffeeScript to Write Better JavaScript Code Than Ever Before!

If you can do it in JavaScript, you can do it better in CoffeeScript. And, since CoffeeScript “compiles down” to JavaScript, your code will fit neatly into virtually any web environment. In Programming in CoffeeScript, Mark Bates shows web developers why CoffeeScript is so useful and how it avoids the problems that often make JavaScript code buggy and unmanageable. He guides you through every feature and technique you need to write quality CoffeeScript code and shows how to take advantage of CoffeeScript’s increasingly robust toolset.

Bates begins with the absolute basics of running and compiling CoffeeScript and then introduces syntax, control structures, functions, collections, and classes. Through same page code comparisons, you’ll discover exactly how CoffeeScript improves on JavaScript. Next, you’ll put it to work in building applications that are powerful, flexible, maintainable, concise, reliable, and secure. Bates shares valuable tips for better development, illuminating CoffeeScript’s hidden gems and warning you about its remaining “rough edges.” The book concludes with a start-to-finish application case study showing how to code back-ends and front-ends and integrate powerful frameworks and libraries. Coverage includes

  • Understanding the right ways to compile and execute CoffeeScript

  • Using CoffeeScript’s clean syntax to focus on your code, not JavaScript’s distractions

  • Working with CoffeeScript’s control structures, functions, and arguments

  • Taking full advantage of CoffeeScript’s implementation of collections and iterators

  • Leveraging CoffeeScript’s full class support to create complex data models

  • Automating common application development tasks with Cake and Cakefiles

  • Configuring Jasmine with CoffeeScript support, and using it to systematically test your code

  • Writing Node.js server-side applications in CoffeeScript

  • Using CoffeeScript to write jQuery and Backbone.js applications

  • Integrating framework code to avoid “reinventing the wheel”

Want a better way to create the JavaScript code your web applications need? CoffeeScript is the solution–and this book will help you master it!

Read More Show Less

Product Details

  • ISBN-13: 9780132946148
  • Publisher: Pearson Education
  • Publication date: 6/7/2012
  • Series: Developer's Library
  • Sold by: Barnes & Noble
  • Format: eBook
  • Edition number: 1
  • Pages: 320
  • Sales rank: 1,188,815
  • File size: 12 MB
  • Note: This product may take a few minutes to download.

Meet the Author

Mark Bates is the founder and chief architect of the Boston-based consulting company Meta42 Labs. Mark spends his days focusing on new application development and consulting for his clients. At night he writes books, raises kids, and occasionally he forms a band and “tries to make it.”

Mark has been writing web applications, in one form or another, since 1996. His career started as a UI developer writing HTML and JavaScript applications before moving toward the middle(ware) with Java and Ruby. Nowadays, Mark spends his days cheating on Ruby with his new mistress, CoffeeScript.

Always wanting to share his wisdom, or more correctly just wanting to hear the sound of his own voice, Mark has spoken at several high-profile conferences, including RubyConf, RailsConf, and jQueryConf. Mark has also taught classes on Ruby and Ruby on Rails. In 2009 Mark’s first (surprisingly not his last!) book, Distributed Programming with Ruby, was published by Addison-Wesley.

Mark lives just outside of Boston with his wife, Rachel, and their two sons, Dylan and Leo. Mark can be found on the web at:,, and

Read More Show Less

Table of Contents

Dedication v

Acknowledgments xii

About the Author xiv

Preface xv

What Is CoffeeScript? xvii

Who Is This Book For? xix

How to Read This Book xix

How This Book Is Organized xxi

Part I: Core CoffeeScript xxii

Part II: CoffeeScript in Practice xxii

Installing CoffeeScript xxiii

How to Run the Examples xxiii

Notes xxiv

Part I: Core CoffeeScript

1 Getting Started 3

The CoffeeScript REPL 3

In-Browser Compilation 6

Caveats 7

Command-Line Compilation 7

The compile Flag 7

The CoffeeScript CLI 8

The output Flag 9

The bare Flag 9

The print Flag 10

The watch Flag 10

Executing CoffeeScript Files 11

Other Options 11

Wrapping Up 12

Notes 12

2 The Basics 13

Syntax 13

Significant Whitespace 14

Function Keyword 16

Parentheses 16

Scope and Variables 18

Variable Scope in JavaScript 18

Variable Scope in CoffeeScript 19

The Anonymous Wrapper Function 20

Interpolation 23

String Interpolation 23

Interpolated Strings 23

Literal Strings 25

Heredocs 28

Comments 29

Inline Comments 29

Block Comments 30

Extended Regular Expressions 31

Wrapping Up 31

Notes 32

3 Control Structures 33

Operators and Aliases 33

Arithmetic 33

Assignment 35

Comparison 39

String 42

The Existential Operator 43

Aliases 46

The is and isnt Aliases 47

The not Alias 48

The and and or Aliases 49

The Boolean Aliases 50

The @ Alias 51

If/Unless 52

The if Statement 53

The if/else Statement 54

The if/else if Statement 56

The unless Statement 58

Inline Conditionals 60

Switch/Case Statements 60

Wrapping Up 63

Notes 63

4 Functions and Arguments 65

Function Basics 68

Arguments 70

Default Arguments 72

Splats... 75

Wrapping Up 79

Notes 79

5 Collections and Iterations 81

Arrays 81

Testing Inclusion 83

Swapping Assignment 85

Multiple Assignment aka Destructing Assignment 86

Ranges 90

Slicing Arrays 92

Replacing Array Values 94

Injecting Values 95

Objects/Hashes 96

Getting/Setting Attributes 101

Destructuring Assignment 103

Loops and Iteration 105

Iterating Arrays 105

The by Keyword 106

The when Keyword 107

Iterating Objects 108

The by Keyword 109

The when Keyword 109

The own Keyword 110

while Loops 113

until Loops 114

Comprehensions 116

The do Keyword 119

Wrapping Up 120

Notes 121

6 Classes 123

Defining Classes 123

Defining Functions 125

The constructor Function 126

Scope in Classes 127

Extending Classes 137

Class-Level Functions 145

Prototype Functions 150

Binding (-> Versus =>) 151

Wrapping Up 158

Notes 158

Part II: CoffeeScript in Practice

7 Cake and Cakefiles 161

Getting Started 161

Creating Cake Tasks 162

Running Cake Tasks 163

Using Options 163

Invoking Other Tasks 167

Wrapping Up 169

Notes 170

8 Testing with Jasmine 171

Installing Jasmine 172

Setting Up Jasmine 172

Introduction to Jasmine 175

Unit Testing 176

Before and After 181

Custom Matchers 187

Wrapping Up 190

Notes 191

9 Intro to Node.js 193

What Is Node.js? 193

Installing Node 194

Getting Started 195

Streaming Responses 197

Building a CoffeeScript Server 199

Trying Out the Server 214

Wrapping Up 215

Notes 215

10 Example: Todo List Part 1 (Server-side) 217

Installing and Setting Up Express 218

Setting Up MongoDB Using Mongoose 222

Writing the Todo API 225

Querying with Mongoose 226

Finding All Todos 227

Creating New Todos 228

Getting, Updating, and Destroying a Todo 230

Cleaning Up the Controller 232

Wrapping Up 236

Notes 236

11 Example: Todo List Part 2 (Client-side w/ jQuery) 237

Priming the HTML with Twitter Bootstrap 237

Interacting with jQuery 240

Hooking Up the New Todo Form 242

Cleaning Up the Todo List with Underscore.js

Templates 244

Listing Existing Todos 247

Updating Todos 248

Deleting Todos 252

Wrapping Up 253

Notes 253

12 Example: Todo List Part 3 (Client-side w/ Backbone.js) 255

What Is Backbone.js? 255

Cleaning Up 256

Setting Up Backbone.js 256

Writing our Todo Model and Collection 260

Listing Todos Using a View 263

Creating New Todos 265

A View per Todo 268

Updating and Validating Models from Views 270

Validation 272

Deleting Models from Views 273

Wrapping Up 275

Notes 275

Index 2 77

Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Terms of Use.
  • - Barnes & reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)