Node.js - Professionell hochperformante Software entwickeln

Robert Prediger, Ralph Winzinger

Node.js

Professionell hochperformante Software entwickeln

2015

368 Seiten

Format: PDF, ePUB, Online Lesen

E-Book: €  34,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446437586

 

Vorwort

12

..... und ihre Motivation

14

Das Zielpublikum

14

Das Buch

15

Die Welt von JavaScript

16

1 Hello, Node.js

18

1.2 Installation

25

1.2.1 Windows

25

1.2.2 Mac OS X

25

1.2.3 Debian

26

1.2.4 Ubuntu

26

1.2.5 openSUSE und SLE

27

1.2.6 Fedora

28

1.2.7 RHEL und CentOS

28

1.3 IDEs

28

1.3.1 cloud9

29

1.3.2 WebStorm

31

1.3.3 Nodeclipse

32

1.3.4 WebMatrix/VisualStudio

33

1.3.5 Atom

33

1.4 nvm & nodist – mit Node-Versionen jonglieren

34

1.4.1 *ix-Systeme

35

1.4.2 Windows

36

1.5 npm – Node Packaged Modules

38

1.5.1 npm install – ein Modul laden

39

1.5.2 Global? Lokal?

40

1.5.3 package.json

41

1.5.4 Module patchen

41

1.5.5 Browserify

45

1.6 Kein Code?

47

2 You build it .....

52

2.1 File I/O

53

2.1.1 Dateifunktionen in Node.js

53

2.1.2 Permissions

56

2.1.3 „watch“ – Änderungen im Auge behalten

57

2.1.4 Erweiterungen

58

2.1.4.1 Modul „fs-extra“

59

2.1.4.2 Modul „file“

60

2.1.4.3 Modul „find“

60

2.1.4.4 Modul „properties“

61

2.1.4.5 Modul „token-filter“

62

2.2 Streams

63

2.2.1 Aus Streams lesen .....

64

2.2.1.1 Objekte und Strings

65

2.2.2 ..... und in Streams schreiben

66

2.2.2.1 Streams verknüpfen

66

2.2.3 Eigene Streams implementieren

67

2.2.3.1 Ein Random-Number-Generator

68

2.2.3.2 Ein Daten-Lösch-Stream

70

2.2.3.3 Ein Verschlüsselungsserver für geheime Botschaften

71

2.2.4 Buffers and Strings

73

2.3 Daten für immer

74

2.3.1 Neo4j

74

2.3.1.1 Asynchron?

77

2.3.1.2 Querying Neo4j

78

2.3.1.3 Cypher für Abfragen

79

2.3.1.4 Indizes

81

2.3.1.5 Cypher für Batches

82

2.3.2 MongoDB

83

2.3.2.1 Wann sind Daten geschrieben?

84

2.3.2.2 _id

85

2.3.2.3 Die Mongo-API

85

2.4 Sichtbarkeit erzeugen – im Web

90

2.4.1 Middleware Framework Connect

90

2.4.1.1 Installation und einführendes Beispiel

91

2.4.1.2 Ausprägungen von Connect-Middleware-Typen

92

2.4.1.3 Integrierte Middleware-Komponenten

94

2.4.1.4 Middleware-Strukturen

102

2.4.2 Webentwicklung mit Express

107

2.4.2.1 Ready for take off: Installation und Einführungsbeispiel

108

2.4.2.2 Routing von HTTP-Anfragen

111

2.4.2.3 Views und Web-Templating

115

2.4.3 Express 4

116

2.4.4 Jade

118

2.4.4.1 Einbindung in Express

120

2.4.4.2 Sprachelemente von Jade

120

2.4.5 swig

133

2.4.5.1 Grundeinstellungen

133

2.4.5.2 Einbindung in Express

134

2.4.5.3 Sprachelemente von swig

135

2.4.5.4 Filterliste

138

2.4.5.5 Verketten von Filtern

141

2.4.5.6 Die swig-API

141

2.4.5.7 Eigene Funktionalitäten hinzufügen

143

2.4.6 Sessions & Authentifizierung

144

2.4.6.1 Ich will Kekse und biete dafür eine Session

145

2.4.6.2 Authentifizierung (Authentication)

147

2.4.6.3 Facebook

150

2.4.6.4 Twitter

151

2.4.6.5 Google

152

2.5 socket.io

153

2.5.1 Verbindung herstellen

154

2.5.2 Kommunikation

155

2.5.3 Broadcast

156

2.5.4 Private Daten

156

2.5.5 Rückantwort und Bestätigung

156

2.5.6 Namespaces

157

2.5.7 Räume

158

2.5.8 Autorisierung

160

2.5.8.1 Globale Autorisierung

160

2.5.8.2 Autorierung mit Namespaceses

161

2.5.8.3 Benutzerdefinierte Variablen und Autorisierung

162

2.5.9 Sessions mit „socket.io-session“

162

2.5.9.1 socket.io-bundle

162

2.5.9.2 socket.io-passport

163

2.5.10 Version 1.0

164

2.6 Node.js und Webservices

168

2.6.1 SOAP-Services

168

2.6.1.1 Von und nach SOAP

170

2.6.2 REST-Services

180

2.6.2.1 Von Nomen, Verben und Routen

181

2.6.2.2 Ansichtssache? Verhandlungssache

185

2.6.2.3 Fehlermeldungen

187

2.6.2.4 Plug-ins

188

2.6.2.5 Sicherheit und Authentifizierung

193

2.6.3 XML-Verarbeitung

200

2.6.3.1 XML-Parsing

200

2.6.3.2 XML-Erzeugung und -Veränderung

206

2.6.3.3 Exkurs: Ein (selbst unterschriebenes) Zertifikat erstellen

208

2.7 Clustering

210

2.7.1 Methoden und Eigenschaften von cluster

214

2.7.1.1 isMaster/isWorker

214

2.7.1.2 fork/online – Event

214

2.7.1.3 exit – Event

215

2.7.1.4 workers

215

2.7.2 Der Master

215

2.7.2.1 setupMaster()

216

2.7.2.2 fork()

217

2.7.2.3 disconnect()

217

2.7.3 Der Worker

218

2.7.3.1 Die Attribute „id“ und „process“

218

2.7.3.2 Das suicide-Attribut

218

2.7.3.3 kill() & disconnect()

218

2.8 Der Callback-Hölle entfliehen

219

2.8.1 async

220

2.8.1.1 Kontrollfluss

222

2.8.2 Q

229

2.8.2.1 then

231

2.8.2.2 fail

232

2.8.2.3 progress

232

2.9 Auf Herz und Nieren –

2.9 Auf Herz und Nieren –

233

233

2.9.1 Mocha

234

2.9.1.1 Asynchrone Aufrufe und Timeouts

237

2.9.1.2 Set-Up & Tear-Down

239

2.9.1.3 Only & Skip

240

2.9.1.4 Mocha im Browser

240

2.9.2 Assert & Chai

242

2.9.2.1 Assert

242

2.9.2.2 Chai

244

2.9.3 Sinon

249

2.9.3.1 Spies

251

2.9.3.2 Stubs

252

2.9.3.3 Mocks

253

2.9.3.4 Faked Timers

254

2.9.4 Jasmine

255

2.9.5 Continuous Test

256

2.9.5.1 Mocha & Jasmine im Überwachungsmodus

256

2.9.5.2 Travis-CI

257

3 ..... you run it!

262

3.1.1 Patterns & Style

263

3.1.1.1 package.json

264

3.1.1.2 Import & Export

265

3.1.1.3 Tests

266

3.1.1.4 Dokumentation

267

3.1.2 Ausführbare Module

269

3.1.3 Module mit nativen Abhängigkeiten

271

3.1.3.1 OS Libraries

272

3.1.3.2 Sourcecode Dependencies

273

3.1.3.3 Hands-On mit Add-On

274

3.1.4 It works on my machine – Dependency Hell

283

3.1.5 Veröffentlichung von Modulen

286

3.1.5.1 Einen Benutzer erzeugen .....

286

3.1.5.2 ..... und das Modul publizieren

286

3.2 Private Repositories für npm

287

3.2.1 reggie

288

3.2.1.1 Inbetriebnahme

288

3.2.1.2 reggie publish

289

3.2.1.3 Laden von Modulen

289

3.2.1.4 HTTP-Abfragen

291

3.2.1.5 npm-Client

291

3.2.2 sinopia

292

3.3 Deployment

294

3.3.1 Ein eigener Server

295

3.3.1.1 Docker

295

3.3.1.2 Modul „forever“

297

3.3.1.3 pm2

301

3.3.1.4 git-deploy

307

3.3.2 Cloud

308

3.3.2.1 PaaS-Provider

308

3.3.2.2 Server-Systeme

312

3.4 Was Node.js antreibt ..... V8 Engine

313

3.4.1 Architektur

314

3.4.2 Die Performance-Tricks

316

3.4.2.1 „Fast Property Access“

317

3.4.2.2 Arrays

318

3.4.2.3 Kein Interpretationsspielraum

319

3.4.2.4 Garbage Collection

319

3.4.2.5 Caching Modules

320

3.5 Logging

321

3.5.1 debug

321

3.5.2 winston

324

3.5.2.1 Transportmechanismen

324

3.5.2.2 Logger-Instanz

325

3.5.2.3 Logging Levels

326

3.5.2.4 Strukturierte Daten loggen

326

3.5.2.5 Profiling

327

3.5.3 Bunyan

328

3.5.3.1 Konfiguration

329

3.5.3.2 Child Logger

330

3.5.3.3 Die „src“-Option

331

3.5.3.4 Streams

331

3.6 Debugging

332

3.6.1 Der Node-Debugger

332

3.6.2 Node-Inspector

335

3.7 Monitoring

338

3.7.1 Kommerzielle Monitoring-Services

340

3.7.1.1 New Relic

340

3.7.1.2 Nodetime

342

3.7.1.3 StrongOps

346

3.8 Alternativen zu Node.js

351

3.8.1 Vert.x – die polyglotte JVM-Alternative

352

3.8.1.1 Architektur

352

3.8.1.2 Hands-On

359

3.8.1.3 Node.js oder Vert.x?

364

Index

366

 

© 2009-2024 ciando GmbH