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 ...

See more details below
Programming in CoffeeScript

Available on NOOK devices and apps  
  • NOOK Devices
  • Samsung Galaxy Tab 4 NOOK 7.0
  • Samsung Galaxy Tab 4 NOOK 10.1
  • NOOK HD Tablet
  • NOOK HD+ Tablet
  • NOOK eReaders
  • 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
  • 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)