Node.js: the comprehensive guide
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
New York, NY
Rheinwerk
2022
|
Ausgabe: | 1st edition |
Schriftenreihe: | Rheinwerk Computing
|
Schlagworte: | |
Online-Zugang: | Inhaltstext Inhaltsverzeichnis |
Beschreibung: | 834 Seiten Illustrationen 25.4 cm x 17.8 cm |
ISBN: | 9781493222926 1493222929 |
Internformat
MARC
LEADER | 00000nam a22000008c 4500 | ||
---|---|---|---|
001 | BV048623609 | ||
003 | DE-604 | ||
005 | 20230331 | ||
007 | t| | ||
008 | 221222s2022 gw a||| |||| 00||| eng d | ||
015 | |a 22,N26 |2 dnb | ||
016 | 7 | |a 1260567680 |2 DE-101 | |
020 | |a 9781493222926 |c : EUR 46.68 (DE), EUR 49.95 (DE) (freier Preis), EUR 51.40 (AT) (freier Preis), CHF 63.95 (freier Preis) |9 978-1-4932-2292-6 | ||
020 | |a 1493222929 |9 1-4932-2292-9 | ||
024 | 3 | |a 9781493222926 | |
028 | 5 | 2 | |a Bestellnummer: 459/22292 |
035 | |a (OCoLC)1374574432 | ||
035 | |a (DE-599)DNB1260567680 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a eng | |
044 | |a gw |c XA-DE | ||
049 | |a DE-92 |a DE-573 | ||
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
084 | |8 1\p |a 004 |2 23sdnb | ||
100 | 1 | |a Springer, Sebastian |e Verfasser |0 (DE-588)1041590202 |4 aut | |
240 | 1 | 0 | |a Node.js |
245 | 1 | 0 | |a Node.js |b the comprehensive guide |c Sebastian Springer |
250 | |a 1st edition | ||
264 | 1 | |a New York, NY |b Rheinwerk |c 2022 | |
300 | |a 834 Seiten |b Illustrationen |c 25.4 cm x 17.8 cm | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a Rheinwerk Computing | |
650 | 0 | 7 | |a Node.js |0 (DE-588)1027030742 |2 gnd |9 rswk-swf |
653 | |a NodeJS | ||
653 | |a Java Script | ||
653 | |a SAP JavaScript | ||
689 | 0 | 0 | |a Node.js |0 (DE-588)1027030742 |D s |
689 | 0 | |5 DE-604 | |
710 | 2 | |a Galileo Press Inc. |0 (DE-588)106510992X |4 pbl | |
856 | 4 | 2 | |m X:MVB |q text/html |u http://deposit.dnb.de/cgi-bin/dokserv?id=2d354e84bee4432886f085509aaf8320&prov=M&dok_var=1&dok_ext=htm |3 Inhaltstext |
856 | 4 | 2 | |m DNB Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=033998764&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
883 | 1 | |8 1\p |a vlb |d 20220622 |q DE-101 |u https://d-nb.info/provenance/plan#vlb | |
943 | 1 | |a oai:aleph.bib-bvb.de:BVB01-033998764 |
Datensatz im Suchindex
_version_ | 1816420208600940544 |
---|---|
adam_text |
CONTENTS
FOREWORD
.
25
PREFACE
.
27
1
BASIC
PRINCIPLES
31
1.1
THE
STORY
OF
NODE.JS
.
33
1.1.1
ORIGINS
.
33
1.1.2
BIRTH
OF
NODE.JS
.
34
1.1.3
BREAKTHROUGH
OF
NODE.JS
.
34
1.1.4
NODE.JS
CONQUERS
WINDOWS
.
35
1.1.5
IO.JS
:
THE
FORK
OF
NODE.JS
.
36
1.1.6
NODE.JS
REUNITED
.
36
1.1.7
DENO:
A
NEW
STAR
IN
THE
JAVASCRIPT
SKY
.
36
1.1.8
OPENJS
FOUNDATION
.
37
1.2
ORGANIZATION
OF
NODE.JS
.
37
1.2.1
TECHNICAL
STEERING
COMMITTEE
.
37
1.2.2
COLLABORATORS
.
37
1.2.3
COMMUNITY
COMMITTEE
.
38
1.2.4
WORKGROUPS
.
38
1.2.5
OPENJS
FOUNDATION
.
38
1.3
VERSIONING
OF
NODE.JS
.
38
1.3.1
LONG-TERM
SUPPORT
RELEASES
.
39
1.4
BENEFITS
OF
NODE.JS
.
40
1.5
AREAS
OF
USE
FOR
NODE.JS
.
40
1.6
THE
CORE:
V8
ENGINE
.
41
1.6.1
MEMORY
MODEL
.
42
1.6.2
ACCESSING
PROPERTIES
.
43
1.6.3
MACHINE
CODE
GENERATION
.
45
1.6.4
GARBAGE
COLLECTION
.
46
1.7
LIBRARIES
AROUND
THE
ENGINE
.
47
1.7.1
EVENT
LOOP
.
48
1.7.2
INPUT
AND
OUTPUT
.
50
1.7.3
LIBUV
.
50
1.7.4
DOMAIN
NAME
SYSTEM
.
51
1.7.5
CRYPTO
.
52
1.7.6
ZLIB
.
52
1.7.7
HTTP
PARSER
.
52
1.8
SUMMARY
.
53
2
INSTALLATION
55
2.1
INSTALLING
PACKAGES.
56
2.1.1
LINUX
.
57
2.1.2
WINDOWS
.
60
2.1.3
MACOS
.
63
2.2
COMPILING
AND
INSTALLING
.
68
2.3
NODE
VERSION
MANAGER
.
71
2.4
NODE
AND
DOCKER
.
71
2.5
SUMMARY
.
72
3
DEVELOPING
YOUR
FIRST
APPLICATION
73
========*==*=====**
3.1
INTERACTIVE
MODE
.
73
3.1.1
GENERAL
USE
.
74
3.1.2
OTHER
REPL
COMMANDS
.
75
3.1.3
SAVING
AND
LOADING
IN
THE
REPL
.
76
3.1.4
CONTEXT
OF
THE
REPL
.
77
3.1.5
REPL
HISTORY
.
77
3.1.6
REPL
MODE
.
78
3.1.7
SEARCHING
IN
THE
REPL
.
78
3.1.8
ASYNCHRONOUS
OPERATIONS
IN
THE
REPL
.
79
3.2
THE
FIRST
APPLICATION
.
79
3.2.1
WEB
SERVER
IN
NODE.JS
.
80
3.2.2
EXTENDING
THE
WEB
SERVER
.
83
3.2.3
CREATING
AN
HTML
RESPONSE
.
85
3.2.4
GENERATING
DYNAMIC
RESPONSES
.
86
3.3
DEBUGGING
NODE.JS
APPLICATIONS
.
88
3.3.1
NAVIGATING
IN
THE
DEBUGGER
.
90
3.3.2
INFORMATION
IN
THE
DEBUGGER
.
91
3.3.3
BREAKPOINTS
.
93
3.3.4
DEBUGGING
WITH
CHROME
DEVELOPER
TOOLS
.
96
3.3.5
DEBUGGING
IN
THE
DEVELOPMENT
ENVIRONMENT
.
97
3.4
NODEMON
DEVELOPMENT
TOOL
.
98
3.5
SUMMARY
.
99
4
NODE.JS
MODULES
101
4.1
MODULAR
STRUCTURE
.
101
4.2
CORE
MODULES
.
103
4.2.1
STABILITY
.
104
4.2.2
LIST
OF
CORE
MODULES
.
105
4.2.3
LOADING
CORE
MODULES
.
108
4.2.4
GLOBAL
OBJECTS
.
ILL
4.3
JAVASCRIPT
MODULE
SYSTEMS
.
121
4.3.1
COMMONJS
.
121
4.3.2
ECMASCRIPT
MODULES
.
122
4.4
CREATING
AND
USING
YOUR
OWN
MODULES
.
124
4.4.1
MODULES
IN
NODE.JS:
COMMONJS
.
125
4.4.2
CUSTOM
NODE.JS
MODULES
.
126
4.4.3
MODULES
IN
NODE.JS:
ECMASCRIPT
.
127
4.4.4
EXPORTING
DIFFERENT
TYPES
OF
DATA
.
129
4.4.5
THE
MODULES
MODULE
.
130
4.4.6
MODULE
LOADER
.
131
4.5
SUMMARY
.
135
5
HTTP
137
5.1
WEB
SERVER
.
137
5.1.1
SERVER
OBJECT
.
137
5.1.2
SERVER
EVENTS
.
142
5.1.3
REQUEST
OBJECT
.
145
5.1.4
HANDLING
THE
REQUEST
BODY
(UPDATE)
.
152
5.1.5
DELIVERING
STATIC
CONTENT
.
157
5.1.6
FILE
UPLOAD
.
159
5.1.7
FINE-TUNING
THE
FRONTEND
.
163
5.2
NODE.JS
AS
HTTP
CLIENT
.
164
5.2.1
REQUESTS
WITH
THE
HTTP
MODULE
.
164
5.2.2
THE
REQUEST
PACKAGE
.
165
5.2.3
HTML
PARSER
.
167
5.3
SECURE
COMMUNICATION
WITH
HTTPS
.
168
5.3.1
CREATING
CERTIFICATES
.
168
5.3.2
USING
HTTPS
IN
THE
WEB
SERVER
.
169
5.4
.
.
170
5.4.1
HTTP/2
SERVER
.
170
5.4.2
HTTP/2
CLIENT
.
173
5.5
SUMMARY
.
175
6
EXPRESS
177
6.1
STRUCTURE
.
177
6.2
INSTALLATION
.
178
6.3
BASIC
PRINCIPLES
.
179
6.3.1
REQUEST
.
180
6.3.2
RESPONSE
.
180
6.4
SETUP
.
181
6.4.1
STRUCTURE
OF
AN
APPLICATION
.
182
6.5
MOVIE
DATABASE
.
185
6.5.1
ROUTING
.
186
6.5.2
CONTROLLER
.
189
6.5.3
MODEL
.
190
6.5.4
VIEW
.
192
6.6
MIDDLEWARE
.
193
6.6.1
CUSTOM
MIDDLEWARE
.
194
6.6.2
MORGAN:
LOGGING
MIDDLEWARE
FOR
EXPRESS
.
195
6.6.3
DELIVERING
STATIC
CONTENT
.
197
6.7
EXTENDED
ROUTING:
DELETING
DATA
RECORDS
.
199
6.8
CREATING
AND
EDITING
DATA
RECORDS:
BODY
PARSER.
201
6.8.1
HANDLING
FORM
INPUT:
BODY
PARSER
.
205
6.9
EXPRESS
5
.
208
6.10
HTTPS
AND
HTTP/2
.
209
6.10.1
HTTPS
.
209
6.10.2
HTTP/2
.
210
6.11
SUMMARY
.
212
7
TEMPLATE
ENGINES
213
7.1
CUSTOM
TEMPLATE
ENGINE
.
214
7.2
TEMPLATE
ENGINES
IN
PRACTICE:
PUG
.
215
7.2.1
INSTALLATION
.
215
7.2.2
PUG
AND
EXPRESS:
INTEGRATION
.
216
7.2.3
VARIABLES
IN
PUG
.
219
7.2.4
SPECIFIC
FEATURES
OF
PUG
.
221
7.2.5
CONDITIONS
AND
LOOPS
.
222
7.2.6
EXTENDS
AND
INCLUDES
.
223
7.2.7
MIXINS
.
226
7.2.8
USING
PUG
WITHOUT
EXPRESS
.
228
7.2.9
COMPILING
.
228
7.3
HANDLEBARS
.
229
7.3.1
INSTALLATION
.
230
7.3.2
INTEGRATION
WITH
EXPRESS
.
230
7.3.3
CONDITIONS
AND
LOOPS
.
232
7.3.4
PARTIALS
.
234
7.3.5
CUSTOM
HELPERS
.
236
7.3.6
HANDLEBARS
WITHOUT
EXPRESS
.
238
7.4
SUMMARY
.
239
8
CONNECTING
DATABASES
241
8.1
NODE.JS
AND
RELATIONAL
DATABASES
.
242
8.1.1
MYSQL
.
242
8.1.2
SQLITE
.
251
8.1.3
OBJECT-RELATIONAL
MAPPING
.
257
8.2
NODE.JS
AND
NONRELATIONAL
DATABASES
.
260
8.2.1
REDIS
.
260
8.2.2
MONGODB
.
265
8.3
SUMMARY
.
272
9
AUTHENTICATION
AND
SESSION
HANDLING
273
9.1
PASSPORT
.
273
9.2
SETUP
AND
CONFIGURATION
.
274
9.2.1
INSTALLATION
.
274
9.2.2
CONFIGURATION
.
274
9.2.3
STRATEGY
CONFIGURATION
.
275
9.3
LOGGING
IN
TO
THE
APPLICATION
.
277
9.3.1
LOGIN
FORM
.
277
9.3.2
SECURING
RESOURCES
.
280
9.3.3
LOGGINGOUT
.
281
9.3.4
CONNECTING
TO
THE
DATABASE
.
282
9.4
ACCESSING
RESOURCES
.
285
9.4.1
ACCESS
RESTRICTION
.
285
9.4.2
SUBMITTING
RATINGS
.
289
9.5
SUMMARY
.
294
10
REST
SERVER
295
10.1
INTRODUCTION
TO
REST
AND
USAGE
IN
WEB
APPLICATIONS
.
295
10.2
ACCESSING
THE
APPLICATION
.
296
10.2.1
POSTMAN
.
296
10.2.2
CURL
.
297
10.3
ADAPTATIONS
TO
THE
APPLICATION
STRUCTURE
.
297
10.4
READ
REQUESTS.
298
10.4.1
READING
ALL
DATA
RECORDS
OF
A
RESOURCE
.
298
10.4.2
ACCESSING
A
DATA
RECORD
.
301
10.4.3
ERROR
HANDLING
.
302
10.4.4
SORTING
THE
LIST
.
304
10.4.5
CONTROLLING
THE
OUTPUT
FORMAT
.
307
10.5
WRITE
REQUESTS
.
309
10.5.1
POST:
CREATING
NEW
DATA
RECORDS
.
309
10.5.2
PUT
:
MODIFYING
EXISTING
DATA
RECORDS
.
312
10.5.3
DELETE:
DELETING
DATA
RECORDS
.
314
10.6 AUTHENTICATION
VIA
JWTS
.
316
10.6.1
LOGIN
.
317
10.6.2
SAFEGUARDING
RESOURCES
.
319
10.6.3
ACCESSING
USER
INFORMATION
IN
THE
TOKEN
.
321
10.7
OPENAPI
SPECIFICATION:
DOCUMENTATION
WITH
SWAGGER
.
324
10.8
VALIDATION
.
329
10.8.1
INSTALLATION
AND
FIRST
VALIDATION
.
330
10.8.2
CHECKING
REQUESTS
WITH
A
VALIDATION
SCHEMA
.
332
10.9
SUMMARY
.
335
11
GRAPHQL
337
11.1
GRAPHQL
LIBRARIES
.
338
11.2
INTEGRATION
WITH
EXPRESS
.
339
11.3
CRAPHIQL
.
341
11.4
READING
DATA
VIA
THE
INTERFACE
.
342
11.4.1
PARAMETERIZING
QUERIES
.
345
11.5
WRITE
ACCESSES
TO
THE
GRAPHQL
INTERFACE
.
347
11.5.1
CREATING
NEW
DATA
RECORDS
.
347
11.5.2
UPDATING
AND
DELETING
DATA
RECORDS
.
350
11.6
AUTHENTICATION
FOR
THE
GRAPHQL
INTERFACE
.
353
11.7
SUMMARY
.
355
12
REAL-TIME
WEB
APPLICATIONS
357
-======================******=***************"*
12.1
THE
SAMPLE
APPLICATION
.
358
12.2
SETUP
.
358
12.3
WEBSOCKETS.
364
12.3.1
THE
SERVER
SIDE
.
366
12.3.2
THE
CLIENT
SIDE
.
367
12.3.3
USER
LIST
.
370
12.3.4
LOGOUT
.
373
12.4
SOCKET.10
.
377
12.4.1
INSTALLATION
AND
INTEGRATION
.
378
12.4.2
SOCKET.10
API
.
379
12.5
SUMMARY
.
383
13
TYPE-SAFE
APPLICATIONS
IN
NODE.JS
385
13.1
TYPE
SYSTEMS
FOR
NODE.JS
.
386
13.1.1
FLOW
.
386
13.1.2
TYPESCRIPT
.
390
13.2
TOOLS
AND
CONFIGURATION
.
392
13.2.1
CONFIGURING
THE
TYPESCRIPT
COMPILER
.
393
13.2.2
INTEGRATION
INTO
THE
DEVELOPMENT
ENVIRONMENT
.
394
13.2.3
ESLINT
.
395
13.2.4
TS-NODE
.
396
13.3
BASIC
PRINCIPLES
.
398
13.3.1
DATA
TYPES
.
398
13.3.2
FUNCTIONS
.
400
13.3.3
MODULES
.
402
13.4
CLASSES
.
403
13.4.1
METHODS
.
404
13.4.2
ACCESS
MODIFIERS
.
405
13.4.3
INHERITANCE
.
405
13.5
INTERFACES
.
406
13.6
TYPE
ALIASES
IN
TYPESCRIPT
.
408
13.7
GENERICS
.
409
13.8
TYPESCRIPT
IN
USE
IN
A
NODE.JS
APPLICATION
.
410
13.8.1
TYPE
DEFINITIONS
.
410
13.8.2
CREATING
CUSTOM
TYPE
DEFINITIONS
.
410
13.8.3
SAMPLE
EXPRESS
APPLICATION
.
411
13.9
SUMMARY
.
412
14
WEB
APPLICATIONS
WITH
NEST
413
==========*************=*=****=#
14.1
INSTALLATION
AND
GETTING
STARTED
WITH
NEST
.
414
14.2
NEST
COMMAND-LINE
INTERFACE
.
416
14.2.1
COMMANDS
FOR
OPERATING
AND
RUNNING
THE
APPLICATION
.
416
14.2.2
CREATING
STRUCTURES
IN
THE
APPLICATION
.
418
14.3
STRUCTURE
OF
THE
APPLICATION
.
419
14.3.1
ROOT
DIRECTORY
WITH
THE
CONFIGURATION
FILES
.
419
14.3.2
SRC
DIRECTORY:
CORE
OF
THE
APPLICATION
.
420
14.3.3
OTHER
DIRECTORIES
OF
THE
APPLICATION
.
420
14.4
MODULES:
LOGICAL
UNITS
IN
THE
SOURCE
CODE
.
421
14.4.1
CREATING
MODULES
.
422
14.4.2
MODULE
DECORATOR
.
423
14.5
CONTROLLERS:
ENDPOINTS
OF
AN
APPLICATION
.
423
14.5.1
CREATING
A
CONTROLLER
.
424
14.5.2
IMPLEMENTING
A
CONTROLLER
.
424
14.5.3
INTEGRATING
AND
CHECKING
THE
CONTROLLER
.
426
14.6
PROVIDERS:
BUSINESS
LOGIC
OF
THE
APPLICATION
.
428
14.6.1
CREATING
AND
INCLUDING
A
SERVICE
.
428
14.6.2
IMPLEMENTING
THE
SERVICE
.
429
14.6.3
INTEGRATING
THE
SERVICE
VIA
NEST
'
S
DEPENDENCY
INJECTION
.
431
14.7
ACCESSING
DATABASES
.
432
14.7.1
SETUP
AND
INSTALLATION
.
432
14.7.2
ACCESSING
THE
DATABASE
.
435
14.8
DOCUMENTING
THE
ENDPOINTS
WITH
OPENAPI
.
439
14.9
AUTHENTICATION
.
442
14.9.1
SETUP
.
442
14.9.2
AUTHENTICATION
SERVICE
.
443
14.9.3
LOGIN
CONTROLLER:
ENDPOINT
FOR
USER
LOGIN
.
445
14.9.4
PROTECTING
ROUTES
.
446
14.10
OUTLOOK:
TESTING
IN
NEST
.
449
14.11
SUMMARY
.
451
15
NODE
ON
THE
COMMAND
LINE
453
15.1
BASIC
PRINCIPLES
.
453
15.1.1
STRUCTURE
.
454
15.1.2
EXECUTABILITY
.
455
15.2
STRUCTURE
OF
A
COMMAND-LINE
APPLICATION
.
456
15.2.1
FILE
AND
DIRECTORY
STRUCTURE
.
456
15.2.2
PACKAGE
DEFINITION
.
456
15.2.3
MATH
TRAINER
APPLICATION
.
457
15.3
ACCESSING
INPUT
AND
OUTPUT
.
461
15.3.1
OUTPUT
.
461
15.3.2
INPUT
.
462
15.3.3
USER
INTERACTION
WITH
THE
READLINE
MODULE
.
463
15.3.4
OPTIONS
AND
ARGUMENTS
.
467
15.4
TOOLS
.
469
15.4.1
COMMANDER
.
469
15.4.2
CHALK
.
471
15.4.3
NODE-EMOJI
.
473
15.5
SIGNALS
.
476
15.6
EXIT
CODES
.
478
15.7
SUMMARY
.
479
16
ASYNCHRONOUS
PROGRAMMING
481
16.1
BASIC
PRINCIPLES
OF
ASYNCHRONOUS
PROGRAMMING
.
481
16.1.1
THE
CHILD_PROCESS
MODULE
.
485
16.2
RUNNING
EXTERNAL
COMMANDS
ASYNCHRONOUSLY
.
486
16.2.1
THE
EXEC
METHOD
.
487
16.2.2
THE
SPAWN
METHOD
.
489
16.3
CREATING
NODE.JS
CHILD
PROCESSES
WITH
FORK
METHOD
.
492
16.4
THE
CLUSTER
MODULE
.
496
16.4.1
MAIN
PROCESS
.
497
16.4.2
WORKER
PROCESSES.
501
16.5
WORKER
THREADS
.
504
16.5.1
SHARED
MEMORY
IN
THE
WORKER_THREADS
MODULE
.
505
16.6
PROMISES
IN
NODE.JS
.
507
16.6.1
USING
UTIL.PROMISIFY
TO
USE
PROMISES
WHERE
NONE
ACTUALLY
EXIST
.
510
16.6.2
CONCATENATING
PROMISES
.
511
16.6.3
MULTIPLE
PARALLEL
OPERATIONS
WITH
PROMISE.ALL
.
512
16.6.4
FASTEST
ASYNCHRONOUS
OPERATION
WITH
PROMISE.RACE
.
513
16.6.5
OVERVIEW
OF
THE
PROMISE
FUNCTIONS
.
514
16.7
ASYNC
FUNCTIONS.
514
16.7.1
TOP-LEVEL
AWAIT
.
516
16.8
SUMMARY
.
517
17
RXJS
519
17.1
BASIC
PRINCIPLES
.
520
17.1.1
INSTALLATION
AND
INTEGRATION
.
521
17.1.2
OBSERVABLE
.
521
17.1.3
OBSERVER
.
522
17.1.4
OPERATOR
.
523
17.1.5
EXAMPLE
OF
RXJS
IN
NODE.JS
.
523
17.2
OPERATORS
.
525
17.2.1
CREATION
OPERATORS
.
527
17.2.2
TRANSFORMATION
OPERATORS
.
529
17.2.3
FILTERING
OPERATORS
.
532
17.2.4
JOIN
OPERATORS
.
534
17.2.5
ERROR
HANDLING
OPERATORS
.
535
17.2.6
UTILITY
OPERATORS
.
537
17.2.7
CONDITIONAL
OPERATORS
.
538
17.2.8
CONNECTION
OPERATORS
.
539
17.2.9
CONVERSION
OPERATORS
.
540
17.3
SUBJECTS.
540
17.4
SCHEDULERS
.
542
17.5
SUMMARY
.
543
18
STREAMS
545
==========*****==*==========**===**========*=*==========*========***==**=**#
18.1
INTRODUCTION
.
545
18.1.1
WHAT
ISA
STREAM?
.
545
18.1.2
STREAM
USAGES
.
546
18.1.3
AVAILABLE
STREAMS
.
546
18.1.4
STREAM
VERSIONS
IN
NODE.JS
.
547
18.1.5
STREAMS
ARE
EVENTEMITTERS
.
548
18.2
READABLE
STREAMS
.
548
18.2.1
CREATING
A
READABLE
STREAM
.
548
18.2.2
READABLE
STREAM
INTERFACE
.
550
18.2.3
EVENTS
OF
A
READABLE
STREAM
.
550
18.2.4
ERROR
HANDLING
IN
READABLE
STREAMS
.
552
18.2.5
METHODS
.
553
18.2.6
PIPING
.
553
18.2.7
READABLE
STREAM
MODES
.
554
18.2.8
SWITCHING
TO
FLOWING
MODE
.
554
18.2.9
SWITCHING
TO
THE
PAUSED
MODE
.
555
18.2.10
CUSTOM
READABLE
STREAMS
.
555
18.2.11
EXAMPLEOF
A
READABLE
STREAM
.
556
18.2.12
READABLE
SHORTCUT
.
558
18.3
WRITABLE
STREAMS
.
559
18.3.1
CREATING
A
WRITABLE
STREAM
.
560
18.3.2
EVENTS
.
560
18.3.3
ERROR
HANDLING
IN
WRITABLE
STREAMS
.
562
18.3.4
METHODS
.
562
18.3.5
BUFFERING
WRITE
OPERATIONS
.
563
18.3.6
FLOW
CONTROL
.
564
18.3.7
CUSTOM
WRITABLE
STREAMS
.
565
18.3.8
WRITABLE
SHORTCUT
.
566
18.4
DUPLEX
STREAMS
.
566
18.4.1
DUPLEX
STREAMS
IN
USE
.
566
18.4.2
CUSTOM
DUPLEX
STREAMS
.
567
18.4.3
DUPLEX
SHORTCUT
.
567
18.5
TRANSFORM
STREAMS
.
568
18.5.1
CUSTOM
TRANSFORM
STREAMS
.
568
18.5.2
TRANSFORM
SHORTCUT
.
569
18.6
GULP
.
570
18.6.1
INSTALLATION
.
570
18.6.2
EXAMPLE
OF
A
BUILD
PROCESS
WITH
GULP
.
571
18.7
SUMMARY
.
572
19
WORKING
WITH
FILES
573
19.1
SYNCHRONOUS
AND
ASYNCHRONOUS
FUNCTIONS
.
573
19.2
EXISTENCE
OF
FILES
.
575
19.3
READING
FILES
.
576
19.3.1
PROMISE-BASED
API
.
581
19.4
ERROR
HANDLING
.
582
19.5
WRITING
TO
FILES
.
582
19.6
DIRECTORY
OPERATIONS
.
586
19.7
ADVANCED
OPERATIONS
.
589
19.7.1
THE
WATCH
METHOD
.
591
19.7.2
ACCESS
PERMISSIONS
.
592
19.8
SUMMARY
.
594
20
SOCKET
SERVER
595
20.1
UNIX
SOCKETS
.
596
20.1.1
ACCESSING
THE
SOCKET
.
598
20.1.2
BIDIRECTIONAL
COMMUNICATION
.
600
20.2
WINDOWS
PIPES
.
602
20.3
TCP
SOCKETS
.
603
20.3.1
DATA
TRANSFER
.
605
20.3.2
FILETRANSFER
.
606
20.3.3
FLOW
CONTROL
.
607
20.3.4
DUPLEX
.
609
20.3.5
PIPE
.
609
20.4
UDP
SOCKETS
.
610
20.4.1
BASIC
PRINCIPLES
OF
A
UDP
SERVER
.
611
20.4.2
EXAMPLE
ILLUSTRATING
THE
UDP
SERVER
.
612
20.5
SUMMARY
.
614
21
PACKAGE
MANAGER
615
21.1
MOST
COMMON
OPERATIONS
.
616
21.1.1
SEARCHING
PACKAGES
.
616
21.1.2
INSTALLING
PACKAGES
.
617
21.1.3
VIEWING
INSTALLED
PACKAGES
.
622
21.1.4
USING
PACKAGES
.
623
21.1.5
UPDATING
PACKAGES
.
624
21.1.6
REMOVING
PACKAGES
.
625
21.1.7
OVERVIEW
OF
THE
MOST
IMPORTANT
COMMANDS
.
626
21.2
ADVANCED
OPERATIONS
.
627
21.2.1
STRUCTURE
OF
A
MODULE
.
627
21.2.2
CREATING
CUSTOM
PACKAGES
.
630
21.2.3
NODE
PACKAGE
MANAGER
SCRIPTS
.
632
21.3
TOOLS
FOR
NODE
PACKAGE
MANAGER
.
634
21.3.1
NODE
LICENSE
FINDER
.
634
21.3.2
VERDACCIO
.
635
21.3.3
.
.
636
21.3.4
NPX
.
637
21.4
YARN
.
637
21.5
SUMMARY
.
638
22
QUALITY
ASSURANCE
641
22.1
STYLE
GUIDES
.
642
22.1.1
AIRBNB
STYLE
GUIDE
.
642
22.2
LINTER
.
643
22.2.1
ESLINT
.
644
22.3
PRETTIER
.
648
22.3.1
INSTALLATION
.
649
22.3.2
EXECUTION
.
649
22.4
PROGRAMMING
MISTAKE
DETECTOR:
COPY/PASTE
DETECTOR
.
649
22.4.1
INSTALLATION
.
650
22.4.2
EXECUTION
.
651
22.5
HUSKY
.
652
22.6
SUMMARY
.
653
23
TESTING
655
23.1
UNIT
TESTING
.
655
23.1.1
DIRECTORY
STRUCTURE
.
656
23.1.2
UNIT
TESTS
AND
NODE.JS
.
656
23.1.3
ARRANGE,
ACT,
ASSERT
.
657
23.2
ASSERTION
TESTING
.
658
23.2.1
EXCEPTIONS
.
661
23.2.2
TESTING
PROMISES
.
662
23.3
JASMINE.
663
23.3.1
INSTALLATION
.
664
23.3.2
CONFIGURATION
.
664
23.3.3
TESTS
IN
JASMINE
.
665
23.3.4
ASSERTIONS
.
667
23.3.5
SPIES
.
670
23.3.6
BEFOREEACH
AND
AFTEREACH
.
671
23.4
JEST
.
671
23.4.1
INSTALLATION
.
671
23.4.2
FIRST
TEST
.
672
23.5
PRACTICAL
EXAMPLE
OF
UNIT
TESTS
WITH
JEST
.
674
23.5.1
THE
TEST
.
675
23.5.2
IMPLEMENTATION
.
676
23.5.3
TRIANGULATION:
SECOND
TEST
.
677
23.5.4
OPTIMIZING
THE
IMPLEMENTATION
.
678
23.6
DEALING
WITH
DEPENDENCIES:
MOCKING
.
679
23.7
SUMMARY
.
681
24
SECURITY
683
24.1
FILTER
INPUT
AND
ESCAPE
OUTPUT
.
684
24.1.1
FILTER
INPUT
.
684
24.1.2
BLACKLISTING
AND
WHITELISTING
.
684
24.1.3
ESCAPE
OUTPUT
.
685
24.2
PROTECTING
THE
SERVER
.
686
24.2.1
USER
PERMISSIONS
.
686
24.2.2
PROBLEMS
CAUSED
BY
THE
SINGLE-THREADED
APPROACH
.
688
24.2.3
DENIAL-OF-SERVICE
ATTACKS
.
690
24.2.4
REGULAR
EXPRESSIONS
.
692
24.2.5
HTTP
HEADER
.
693
24.2.6
ERROR
MESSAGES
.
695
24.2.7
SQL
INJECTIONS
.
695
24.2.8
EVAL
.
699
24.2.9
METHOD
INVOCATION
.
700
24.2.10
OVERWRITING
BUILT-INS
.
702
24.3
NODE
PACKAGE
MANAGER
SECURITY
.
704
24.3.1
PERMISSIONS
.
704
24.3.2
NODE
SECURITY
PLATFORM
.
705
24.3.3
QUALITY
ASPECT
.
705
24.3.4
NODE
PACKAGE
MANAGER
SCRIPTS
.
706
24.4
CLIENT
PROTECTION
.
707
24.4.1
CROSS-SITE
SCRIPTING
.
707
24.4.2
CROSS-SITE
REQUEST
FORGERY
.
709
24.5
SUMMARY
.
711
25
SCALABILITY
AND
DEPLOYMENT
713
25.1
DEPLOYMENT
.
713
25.1.1
SIMPLE
DEPLOYMENT
.
713
25.1.2
FILE
SYNCHRONIZATION
VIA
RSYNC
.
715
25.1.3
APPLICATION
AS
A
SERVICE
.
716
25.1.4
NODE_MODULES
IN
DEPLOYMENT
.
718
25.1.5
INSTALLING
APPLICATIONS
USING
NODE
PACKAGE
MANAGER
.
718
25.1.6
INSTALLING
PACKAGES
LOCALLY
.
720
25.2
TOOL
SUPPORT
.
720
25.2.1
GRUNT
.
721
25.2.2
GULP
.
721
25.2.3
NODE
PACKAGE
MANAGER
.
721
25.3
SCALING
.
721
25.3.1
CHILD
PROCESSES
.
722
25.3.2
LOAD
BALANCER
.
726
25.3.3
NODE
IN
THE
CLOUD
.
728
25.4
PM2:
PROCESS
MANAGEMENT
.
730
25.5
DOCKER
.
730
25.5.1
DOCKERFILE
.
731
25.5.2
STARTING
THE
CONTAINER
.
732
25.6
SUMMARY
.
732
26
PERFORMANCE
733
26.1
YOU
AREN'
T
GONNA
NEED
IT
.
733
26.2
CPU
.
734
26.2.1
CPU-BLOCKING
OPERATIONS
.
734
26.2.2
MEASURING
THE
CPU
LOAD
.
735
26.2.3
CPU
PROFILING
WITH
CHROME
DEVTOOLS
.
736
26.2.4
ALTERNATIVES
TO
THE
PROFILER:
CONSOLE.TIME
.
738
26.2.5
ALTERNATIVES
TO
THE
PROFILER:
PERFORMANCE-HOOKS
INTERFACE
.
739
26.3
MEMORY
.
741
26.3.1
MEMORY
LEAKS
.
742
26.3.2
MEMORY
ANALYSIS
IN
DEVTOOLS
.
743
26.3.3
NODE.JS
MEMORY
STATISTICS
.
745
26.4
NETWORK
.
747
26.5
SUMMARY
.
751
27
MICROSERVICES
WITH
NODE.JS
753
27.1
BASIC
PRINCIPLES
.
753
27.1.1
MONOLITHIC
ARCHITECTURE
.
753
27.1.2
MICROSERVICE
ARCHITECTURE
.
755
27.2
ARCHITECTURE
.
756
27.2.1
COMMUNICATION
BETWEEN
INDIVIDUAL
SERVICES
.
756
27.3
INFRASTRUCTURE
.
758
27.3.1
DOCKER
COMPOSE
.
759
27.4
ASYNCHRONOUS
MICROSERVICE
WITH
.
759
27.4.1
INSTALLATION
AND
SETUP
.
760
27.4.2
CONNECTING
TO
THE
RABBITMQ
SERVER
.
762
27.4.3
HANDLING
INCOMING
MESSAGES
.
763
27.4.4 DATABASE
CONNECTION
.
764
27.4.5
DOCKER
SETUP
.
765
27.5
API
GATEWAY
.
768
27.5.1
CONNECTING
THE
USER
SERVICE
.
768
27.5.2
ASYNCHRONOUS
COMMUNICATION
WITH
THE
USER
SERVICE
.
770
27.5.3
DOCKER
SETUP
OF
THE
API
GATEWAY
.
774
27.5.4
AUTHENTICATION
.
776
27.6
SYNCHRONOUS
MICROSERVICE
WITH
EXPRESS
.
780
27.6.1
SETUP
.
781
27.6.2
CONTROLLER
.
782
27.6.3
MODEL
IMPLEMENTATION
.
782
27.6.4
DOCKER
SETUP
.
784
27.6.5
INTEGRATION
INTO
THE
API
GATEWAY
.
786
27.7
SUMMARY
.
789
28
DENO
791
28.1
THE
TEN
THINGS
RYAN
DAHL
REGRETS
ABOUT
NODE.JS
.
791
28.1.1
PROMISES
.
791
28.1.2
SECURITY
.
792
28.1.3
THE
GENERATE
YOUR
PROJECTS
BUILD
SYSTEM
.
792
28.1.4
PACKAGE.JSON
.
792
28.1.5
NODE_MODULES
.
792
28.1.6
OPTIONAL
FILE
EXTENSION
WHEN
LOADING
MODULES
.
793
28.1.7
INDEX.JS
.
793
28.1.8
WHAT'S
GOING
ON
NOW
WITH
NODE.JS
.
793
28.2
INSTALLING
DENO
.
793
28.2.1
DENO
COMMAND-LINE
INTERFACE
.
794
28.3
EXECUTION
.
795
28.3.1
RUNNING
A
TYPESCRIPT
APPLICATION
.
796
28.4
HANDLING
FILES
.
796
28.4.1
THE
TASK:
COPYING
A
FILE
.
797
28.4.2
PROCESSING
COMMAND-LINE
OPTIONS
.
797
28.4.3
READING
FILES
.
798
28.4.4 PERMISSIONS
IN
DENO
.
800
28.4.5
READTEXTFILE
FUNCTION
.
801
28.4.6
WRITING
FILES
WITH
DENO
.
801
28.5 WEB
SERVER
WITH
DENO
.
803
28.6
MODULE
SYSTEM
.
804
28.6.1
LOADING
EXTERNAL
MODULES
INTO
DENO
.
806
28.6.2
DENO.LAND/X
.
807
28.6.3
USING
NODE
PACKAGE
MANAGER
PACKAGES
.
807
28.7
SUMMARY
.
809
THE
AUTHOR
.
811
INDEX
.
813 |
adam_txt |
CONTENTS
FOREWORD
.
25
PREFACE
.
27
1
BASIC
PRINCIPLES
31
1.1
THE
STORY
OF
NODE.JS
.
33
1.1.1
ORIGINS
.
33
1.1.2
BIRTH
OF
NODE.JS
.
34
1.1.3
BREAKTHROUGH
OF
NODE.JS
.
34
1.1.4
NODE.JS
CONQUERS
WINDOWS
.
35
1.1.5
IO.JS
:
THE
FORK
OF
NODE.JS
.
36
1.1.6
NODE.JS
REUNITED
.
36
1.1.7
DENO:
A
NEW
STAR
IN
THE
JAVASCRIPT
SKY
.
36
1.1.8
OPENJS
FOUNDATION
.
37
1.2
ORGANIZATION
OF
NODE.JS
.
37
1.2.1
TECHNICAL
STEERING
COMMITTEE
.
37
1.2.2
COLLABORATORS
.
37
1.2.3
COMMUNITY
COMMITTEE
.
38
1.2.4
WORKGROUPS
.
38
1.2.5
OPENJS
FOUNDATION
.
38
1.3
VERSIONING
OF
NODE.JS
.
38
1.3.1
LONG-TERM
SUPPORT
RELEASES
.
39
1.4
BENEFITS
OF
NODE.JS
.
40
1.5
AREAS
OF
USE
FOR
NODE.JS
.
40
1.6
THE
CORE:
V8
ENGINE
.
41
1.6.1
MEMORY
MODEL
.
42
1.6.2
ACCESSING
PROPERTIES
.
43
1.6.3
MACHINE
CODE
GENERATION
.
45
1.6.4
GARBAGE
COLLECTION
.
46
1.7
LIBRARIES
AROUND
THE
ENGINE
.
47
1.7.1
EVENT
LOOP
.
48
1.7.2
INPUT
AND
OUTPUT
.
50
1.7.3
LIBUV
.
50
1.7.4
DOMAIN
NAME
SYSTEM
.
51
1.7.5
CRYPTO
.
52
1.7.6
ZLIB
.
52
1.7.7
HTTP
PARSER
.
52
1.8
SUMMARY
.
53
2
INSTALLATION
55
2.1
INSTALLING
PACKAGES.
56
2.1.1
LINUX
.
57
2.1.2
WINDOWS
.
60
2.1.3
MACOS
.
63
2.2
COMPILING
AND
INSTALLING
.
68
2.3
NODE
VERSION
MANAGER
.
71
2.4
NODE
AND
DOCKER
.
71
2.5
SUMMARY
.
72
3
DEVELOPING
YOUR
FIRST
APPLICATION
73
========*==*=====**
3.1
INTERACTIVE
MODE
.
73
3.1.1
GENERAL
USE
.
74
3.1.2
OTHER
REPL
COMMANDS
.
75
3.1.3
SAVING
AND
LOADING
IN
THE
REPL
.
76
3.1.4
CONTEXT
OF
THE
REPL
.
77
3.1.5
REPL
HISTORY
.
77
3.1.6
REPL
MODE
.
78
3.1.7
SEARCHING
IN
THE
REPL
.
78
3.1.8
ASYNCHRONOUS
OPERATIONS
IN
THE
REPL
.
79
3.2
THE
FIRST
APPLICATION
.
79
3.2.1
WEB
SERVER
IN
NODE.JS
.
80
3.2.2
EXTENDING
THE
WEB
SERVER
.
83
3.2.3
CREATING
AN
HTML
RESPONSE
.
85
3.2.4
GENERATING
DYNAMIC
RESPONSES
.
86
3.3
DEBUGGING
NODE.JS
APPLICATIONS
.
88
3.3.1
NAVIGATING
IN
THE
DEBUGGER
.
90
3.3.2
INFORMATION
IN
THE
DEBUGGER
.
91
3.3.3
BREAKPOINTS
.
93
3.3.4
DEBUGGING
WITH
CHROME
DEVELOPER
TOOLS
.
96
3.3.5
DEBUGGING
IN
THE
DEVELOPMENT
ENVIRONMENT
.
97
3.4
NODEMON
DEVELOPMENT
TOOL
.
98
3.5
SUMMARY
.
99
4
NODE.JS
MODULES
101
4.1
MODULAR
STRUCTURE
.
101
4.2
CORE
MODULES
.
103
4.2.1
STABILITY
.
104
4.2.2
LIST
OF
CORE
MODULES
.
105
4.2.3
LOADING
CORE
MODULES
.
108
4.2.4
GLOBAL
OBJECTS
.
ILL
4.3
JAVASCRIPT
MODULE
SYSTEMS
.
121
4.3.1
COMMONJS
.
121
4.3.2
ECMASCRIPT
MODULES
.
122
4.4
CREATING
AND
USING
YOUR
OWN
MODULES
.
124
4.4.1
MODULES
IN
NODE.JS:
COMMONJS
.
125
4.4.2
CUSTOM
NODE.JS
MODULES
.
126
4.4.3
MODULES
IN
NODE.JS:
ECMASCRIPT
.
127
4.4.4
EXPORTING
DIFFERENT
TYPES
OF
DATA
.
129
4.4.5
THE
MODULES
MODULE
.
130
4.4.6
MODULE
LOADER
.
131
4.5
SUMMARY
.
135
5
HTTP
137
5.1
WEB
SERVER
.
137
5.1.1
SERVER
OBJECT
.
137
5.1.2
SERVER
EVENTS
.
142
5.1.3
REQUEST
OBJECT
.
145
5.1.4
HANDLING
THE
REQUEST
BODY
(UPDATE)
.
152
5.1.5
DELIVERING
STATIC
CONTENT
.
157
5.1.6
FILE
UPLOAD
.
159
5.1.7
FINE-TUNING
THE
FRONTEND
.
163
5.2
NODE.JS
AS
HTTP
CLIENT
.
164
5.2.1
REQUESTS
WITH
THE
HTTP
MODULE
.
164
5.2.2
THE
REQUEST
PACKAGE
.
165
5.2.3
HTML
PARSER
.
167
5.3
SECURE
COMMUNICATION
WITH
HTTPS
.
168
5.3.1
CREATING
CERTIFICATES
.
168
5.3.2
USING
HTTPS
IN
THE
WEB
SERVER
.
169
5.4
.
.
170
5.4.1
HTTP/2
SERVER
.
170
5.4.2
HTTP/2
CLIENT
.
173
5.5
SUMMARY
.
175
6
EXPRESS
177
6.1
STRUCTURE
.
177
6.2
INSTALLATION
.
178
6.3
BASIC
PRINCIPLES
.
179
6.3.1
REQUEST
.
180
6.3.2
RESPONSE
.
180
6.4
SETUP
.
181
6.4.1
STRUCTURE
OF
AN
APPLICATION
.
182
6.5
MOVIE
DATABASE
.
185
6.5.1
ROUTING
.
186
6.5.2
CONTROLLER
.
189
6.5.3
MODEL
.
190
6.5.4
VIEW
.
192
6.6
MIDDLEWARE
.
193
6.6.1
CUSTOM
MIDDLEWARE
.
194
6.6.2
MORGAN:
LOGGING
MIDDLEWARE
FOR
EXPRESS
.
195
6.6.3
DELIVERING
STATIC
CONTENT
.
197
6.7
EXTENDED
ROUTING:
DELETING
DATA
RECORDS
.
199
6.8
CREATING
AND
EDITING
DATA
RECORDS:
BODY
PARSER.
201
6.8.1
HANDLING
FORM
INPUT:
BODY
PARSER
.
205
6.9
EXPRESS
5
.
208
6.10
HTTPS
AND
HTTP/2
.
209
6.10.1
HTTPS
.
209
6.10.2
HTTP/2
.
210
6.11
SUMMARY
.
212
7
TEMPLATE
ENGINES
213
7.1
CUSTOM
TEMPLATE
ENGINE
.
214
7.2
TEMPLATE
ENGINES
IN
PRACTICE:
PUG
.
215
7.2.1
INSTALLATION
.
215
7.2.2
PUG
AND
EXPRESS:
INTEGRATION
.
216
7.2.3
VARIABLES
IN
PUG
.
219
7.2.4
SPECIFIC
FEATURES
OF
PUG
.
221
7.2.5
CONDITIONS
AND
LOOPS
.
222
7.2.6
EXTENDS
AND
INCLUDES
.
223
7.2.7
MIXINS
.
226
7.2.8
USING
PUG
WITHOUT
EXPRESS
.
228
7.2.9
COMPILING
.
228
7.3
HANDLEBARS
.
229
7.3.1
INSTALLATION
.
230
7.3.2
INTEGRATION
WITH
EXPRESS
.
230
7.3.3
CONDITIONS
AND
LOOPS
.
232
7.3.4
PARTIALS
.
234
7.3.5
CUSTOM
HELPERS
.
236
7.3.6
HANDLEBARS
WITHOUT
EXPRESS
.
238
7.4
SUMMARY
.
239
8
CONNECTING
DATABASES
241
8.1
NODE.JS
AND
RELATIONAL
DATABASES
.
242
8.1.1
MYSQL
.
242
8.1.2
SQLITE
.
251
8.1.3
OBJECT-RELATIONAL
MAPPING
.
257
8.2
NODE.JS
AND
NONRELATIONAL
DATABASES
.
260
8.2.1
REDIS
.
260
8.2.2
MONGODB
.
265
8.3
SUMMARY
.
272
9
AUTHENTICATION
AND
SESSION
HANDLING
273
9.1
PASSPORT
.
273
9.2
SETUP
AND
CONFIGURATION
.
274
9.2.1
INSTALLATION
.
274
9.2.2
CONFIGURATION
.
274
9.2.3
STRATEGY
CONFIGURATION
.
275
9.3
LOGGING
IN
TO
THE
APPLICATION
.
277
9.3.1
LOGIN
FORM
.
277
9.3.2
SECURING
RESOURCES
.
280
9.3.3
LOGGINGOUT
.
281
9.3.4
CONNECTING
TO
THE
DATABASE
.
282
9.4
ACCESSING
RESOURCES
.
285
9.4.1
ACCESS
RESTRICTION
.
285
9.4.2
SUBMITTING
RATINGS
.
289
9.5
SUMMARY
.
294
10
REST
SERVER
295
10.1
INTRODUCTION
TO
REST
AND
USAGE
IN
WEB
APPLICATIONS
.
295
10.2
ACCESSING
THE
APPLICATION
.
296
10.2.1
POSTMAN
.
296
10.2.2
CURL
.
297
10.3
ADAPTATIONS
TO
THE
APPLICATION
STRUCTURE
.
297
10.4
READ
REQUESTS.
298
10.4.1
READING
ALL
DATA
RECORDS
OF
A
RESOURCE
.
298
10.4.2
ACCESSING
A
DATA
RECORD
.
301
10.4.3
ERROR
HANDLING
.
302
10.4.4
SORTING
THE
LIST
.
304
10.4.5
CONTROLLING
THE
OUTPUT
FORMAT
.
307
10.5
WRITE
REQUESTS
.
309
10.5.1
POST:
CREATING
NEW
DATA
RECORDS
.
309
10.5.2
PUT
:
MODIFYING
EXISTING
DATA
RECORDS
.
312
10.5.3
DELETE:
DELETING
DATA
RECORDS
.
314
10.6 AUTHENTICATION
VIA
JWTS
.
316
10.6.1
LOGIN
.
317
10.6.2
SAFEGUARDING
RESOURCES
.
319
10.6.3
ACCESSING
USER
INFORMATION
IN
THE
TOKEN
.
321
10.7
OPENAPI
SPECIFICATION:
DOCUMENTATION
WITH
SWAGGER
.
324
10.8
VALIDATION
.
329
10.8.1
INSTALLATION
AND
FIRST
VALIDATION
.
330
10.8.2
CHECKING
REQUESTS
WITH
A
VALIDATION
SCHEMA
.
332
10.9
SUMMARY
.
335
11
GRAPHQL
337
11.1
GRAPHQL
LIBRARIES
.
338
11.2
INTEGRATION
WITH
EXPRESS
.
339
11.3
CRAPHIQL
.
341
11.4
READING
DATA
VIA
THE
INTERFACE
.
342
11.4.1
PARAMETERIZING
QUERIES
.
345
11.5
WRITE
ACCESSES
TO
THE
GRAPHQL
INTERFACE
.
347
11.5.1
CREATING
NEW
DATA
RECORDS
.
347
11.5.2
UPDATING
AND
DELETING
DATA
RECORDS
.
350
11.6
AUTHENTICATION
FOR
THE
GRAPHQL
INTERFACE
.
353
11.7
SUMMARY
.
355
12
REAL-TIME
WEB
APPLICATIONS
357
-======================******=***************"*
12.1
THE
SAMPLE
APPLICATION
.
358
12.2
SETUP
.
358
12.3
WEBSOCKETS.
364
12.3.1
THE
SERVER
SIDE
.
366
12.3.2
THE
CLIENT
SIDE
.
367
12.3.3
USER
LIST
.
370
12.3.4
LOGOUT
.
373
12.4
SOCKET.10
.
377
12.4.1
INSTALLATION
AND
INTEGRATION
.
378
12.4.2
SOCKET.10
API
.
379
12.5
SUMMARY
.
383
13
TYPE-SAFE
APPLICATIONS
IN
NODE.JS
385
13.1
TYPE
SYSTEMS
FOR
NODE.JS
.
386
13.1.1
FLOW
.
386
13.1.2
TYPESCRIPT
.
390
13.2
TOOLS
AND
CONFIGURATION
.
392
13.2.1
CONFIGURING
THE
TYPESCRIPT
COMPILER
.
393
13.2.2
INTEGRATION
INTO
THE
DEVELOPMENT
ENVIRONMENT
.
394
13.2.3
ESLINT
.
395
13.2.4
TS-NODE
.
396
13.3
BASIC
PRINCIPLES
.
398
13.3.1
DATA
TYPES
.
398
13.3.2
FUNCTIONS
.
400
13.3.3
MODULES
.
402
13.4
CLASSES
.
403
13.4.1
METHODS
.
404
13.4.2
ACCESS
MODIFIERS
.
405
13.4.3
INHERITANCE
.
405
13.5
INTERFACES
.
406
13.6
TYPE
ALIASES
IN
TYPESCRIPT
.
408
13.7
GENERICS
.
409
13.8
TYPESCRIPT
IN
USE
IN
A
NODE.JS
APPLICATION
.
410
13.8.1
TYPE
DEFINITIONS
.
410
13.8.2
CREATING
CUSTOM
TYPE
DEFINITIONS
.
410
13.8.3
SAMPLE
EXPRESS
APPLICATION
.
411
13.9
SUMMARY
.
412
14
WEB
APPLICATIONS
WITH
NEST
413
==========*************=*=****=#
14.1
INSTALLATION
AND
GETTING
STARTED
WITH
NEST
.
414
14.2
NEST
COMMAND-LINE
INTERFACE
.
416
14.2.1
COMMANDS
FOR
OPERATING
AND
RUNNING
THE
APPLICATION
.
416
14.2.2
CREATING
STRUCTURES
IN
THE
APPLICATION
.
418
14.3
STRUCTURE
OF
THE
APPLICATION
.
419
14.3.1
ROOT
DIRECTORY
WITH
THE
CONFIGURATION
FILES
.
419
14.3.2
SRC
DIRECTORY:
CORE
OF
THE
APPLICATION
.
420
14.3.3
OTHER
DIRECTORIES
OF
THE
APPLICATION
.
420
14.4
MODULES:
LOGICAL
UNITS
IN
THE
SOURCE
CODE
.
421
14.4.1
CREATING
MODULES
.
422
14.4.2
MODULE
DECORATOR
.
423
14.5
CONTROLLERS:
ENDPOINTS
OF
AN
APPLICATION
.
423
14.5.1
CREATING
A
CONTROLLER
.
424
14.5.2
IMPLEMENTING
A
CONTROLLER
.
424
14.5.3
INTEGRATING
AND
CHECKING
THE
CONTROLLER
.
426
14.6
PROVIDERS:
BUSINESS
LOGIC
OF
THE
APPLICATION
.
428
14.6.1
CREATING
AND
INCLUDING
A
SERVICE
.
428
14.6.2
IMPLEMENTING
THE
SERVICE
.
429
14.6.3
INTEGRATING
THE
SERVICE
VIA
NEST
'
S
DEPENDENCY
INJECTION
.
431
14.7
ACCESSING
DATABASES
.
432
14.7.1
SETUP
AND
INSTALLATION
.
432
14.7.2
ACCESSING
THE
DATABASE
.
435
14.8
DOCUMENTING
THE
ENDPOINTS
WITH
OPENAPI
.
439
14.9
AUTHENTICATION
.
442
14.9.1
SETUP
.
442
14.9.2
AUTHENTICATION
SERVICE
.
443
14.9.3
LOGIN
CONTROLLER:
ENDPOINT
FOR
USER
LOGIN
.
445
14.9.4
PROTECTING
ROUTES
.
446
14.10
OUTLOOK:
TESTING
IN
NEST
.
449
14.11
SUMMARY
.
451
15
NODE
ON
THE
COMMAND
LINE
453
15.1
BASIC
PRINCIPLES
.
453
15.1.1
STRUCTURE
.
454
15.1.2
EXECUTABILITY
.
455
15.2
STRUCTURE
OF
A
COMMAND-LINE
APPLICATION
.
456
15.2.1
FILE
AND
DIRECTORY
STRUCTURE
.
456
15.2.2
PACKAGE
DEFINITION
.
456
15.2.3
MATH
TRAINER
APPLICATION
.
457
15.3
ACCESSING
INPUT
AND
OUTPUT
.
461
15.3.1
OUTPUT
.
461
15.3.2
INPUT
.
462
15.3.3
USER
INTERACTION
WITH
THE
READLINE
MODULE
.
463
15.3.4
OPTIONS
AND
ARGUMENTS
.
467
15.4
TOOLS
.
469
15.4.1
COMMANDER
.
469
15.4.2
CHALK
.
471
15.4.3
NODE-EMOJI
.
473
15.5
SIGNALS
.
476
15.6
EXIT
CODES
.
478
15.7
SUMMARY
.
479
16
ASYNCHRONOUS
PROGRAMMING
481
16.1
BASIC
PRINCIPLES
OF
ASYNCHRONOUS
PROGRAMMING
.
481
16.1.1
THE
CHILD_PROCESS
MODULE
.
485
16.2
RUNNING
EXTERNAL
COMMANDS
ASYNCHRONOUSLY
.
486
16.2.1
THE
EXEC
METHOD
.
487
16.2.2
THE
SPAWN
METHOD
.
489
16.3
CREATING
NODE.JS
CHILD
PROCESSES
WITH
FORK
METHOD
.
492
16.4
THE
CLUSTER
MODULE
.
496
16.4.1
MAIN
PROCESS
.
497
16.4.2
WORKER
PROCESSES.
501
16.5
WORKER
THREADS
.
504
16.5.1
SHARED
MEMORY
IN
THE
WORKER_THREADS
MODULE
.
505
16.6
PROMISES
IN
NODE.JS
.
507
16.6.1
USING
UTIL.PROMISIFY
TO
USE
PROMISES
WHERE
NONE
ACTUALLY
EXIST
.
510
16.6.2
CONCATENATING
PROMISES
.
511
16.6.3
MULTIPLE
PARALLEL
OPERATIONS
WITH
PROMISE.ALL
.
512
16.6.4
FASTEST
ASYNCHRONOUS
OPERATION
WITH
PROMISE.RACE
.
513
16.6.5
OVERVIEW
OF
THE
PROMISE
FUNCTIONS
.
514
16.7
ASYNC
FUNCTIONS.
514
16.7.1
TOP-LEVEL
AWAIT
.
516
16.8
SUMMARY
.
517
17
RXJS
519
17.1
BASIC
PRINCIPLES
.
520
17.1.1
INSTALLATION
AND
INTEGRATION
.
521
17.1.2
OBSERVABLE
.
521
17.1.3
OBSERVER
.
522
17.1.4
OPERATOR
.
523
17.1.5
EXAMPLE
OF
RXJS
IN
NODE.JS
.
523
17.2
OPERATORS
.
525
17.2.1
CREATION
OPERATORS
.
527
17.2.2
TRANSFORMATION
OPERATORS
.
529
17.2.3
FILTERING
OPERATORS
.
532
17.2.4
JOIN
OPERATORS
.
534
17.2.5
ERROR
HANDLING
OPERATORS
.
535
17.2.6
UTILITY
OPERATORS
.
537
17.2.7
CONDITIONAL
OPERATORS
.
538
17.2.8
CONNECTION
OPERATORS
.
539
17.2.9
CONVERSION
OPERATORS
.
540
17.3
SUBJECTS.
540
17.4
SCHEDULERS
.
542
17.5
SUMMARY
.
543
18
STREAMS
545
==========*****==*==========**===**========*=*==========*========***==**=**#
18.1
INTRODUCTION
.
545
18.1.1
WHAT
ISA
STREAM?
.
545
18.1.2
STREAM
USAGES
.
546
18.1.3
AVAILABLE
STREAMS
.
546
18.1.4
STREAM
VERSIONS
IN
NODE.JS
.
547
18.1.5
STREAMS
ARE
EVENTEMITTERS
.
548
18.2
READABLE
STREAMS
.
548
18.2.1
CREATING
A
READABLE
STREAM
.
548
18.2.2
READABLE
STREAM
INTERFACE
.
550
18.2.3
EVENTS
OF
A
READABLE
STREAM
.
550
18.2.4
ERROR
HANDLING
IN
READABLE
STREAMS
.
552
18.2.5
METHODS
.
553
18.2.6
PIPING
.
553
18.2.7
READABLE
STREAM
MODES
.
554
18.2.8
SWITCHING
TO
FLOWING
MODE
.
554
18.2.9
SWITCHING
TO
THE
PAUSED
MODE
.
555
18.2.10
CUSTOM
READABLE
STREAMS
.
555
18.2.11
EXAMPLEOF
A
READABLE
STREAM
.
556
18.2.12
READABLE
SHORTCUT
.
558
18.3
WRITABLE
STREAMS
.
559
18.3.1
CREATING
A
WRITABLE
STREAM
.
560
18.3.2
EVENTS
.
560
18.3.3
ERROR
HANDLING
IN
WRITABLE
STREAMS
.
562
18.3.4
METHODS
.
562
18.3.5
BUFFERING
WRITE
OPERATIONS
.
563
18.3.6
FLOW
CONTROL
.
564
18.3.7
CUSTOM
WRITABLE
STREAMS
.
565
18.3.8
WRITABLE
SHORTCUT
.
566
18.4
DUPLEX
STREAMS
.
566
18.4.1
DUPLEX
STREAMS
IN
USE
.
566
18.4.2
CUSTOM
DUPLEX
STREAMS
.
567
18.4.3
DUPLEX
SHORTCUT
.
567
18.5
TRANSFORM
STREAMS
.
568
18.5.1
CUSTOM
TRANSFORM
STREAMS
.
568
18.5.2
TRANSFORM
SHORTCUT
.
569
18.6
GULP
.
570
18.6.1
INSTALLATION
.
570
18.6.2
EXAMPLE
OF
A
BUILD
PROCESS
WITH
GULP
.
571
18.7
SUMMARY
.
572
19
WORKING
WITH
FILES
573
19.1
SYNCHRONOUS
AND
ASYNCHRONOUS
FUNCTIONS
.
573
19.2
EXISTENCE
OF
FILES
.
575
19.3
READING
FILES
.
576
19.3.1
PROMISE-BASED
API
.
581
19.4
ERROR
HANDLING
.
582
19.5
WRITING
TO
FILES
.
582
19.6
DIRECTORY
OPERATIONS
.
586
19.7
ADVANCED
OPERATIONS
.
589
19.7.1
THE
WATCH
METHOD
.
591
19.7.2
ACCESS
PERMISSIONS
.
592
19.8
SUMMARY
.
594
20
SOCKET
SERVER
595
20.1
UNIX
SOCKETS
.
596
20.1.1
ACCESSING
THE
SOCKET
.
598
20.1.2
BIDIRECTIONAL
COMMUNICATION
.
600
20.2
WINDOWS
PIPES
.
602
20.3
TCP
SOCKETS
.
603
20.3.1
DATA
TRANSFER
.
605
20.3.2
FILETRANSFER
.
606
20.3.3
FLOW
CONTROL
.
607
20.3.4
DUPLEX
.
609
20.3.5
PIPE
.
609
20.4
UDP
SOCKETS
.
610
20.4.1
BASIC
PRINCIPLES
OF
A
UDP
SERVER
.
611
20.4.2
EXAMPLE
ILLUSTRATING
THE
UDP
SERVER
.
612
20.5
SUMMARY
.
614
21
PACKAGE
MANAGER
615
21.1
MOST
COMMON
OPERATIONS
.
616
21.1.1
SEARCHING
PACKAGES
.
616
21.1.2
INSTALLING
PACKAGES
.
617
21.1.3
VIEWING
INSTALLED
PACKAGES
.
622
21.1.4
USING
PACKAGES
.
623
21.1.5
UPDATING
PACKAGES
.
624
21.1.6
REMOVING
PACKAGES
.
625
21.1.7
OVERVIEW
OF
THE
MOST
IMPORTANT
COMMANDS
.
626
21.2
ADVANCED
OPERATIONS
.
627
21.2.1
STRUCTURE
OF
A
MODULE
.
627
21.2.2
CREATING
CUSTOM
PACKAGES
.
630
21.2.3
NODE
PACKAGE
MANAGER
SCRIPTS
.
632
21.3
TOOLS
FOR
NODE
PACKAGE
MANAGER
.
634
21.3.1
NODE
LICENSE
FINDER
.
634
21.3.2
VERDACCIO
.
635
21.3.3
.
.
636
21.3.4
NPX
.
637
21.4
YARN
.
637
21.5
SUMMARY
.
638
22
QUALITY
ASSURANCE
641
22.1
STYLE
GUIDES
.
642
22.1.1
AIRBNB
STYLE
GUIDE
.
642
22.2
LINTER
.
643
22.2.1
ESLINT
.
644
22.3
PRETTIER
.
648
22.3.1
INSTALLATION
.
649
22.3.2
EXECUTION
.
649
22.4
PROGRAMMING
MISTAKE
DETECTOR:
COPY/PASTE
DETECTOR
.
649
22.4.1
INSTALLATION
.
650
22.4.2
EXECUTION
.
651
22.5
HUSKY
.
652
22.6
SUMMARY
.
653
23
TESTING
655
23.1
UNIT
TESTING
.
655
23.1.1
DIRECTORY
STRUCTURE
.
656
23.1.2
UNIT
TESTS
AND
NODE.JS
.
656
23.1.3
ARRANGE,
ACT,
ASSERT
.
657
23.2
ASSERTION
TESTING
.
658
23.2.1
EXCEPTIONS
.
661
23.2.2
TESTING
PROMISES
.
662
23.3
JASMINE.
663
23.3.1
INSTALLATION
.
664
23.3.2
CONFIGURATION
.
664
23.3.3
TESTS
IN
JASMINE
.
665
23.3.4
ASSERTIONS
.
667
23.3.5
SPIES
.
670
23.3.6
BEFOREEACH
AND
AFTEREACH
.
671
23.4
JEST
.
671
23.4.1
INSTALLATION
.
671
23.4.2
FIRST
TEST
.
672
23.5
PRACTICAL
EXAMPLE
OF
UNIT
TESTS
WITH
JEST
.
674
23.5.1
THE
TEST
.
675
23.5.2
IMPLEMENTATION
.
676
23.5.3
TRIANGULATION:
SECOND
TEST
.
677
23.5.4
OPTIMIZING
THE
IMPLEMENTATION
.
678
23.6
DEALING
WITH
DEPENDENCIES:
MOCKING
.
679
23.7
SUMMARY
.
681
24
SECURITY
683
24.1
FILTER
INPUT
AND
ESCAPE
OUTPUT
.
684
24.1.1
FILTER
INPUT
.
684
24.1.2
BLACKLISTING
AND
WHITELISTING
.
684
24.1.3
ESCAPE
OUTPUT
.
685
24.2
PROTECTING
THE
SERVER
.
686
24.2.1
USER
PERMISSIONS
.
686
24.2.2
PROBLEMS
CAUSED
BY
THE
SINGLE-THREADED
APPROACH
.
688
24.2.3
DENIAL-OF-SERVICE
ATTACKS
.
690
24.2.4
REGULAR
EXPRESSIONS
.
692
24.2.5
HTTP
HEADER
.
693
24.2.6
ERROR
MESSAGES
.
695
24.2.7
SQL
INJECTIONS
.
695
24.2.8
EVAL
.
699
24.2.9
METHOD
INVOCATION
.
700
24.2.10
OVERWRITING
BUILT-INS
.
702
24.3
NODE
PACKAGE
MANAGER
SECURITY
.
704
24.3.1
PERMISSIONS
.
704
24.3.2
NODE
SECURITY
PLATFORM
.
705
24.3.3
QUALITY
ASPECT
.
705
24.3.4
NODE
PACKAGE
MANAGER
SCRIPTS
.
706
24.4
CLIENT
PROTECTION
.
707
24.4.1
CROSS-SITE
SCRIPTING
.
707
24.4.2
CROSS-SITE
REQUEST
FORGERY
.
709
24.5
SUMMARY
.
711
25
SCALABILITY
AND
DEPLOYMENT
713
25.1
DEPLOYMENT
.
713
25.1.1
SIMPLE
DEPLOYMENT
.
713
25.1.2
FILE
SYNCHRONIZATION
VIA
RSYNC
.
715
25.1.3
APPLICATION
AS
A
SERVICE
.
716
25.1.4
NODE_MODULES
IN
DEPLOYMENT
.
718
25.1.5
INSTALLING
APPLICATIONS
USING
NODE
PACKAGE
MANAGER
.
718
25.1.6
INSTALLING
PACKAGES
LOCALLY
.
720
25.2
TOOL
SUPPORT
.
720
25.2.1
GRUNT
.
721
25.2.2
GULP
.
721
25.2.3
NODE
PACKAGE
MANAGER
.
721
25.3
SCALING
.
721
25.3.1
CHILD
PROCESSES
.
722
25.3.2
LOAD
BALANCER
.
726
25.3.3
NODE
IN
THE
CLOUD
.
728
25.4
PM2:
PROCESS
MANAGEMENT
.
730
25.5
DOCKER
.
730
25.5.1
DOCKERFILE
.
731
25.5.2
STARTING
THE
CONTAINER
.
732
25.6
SUMMARY
.
732
26
PERFORMANCE
733
26.1
YOU
AREN'
T
GONNA
NEED
IT
.
733
26.2
CPU
.
734
26.2.1
CPU-BLOCKING
OPERATIONS
.
734
26.2.2
MEASURING
THE
CPU
LOAD
.
735
26.2.3
CPU
PROFILING
WITH
CHROME
DEVTOOLS
.
736
26.2.4
ALTERNATIVES
TO
THE
PROFILER:
CONSOLE.TIME
.
738
26.2.5
ALTERNATIVES
TO
THE
PROFILER:
PERFORMANCE-HOOKS
INTERFACE
.
739
26.3
MEMORY
.
741
26.3.1
MEMORY
LEAKS
.
742
26.3.2
MEMORY
ANALYSIS
IN
DEVTOOLS
.
743
26.3.3
NODE.JS
MEMORY
STATISTICS
.
745
26.4
NETWORK
.
747
26.5
SUMMARY
.
751
27
MICROSERVICES
WITH
NODE.JS
753
27.1
BASIC
PRINCIPLES
.
753
27.1.1
MONOLITHIC
ARCHITECTURE
.
753
27.1.2
MICROSERVICE
ARCHITECTURE
.
755
27.2
ARCHITECTURE
.
756
27.2.1
COMMUNICATION
BETWEEN
INDIVIDUAL
SERVICES
.
756
27.3
INFRASTRUCTURE
.
758
27.3.1
DOCKER
COMPOSE
.
759
27.4
ASYNCHRONOUS
MICROSERVICE
WITH
.
759
27.4.1
INSTALLATION
AND
SETUP
.
760
27.4.2
CONNECTING
TO
THE
RABBITMQ
SERVER
.
762
27.4.3
HANDLING
INCOMING
MESSAGES
.
763
27.4.4 DATABASE
CONNECTION
.
764
27.4.5
DOCKER
SETUP
.
765
27.5
API
GATEWAY
.
768
27.5.1
CONNECTING
THE
USER
SERVICE
.
768
27.5.2
ASYNCHRONOUS
COMMUNICATION
WITH
THE
USER
SERVICE
.
770
27.5.3
DOCKER
SETUP
OF
THE
API
GATEWAY
.
774
27.5.4
AUTHENTICATION
.
776
27.6
SYNCHRONOUS
MICROSERVICE
WITH
EXPRESS
.
780
27.6.1
SETUP
.
781
27.6.2
CONTROLLER
.
782
27.6.3
MODEL
IMPLEMENTATION
.
782
27.6.4
DOCKER
SETUP
.
784
27.6.5
INTEGRATION
INTO
THE
API
GATEWAY
.
786
27.7
SUMMARY
.
789
28
DENO
791
28.1
THE
TEN
THINGS
RYAN
DAHL
REGRETS
ABOUT
NODE.JS
.
791
28.1.1
PROMISES
.
791
28.1.2
SECURITY
.
792
28.1.3
THE
GENERATE
YOUR
PROJECTS
BUILD
SYSTEM
.
792
28.1.4
PACKAGE.JSON
.
792
28.1.5
NODE_MODULES
.
792
28.1.6
OPTIONAL
FILE
EXTENSION
WHEN
LOADING
MODULES
.
793
28.1.7
INDEX.JS
.
793
28.1.8
WHAT'S
GOING
ON
NOW
WITH
NODE.JS
.
793
28.2
INSTALLING
DENO
.
793
28.2.1
DENO
COMMAND-LINE
INTERFACE
.
794
28.3
EXECUTION
.
795
28.3.1
RUNNING
A
TYPESCRIPT
APPLICATION
.
796
28.4
HANDLING
FILES
.
796
28.4.1
THE
TASK:
COPYING
A
FILE
.
797
28.4.2
PROCESSING
COMMAND-LINE
OPTIONS
.
797
28.4.3
READING
FILES
.
798
28.4.4 PERMISSIONS
IN
DENO
.
800
28.4.5
READTEXTFILE
FUNCTION
.
801
28.4.6
WRITING
FILES
WITH
DENO
.
801
28.5 WEB
SERVER
WITH
DENO
.
803
28.6
MODULE
SYSTEM
.
804
28.6.1
LOADING
EXTERNAL
MODULES
INTO
DENO
.
806
28.6.2
DENO.LAND/X
.
807
28.6.3
USING
NODE
PACKAGE
MANAGER
PACKAGES
.
807
28.7
SUMMARY
.
809
THE
AUTHOR
.
811
INDEX
.
813 |
any_adam_object | 1 |
any_adam_object_boolean | 1 |
author | Springer, Sebastian |
author_GND | (DE-588)1041590202 |
author_facet | Springer, Sebastian |
author_role | aut |
author_sort | Springer, Sebastian |
author_variant | s s ss |
building | Verbundindex |
bvnumber | BV048623609 |
classification_rvk | ST 250 |
ctrlnum | (OCoLC)1374574432 (DE-599)DNB1260567680 |
discipline | Informatik |
discipline_str_mv | Informatik |
edition | 1st edition |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>00000nam a22000008c 4500</leader><controlfield tag="001">BV048623609</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20230331</controlfield><controlfield tag="007">t|</controlfield><controlfield tag="008">221222s2022 gw a||| |||| 00||| eng d</controlfield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">22,N26</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">1260567680</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781493222926</subfield><subfield code="c">: EUR 46.68 (DE), EUR 49.95 (DE) (freier Preis), EUR 51.40 (AT) (freier Preis), CHF 63.95 (freier Preis)</subfield><subfield code="9">978-1-4932-2292-6</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">1493222929</subfield><subfield code="9">1-4932-2292-9</subfield></datafield><datafield tag="024" ind1="3" ind2=" "><subfield code="a">9781493222926</subfield></datafield><datafield tag="028" ind1="5" ind2="2"><subfield code="a">Bestellnummer: 459/22292</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1374574432</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)DNB1260567680</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">gw</subfield><subfield code="c">XA-DE</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-92</subfield><subfield code="a">DE-573</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="8">1\p</subfield><subfield code="a">004</subfield><subfield code="2">23sdnb</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Springer, Sebastian</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1041590202</subfield><subfield code="4">aut</subfield></datafield><datafield tag="240" ind1="1" ind2="0"><subfield code="a">Node.js</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Node.js</subfield><subfield code="b">the comprehensive guide</subfield><subfield code="c">Sebastian Springer</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">1st edition</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">New York, NY</subfield><subfield code="b">Rheinwerk</subfield><subfield code="c">2022</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">834 Seiten</subfield><subfield code="b">Illustrationen</subfield><subfield code="c">25.4 cm x 17.8 cm</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">Rheinwerk Computing</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Node.js</subfield><subfield code="0">(DE-588)1027030742</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">NodeJS</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Java Script</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">SAP JavaScript</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Node.js</subfield><subfield code="0">(DE-588)1027030742</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="710" ind1="2" ind2=" "><subfield code="a">Galileo Press Inc.</subfield><subfield code="0">(DE-588)106510992X</subfield><subfield code="4">pbl</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">X:MVB</subfield><subfield code="q">text/html</subfield><subfield code="u">http://deposit.dnb.de/cgi-bin/dokserv?id=2d354e84bee4432886f085509aaf8320&prov=M&dok_var=1&dok_ext=htm</subfield><subfield code="3">Inhaltstext</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">DNB Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=033998764&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="883" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="a">vlb</subfield><subfield code="d">20220622</subfield><subfield code="q">DE-101</subfield><subfield code="u">https://d-nb.info/provenance/plan#vlb</subfield></datafield><datafield tag="943" ind1="1" ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-033998764</subfield></datafield></record></collection> |
id | DE-604.BV048623609 |
illustrated | Illustrated |
index_date | 2024-07-03T21:14:13Z |
indexdate | 2024-11-22T11:01:40Z |
institution | BVB |
institution_GND | (DE-588)106510992X |
isbn | 9781493222926 1493222929 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-033998764 |
oclc_num | 1374574432 |
open_access_boolean | |
owner | DE-92 DE-573 |
owner_facet | DE-92 DE-573 |
physical | 834 Seiten Illustrationen 25.4 cm x 17.8 cm |
publishDate | 2022 |
publishDateSearch | 2022 |
publishDateSort | 2022 |
publisher | Rheinwerk |
record_format | marc |
series2 | Rheinwerk Computing |
spelling | Springer, Sebastian Verfasser (DE-588)1041590202 aut Node.js Node.js the comprehensive guide Sebastian Springer 1st edition New York, NY Rheinwerk 2022 834 Seiten Illustrationen 25.4 cm x 17.8 cm txt rdacontent n rdamedia nc rdacarrier Rheinwerk Computing Node.js (DE-588)1027030742 gnd rswk-swf NodeJS Java Script SAP JavaScript Node.js (DE-588)1027030742 s DE-604 Galileo Press Inc. (DE-588)106510992X pbl X:MVB text/html http://deposit.dnb.de/cgi-bin/dokserv?id=2d354e84bee4432886f085509aaf8320&prov=M&dok_var=1&dok_ext=htm Inhaltstext DNB Datenaustausch application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=033998764&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis 1\p vlb 20220622 DE-101 https://d-nb.info/provenance/plan#vlb |
spellingShingle | Springer, Sebastian Node.js the comprehensive guide Node.js (DE-588)1027030742 gnd |
subject_GND | (DE-588)1027030742 |
title | Node.js the comprehensive guide |
title_alt | Node.js |
title_auth | Node.js the comprehensive guide |
title_exact_search | Node.js the comprehensive guide |
title_exact_search_txtP | Node.js the comprehensive guide |
title_full | Node.js the comprehensive guide Sebastian Springer |
title_fullStr | Node.js the comprehensive guide Sebastian Springer |
title_full_unstemmed | Node.js the comprehensive guide Sebastian Springer |
title_short | Node.js |
title_sort | node js the comprehensive guide |
title_sub | the comprehensive guide |
topic | Node.js (DE-588)1027030742 gnd |
topic_facet | Node.js |
url | http://deposit.dnb.de/cgi-bin/dokserv?id=2d354e84bee4432886f085509aaf8320&prov=M&dok_var=1&dok_ext=htm http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=033998764&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT springersebastian nodejs AT galileopressinc nodejs AT springersebastian nodejsthecomprehensiveguide AT galileopressinc nodejsthecomprehensiveguide |