Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CONTENTS
- PART I: GETTING STARTED: SETUP AND CONCEPTS
- 5
- Chapter 1: The Setup
- 7
- Installing on Windows
- 8
- Installing on OS X
- 8
- Installing on Linux
- 8
- Compiling 9
- Ensuring that it works
- 9
- The Node REPL
- 9
- Executing a file
- 10
- NPM 10
- Installing modules
- 11
- Defining your own module
- 12
- Installing binary utilities
- 13
- Exploring the NPM registry 14
- Summary 14
- Chapter 2: JavaScript: An Overview
- 15
- Introduction 15
- Basic JavaScript
- 16
- Types 16
- Type hiccups
- 16
- Functions 18
- this, Function#call, and Function#apply
- 18
- Function arity
- 19
- Closures 19
- Classes 20
- Inheritance 20
- try {} catch {}
- 21
- v8 JavaScript
- 22
- Object#keys 22
- Array#isArray 23
- Array methods
- 23
- String methods
- 24
- JSON 24
- Function#bind 24
- CONTENTS
- Function#name 24
- _proto_ (inheritance)
- 25
- Accessors 25
- Summary 26
- Chapter 3: Blocking and Non-blocking IO
- 27
- With great power comes great responsibility
- 28
- Blocking-ness 29
- A single-threaded world
- 31
- Error handling
- 33
- Stack traces
- 35
- Summary 37
- Chapter 4: Node JavaScript
- 39
- The global object
- 40
- Useful globals
- 40
- The module system
- 41
- Absolute and relative modules
- 41
- Exposing APIs
- 44
- Events 45
- Buffers 47
- Summary 48
- PART II: ESSENTIAL NODE APIS
- 49
- Chapter 5: CLI and FS APIs: Your First Application
- 51
- Requirements 52
- Writing your first program
- 52
- Creating the module
- 53
- Sync or async?
- 54
- Understanding streams
- 55
- Input and ouput
- 57
- Refactoring 59
- Interacting with the fs
- 61
- Exploring the CLI
- 63
- Argv 63
- Working directory
- 64
- Environmental variables
- 65
- Exiting 65
- Signals 65
- ANSI escape codes
- 66
- Exploring the fs module
- 66
- Streams 67
- Watch 67
- Summary 68
- v
- vi
- CONTENTS
- Chapter 6: TCP 69
- What are the characteristics of TCP?
- 70
- Connection-oriented communication
- and same-order delivery
- 70
- Byte orientation
- 70
- Reliability 71
- Flow control
- 71
- Congestion control
- 71
- Telnet 71
- A TCP chat program
- 74
- Creating the module
- 74
- Understanding the net.server API
- 74
- Receiving connections
- 76
- The data event
- 77
- State and keeping track of connections
- 79
- Wrap up
- 81
- An IRC Client program
- 83
- Creating the module
- 83
- Understanding the net#Stream API
- 84
- Implementing part of the IRC protocol
- 84
- Testing with a real-world IRC server
- 85
- Summary 85
- Chapter 7: HTTP 87
- The structure of HTTP
- 88
- Headers 89
- Connections 93
- A simple web server
- 94
- Creating the module
- 95
- Printing out the form
- 95
- Methods and URLs
- 97
- Data 99
- Putting the pieces together
- 102
- Bullet-proofing 103
- A Twitter web client
- 104
- Creating the module
- 104
- Making a simple HTTP request
- 104
- Sending a body of data
- 106
- Getting tweets
- 107
- A superagent to the rescue
- 110
- Reloading HTTP servers with up
- 111
- Summary 112
- CONTENTS
- PART III: WEB DEVELOPMENT
- 113
- Chapter 8: Connect 115
- A simple website with HTTP
- 116
- A simple website with Connect
- 119
- Middleware 121
- Writing reusable middleware
- 122
- Static middleware
- 127
- Query 128
- Logger 129
- Body parser
- 131
- Cookies 134
- Session 134
- REDIS sessions
- 140
- methodOverride 141
- basicAuth 141
- Summary 144
- Chapter 9: Express 145
- A simple express app
- 146
- Creating the module
- 146
- HTML 146
- Setup 147
- Defining routes
- 148
- Search 150
- Run 152
- Settings 153
- Template engines
- 154
- Error handling
- 155
- Convenience methods
- 155
- Routes 157
- Middleware 159
- Organization strategies
- 160
- Summary 162
- Chapter 10: WebSocket 163
- AJAX 164
- HTML5 WebSocket
- 166
- An Echo Example
- 167
- Setting it up
- 167
- Setting up the server
- 168
- Setting up the client
- 169
- Running the server
- 170
- Mouse cursors
- 171
- Setting up the example
- 171
- Setting up the server
- 172
- vii
- viii C O N T E N T S
- Setting up the client
- 174
- Running the server
- 176
- The Challenges Ahead
- 177
- Close doesn’t mean disconnect
- 177
- JSON 177
- Reconnections 177
- Broadcasting 177
- WebSockets are HTML5: Older browsers don’t support them 177
- The solution
- 178
- Summary 178
- Chapter 11: Socket.IO 179
- Transports 180
- Disconnected versus closed
- 180
- Events 180
- Namespaces 181
- A chat program
- 182
- Setting up the program
- 182
- Setting up the server
- 182
- Setting up the client
- 183
- Events and Broadcasting
- 185
- Ensuring reception
- 190
- A DJ-by-turns application
- 191
- Extending the chat
- 191
- Integrating with the Grooveshark API
- 193
- Playing 196
- Summary 201
- PART IV: DATABASES
- 203
- Chapter 12: MongoDB 205
- Installation 207
- Accessing MongoDB: A user authentication example
- 208
- Setting up the application
- 208
- Creating the Express app
- 208
- Connecting to MongoDB
- 212
- Creating documents
- 214
- Finding documents
- 215
- Authentication middleware
- 217
- Validation 218
- Atomicity 219
- Safe mode
- 219
- Introducing Mongoose
- 220
- Defining a model
- 220
- Defining nested keys
- 222
- Defining embedded documents
- 222
- CONTENTS
- Setting up indexes
- 222
- Middleware 223
- Inspecting the state of the model
- 223
- Querying 224
- Extending queries
- 224
- Sorting 224
- Making Selections
- 224
- Limiting 225
- Skipping 225
- Populating keys automatically
- 225
- Casting 225
- A mongoose example
- 226
- Setting up the application
- 226
- Refactoring 226
- Setting up models
- 227
- Summary 229
- Chapter 13: MySQL 231
- node-mysql 232
- Setting it up
- 232
- Te Express app
- h
- 232
- Connecting to MySQL
- 234
- Initializing the script
- 234
- Creating data
- 238
- Fetching data
- 242
- sequelize 244
- Setting up sequelize
- 245
- Setting up the Express app
- 245
- Connecting sequelize
- 248
- Defining models and synchronizing
- 249
- Creating data
- 250
- Retrieving data
- 253
- Removing data
- 254
- Wrapping up
- 256
- Summary 257
- Chapter 14: Redis 259
- Installing Redis
- 261
- The Redis query language
- 261
- Data types
- 262
- Strings 263
- Hashes 263
- Lists 265
- Sets 265
- Sorted sets
- 266
- Redis and Node
- 266
- Implementing a social graph with node-redis
- 267
- Summary 276
- ix
- x
- CONTENTS
- PART V: TESTING
- 277
- Chapter 15: Code Sharing
- 279
- What can be shared?
- 280
- Writing compatible JavaScript
- 280
- Exposing modules
- 280
- Shimming ECMA APIs
- 282
- Shimming Node APIs
- 283
- Shimming browser APIs
- 284
- Cross-browser inheritance
- 284
- Putting it all together: browserbuild
- 285
- A basic example
- 286
- Summary 288
- Chapter 16: Testing 289
- Simple testing
- 290
- Te test subject
- h
- 290
- Te test strategy
- h
- 290
- Te test program
- h
- 291
- Expect.JS 292
- API overview
- 292
- Mocha 294
- Testing asynchronous code
- 295
- BDD style
- 297
- TDD style
- 298
- Exports style
- 298
- Taking Mocha to the browser
- 299
- Summary
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement