Pedro Teixeira 
Professional Node.js [PDF ebook] 
Building Javascript Based Scalable Software

สนับสนุน

Learn to build fast and scalable software in Java Script with Node.js

Node.js is a powerful and popular new framework for writing scalable network programs using Java Script. This no nonsense book begins with an overview of Node.js and then quickly dives into the code, core concepts, and APIs. In-depth coverage pares down the essentials to cover debugging, unit testing, and flow control so that you can start building and testing your own modules right away.


  • Covers node and asynchronous programming main concepts

  • Addresses the basics: modules, buffers, events, and timers

  • Explores streams, file systems, networking, and automated unit testing

  • Goes beyond the basics, and shares techniques and tools for debugging, unit testing, and flow control


If you already know Java Script and are curious about the power of Node.js, then this is the ideal book for you.

€28.99
วิธีการชำระเงิน

สารบัญ

INTRODUCTION xxvii

PART I: INTRODUCTION AND SETUP

CHAPTER 1: INSTALLING NODE 3

Installing Node on Windows 4

Installing on Mac OS X 5

Installing Node Using the Source Code 6

Choosing the Node Version 6

Downloading the Node Source Code 6

Building Node 7

Installing Node 7

Running Node 8

Setting Up and Using Node Package Manager 8

Using NPM to Install, Update, and Uninstall Packages 9

Summary 13

CHAPTER 2: INTRODUCING NODE 15

Introducing the Event-Driven Programming Style 16

How Node and Java Script Make Writing Asynchronous Applications Easier 17

What Are Closures? 18

How Closures Help When Programming Asynchronously 19

Summary 19

PART II: NODE CORE API BASICS

CHAPTER 3: LOADING MODULES 23

Understanding How Node Loads Modules 24

Exporting a Module 24

Loading a Module 25

Summary 28

CHAPTER 4: USING BUFFERS TO MANIPULATE, ENCODE, AND DECODE BINARY DATA 29

Creating a Buffer 30

Getting and Setting Bytes in a Buffer 30

Slicing a Buffer 32

Copying a Buffer 32

Decoding a Buffer 32

Summary 33

CHAPTER 5: USING THE EVENT EMITTER PATTERN TO SIMPLIFY EVENT BINDING 35

Understanding the Standard Callback Pattern 36

Understanding the Event Emitter Pattern 36

Understanding Event Types 37

Using the Event Emitter API 38

Binding Callbacks Using .add Listener() or .on() 38

Binding Multiple Event Listeners 39

Removing an Event Listener from an Event Emitter

Using .remove Listener() 40

Getting a Callback Executed at Most Once Using .once() 40

Removing All Event Listeners from an Event Emitter Using .remove All Listeners() 41

Creating an Event Emitter 41

Inheriting from Node Event Emitter 42

Emitting Events 42

Summary 43

CHAPTER 6: SCHEDULING THE EXECUTION OF FUNCTIONS USING TIMERS 45

Using set Timeout to Defer the Execution of a Function 46

Using clear Timeout to Cancel the Execution of a Function 46

Scheduling and Canceling the Repetitive Execution of a Function 47

Using process.next Tick to Defer the Execution of a Function Until the Next Event Loop Iteration 47

Blocking the Event Loop 48

Escaping the Event Loop 49

Using set Timeout Instead of set Interval to Force Serialization 49

Summary 50

PART III: FILES, PROCESSES, STREAMS, AND NETWORKING

CHAPTER 7: QUERYING, READING FROM, AND WRITING TO FILES 53

Manipulating File Paths 54

Normalizing Paths 54

Joining Paths 54

Resolving Paths 55

Finding the Relative Path Between Two Absolute Paths 55

Extracting Components of a Path 55

Determining the Existence of a Path 56

Introducing the fs Module 57

Querying File Statistics 57

Opening a File 58

Reading from a File 59

Writing to a File 60

Closing a File 60

Summary 62

CHAPTER 8: CREATING AND CONTROLLING EXTERNAL PROCESSES 63

Executing External Commands 64

Spawning Child Processes 69

Creating the Child Process 69

Listening for Data from the Child Process 69

Sending Data to the Child Process 70

Receiving Notification When the Child Process Exits 72

Signaling and Killing Processes 73

Summary 74

CHAPTER 9: READING AND WRITING STREAMS OF DATA 75

Using a Readable Stream 76

Waiting for Data 76

Pausing and Resuming a Stream 77

Knowing When the Stream Ends 77

Using Writable Streams 77

Writing Data into a Stream 78

Waiting for a Stream to Drain 78

Considering Some Stream Examples 78

Creating File-System Streams 79

Understanding Networking Streams 80

Avoiding the Slow Client Problem and Saving Your Server 80

Understanding the Slow Client Problem 80

Avoiding the Slow Client Problem 81

Using stream.pipe() to Prevent the Slow Client Problem and Assembling Readable and Writable Streams Using pipe() 82

Summary 82

CHAPTER 10: BUILDING TCP SERVERS 83

Creating a TCP Server 83

Using the Socket Object 85

Understanding Idle Sockets 86

Setting Up Keep-Alive 87

Using Delay or No Delay 87

Listening for Client Connections 88

Closing the Server 88

Handling Errors 88

Building a Simple TCP Chat Server 89

Accepting Connections 89

Reading Data from a Connection 90

Collecting All the Clients 90

Broadcasting Data 91

Removing Closed Connections 92

Using Your TCP Chat Server 93

Summary 93

CHAPTER 11: BUILDING HTTP SERVERS 95

Understanding the http.Server Request Object 97

Understanding the http.Server Response Object 98

Writing a Header 98

Changing or Setting a Header 99

Removing a Header 99

Writing a Piece of the Response Body 99

Streaming HTTP Chunked Responses 99

Piping a File 100

Piping the Output of Another Process 100

Shutting Down the Server 101

Example 1: Building a Server that Serves Static Files 101

Example 2: Making Use of HTTP Chunked Responses and Timers 102

Summary 102

CHAPTER 12: BUILDING A TCP CLIENT 103

Connecting to a Server 104

Sending and Receiving Data 105

Ending the Connection 105

Handling Errors 106

Building an Example Command-Line TCP Client 106

Connecting to the Server 107

Sending the Command Line to the Server 107

Printing Server Messages 107

Reconnecting if the Connection Dies 108

Closing the Connection 109

Putting the Client Together 111

Summary 112

CHAPTER 13: MAKING HTTP REQUESTS 113

Making GET Requests 113

Using Other HTTP Verbs 114

Inspecting the Response Object 115

Obtaining the Response Body 116

Streaming the Response Body 116

Pooling Sockets Using http.Agent 116

Using a Third-Party Request Module to Simplify HTTP Requests 118

Installing and Using Request 118

Creating a Testing Server 120

Following Redirects 121

Setting Some Request Options 123

Encoding the Request Body 125

Streaming 127

Using a Cookie Jar 127

Summary 128

CHAPTER 14: USING DATAGRAMS (UDP) 129

Understanding UDP 129

Understanding the Uses of UDP 130

Building a Datagram Server 130

Listening for Messages 130

Testing the Server 131

Inspecting Additional Message Information 132

Creating a Simple Datagram Echo Server 132

Waiting for Messages 132

Sending Messages Back to Senders 132

Putting the Echo Server Together 133

Building a Datagram Client 134

Creating the Client 134

Sending Messages 134

Closing the Socket 134

Creating a Simple Datagram Command-Line Client 135

Reading from the Command Line 135

Sending Data to the Server 135

Receiving Data from the Server 136

Putting the Command-Line UDP Client Together 136

Understanding and Using Datagram Multicast 136

Receiving Multicast Messages 137

Sending Multicast Messages 138

Understanding Maximum Datagram Size 138

Summary 138

CHAPTER 15: SECURING YOUR TCP SERVER WITH TLS/SSL 139

Understanding Private and Public Keys 139

Generating a Private Key 140

Generating a Public Key 140

Building a TLS Server 141

Initializing the Server 141

Listening for Connections 141

Reading Data from the Client 142

Sending Data to the Client 142

Ending the Connection 142

Building a TLS Client 143

Initializing the Client 143

Connecting to the Server 143

Verifying the Server Certificate 143

Sending Data to the Server 144

Reading Data from the Server 144

Ending the Connection 144

Building Some Examples 145

Creating a TLS Chat Server 145

Creating a TLS Command-Line Chat Client 146

Verifying the Client Certificate 147

Summary 148

CHAPTER 16: SECURING YOUR HTTP SERVER WITH HTTPS 149

Building a Secure HTTP Server 149

Setting Up the Server Options 150

Listening for Connections 150

Validating the HTTPS Client Certificate 151

Creating an HTTPS Client 152

Initializing the Client 152

Making the Request 152

Validating the HTTPS Server Certificate 153

Summary 154

PART IV: BUILDING AND DEBUGGING MODULES AND APPLICATIONS

CHAPTER 17: TESTING MODULES AND APPLICATIONS 157

Using a Test Runner 157

Writing Tests 158

Running Tests 159

Using an Assertion Testing Module 159

Using the assert Module 159

Using the Built-in Assertion Functions in Node-Tap 161

Testing Your Asynchronous Module 163

Summary 166

CHAPTER 18: DEBUGGING MODULES AND APPLICATIONS 167

Using console.log 167

Using Node’s Built-in Debugger 169

Using Node Inspector 173

Summary 175

CHAPTER 19: CONTROLLING THE CALLBACK FLOW 177

Understanding the Boomerang Effect 177

Avoiding the Boomerang Effect

by Declaring Functions 179

Using the async Flow Control Library 183

Executing in Series 184

Executing in Parallel 185

Cascading 186

Queuing 187

Iterating 189

Mapping 190

Reducing 191

Filtering 192

Detecting 193

Summary 194

PART V: BUILDING WEB APPLICATIONS

CHAPTER 20: BUILDING AND USING HTTP MIDDLEWARE 197

Understanding the Connect HTTP Middleware Framework 198

Building Your Own HTTP Middleware 198

Creating Asynchronous Middleware 200

Registering Callbacks Inside Middleware 201

Handling Errors Inside Middleware 203

Using the HTTP Middleware Bundled in Connect 206

Logging Requests 206

Handling Errors 208

Serving Static Files 209

Parsing the Query String 210

Parsing the Request Body 211

Parsing Cookies 212

Using a Session 213

Other Available Middleware 216

Summary 216

CHAPTER 21: MAKING A WEB APPLICATION USING EXPRESS.JS 217

Initializing Your Express.js Application 218

Setting Up Middleware in Your Application 220

Routing Requests 222

Handling Routes 222

Using Sessions 229

Using Route Middleware 234

Summary 238

CHAPTER 22: MAKING UNIVERSAL REAL-TIME WEB APPLICATIONS USING SOCKET.IO 241

Understanding How Web Sockets Work 242

Using Socket.IO to Build Web Socket Applications 243

Installing and Running Socket.IO on the Server 243

Building a Real-Time Web Chat with Socket.IO 245

Extending the Chat Application 250

Detecting Disconnections 254

Separating Users into Rooms 255

Using Namespaces 259

Distributing the Server-Side Application Using Redis 259

Summary 263

PART VI: CONNECTING TO DATABASES

CHAPTER 23: CONNECTING TO MYSQL USING NODE-MYSQL 267

Using a Library to Connect to and Communicate

with a My SQL Database 268

Adding Data to the Database with

Security Concerns in Mind 270

Reading Data Effi ciently 272

Summary 276

CHAPTER 24: CONNECTING TO COUCHDB USING NANO 277

Installing Nano 278

Connecting and Creating a Database 281

Storing Documents 285

Creating and Using Couch DB Views 286

Attaching Files to a Couch DB Document 298

Summary 310

CHAPTER 25: CONNECTING TO MONGODB USING MONGOOSE 311

Installing Mongoose 313

Understanding How Mongoose Uses Models to Encapsulate Database Access 313

Connecting to Mongo DB 314

Defining a Schema 314

Defining a Model 315

Using Validators 324

Using Modifiers 330

Using Getters 331

Using Virtual Attributes 332

Using Default Values 338

Defining Indexes 340

Referencing Other Documents Using DB Refs 341

Defining Instance Methods 347

Defining Static Methods 348

Summary 349

INDEX 351

เกี่ยวกับผู้แต่ง

Pedro Teixeira is a prolific open-source programmer and author of many Node.js modules. He is a founding partner of The Node Firm and a senior programmer at Nodejitsu Inc., the leading Node.js platform-as-a-service provider. He is also the author of the popular Node Tuts screencasts.
Wrox Professional guides are planned and written by working programmers to meet the real-world needs of programmers, developers, and IT professionals. Focused and relevant, they address the issues technology professionals face every day. They provide examples, practical solutions, and expert education in new technologies, all designed to help programmers do a better job.

ซื้อ eBook เล่มนี้และรับฟรีอีก 1 เล่ม!
ภาษา อังกฤษ ● รูป PDF ● ISBN 9781118227541 ● ขนาดไฟล์ 12.6 MB ● สำนักพิมพ์ John Wiley & Sons ● ประเทศ US ● การตีพิมพ์ 2012 ● ฉบับ 1 ● ที่สามารถดาวน์โหลดได้ 24 เดือน ● เงินตรา EUR ● ID 2570913 ● ป้องกันการคัดลอก ไม่มี

หนังสืออิเล็กทรอนิกส์เพิ่มเติมจากผู้แต่งคนเดียวกัน / บรรณาธิการ

2,799 หนังสืออิเล็กทรอนิกส์ในหมวดหมู่นี้