Register your product to gain access to bonus material or receive a coupon.
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
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!
"The Best Programming Advice I Ever Got" with Mark Bates
CoffeeScript in a Nutshell, Part 1: An Introduction to CoffeeScript
CoffeeScript in a Nutshell, Part 2: CoffeeScript Language Basics
CoffeeScript in a Nutshell, Part 3: CoffeeScript Functions and Classes
CoffeeScript in a Nutshell, Part 4: Developing Applications
Testing Your JavaScript/CoffeeScript, Part 1 of 2: Setting Up a Test Framework in Ruby on Rails
Testing Your JavaScript/CoffeeScript, Part 2 of 2: Writing Tests
Author suggested sites: www.metabates.com/
A link from Programming in CoffeeScript can be found here: http://www.metabates.com/books/.
How to Use Functions and Arguments in CoffeeScript
Download the sample pages (includes Chapter 4 and Index)
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