Home > Store

Programming in CoffeeScript

Register your product to gain access to bonus material or receive a coupon.

Programming in CoffeeScript


  • Sorry, this book is no longer in print.
Not for Sale

eBook (Watermarked)

  • Your Price: $25.59
  • List Price: $31.99
  • Includes EPUB, MOBI, and PDF
  • About eBook Formats
  • This eBook includes the following formats, accessible from your Account page after purchase:

    ePub EPUB The open industry format known for its reflowable content and usability on supported mobile devices.

    MOBI MOBI The eBook format compatible with the Amazon Kindle and Amazon Kindle applications.

    Adobe Reader PDF The popular standard, used most often with the free Adobe® Reader® software.

    This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.


  • Copyright 2012
  • Dimensions: 7" x 9-1/8"
  • Edition: 1st
  • Book
  • ISBN-10: 0-321-82010-X
  • ISBN-13: 978-0-321-82010-5

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!


Sample Content

Online Sample Chapter

How to Use Functions and Arguments in CoffeeScript

Sample Pages

Download the sample pages (includes Chapter 4 and Index)

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    277


Submit Errata

More Information

Unlimited one-month access with your purchase
Free Safari Membership