рдпрд╣ рд╕рд╛рдордЧреНрд░реА Node.js. рдореИрдиреНрдпреБрдЕрд▓ рдЕрдиреБрд╡рд╛рдж рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рд╕рдорд╛рдкрди рдХрд░рддреА рд╣реИред рдЖрдЬ рд╣рдо рдУрдПрд╕, рдШрдЯрдирд╛рдУрдВ рдФрд░ http рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдзрд╛рд░рд╛рдУрдВ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ Node.js рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред

[рд╣рдо рдЖрдкрдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ] рдЪрдХреНрд░ рдХреЗ рдЕрдиреНрдп рднрд╛рдЧрднрд╛рдЧ 1:
рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдЖрд░рдВрдн рдХрд░рдирд╛рднрд╛рдЧ 2:
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, V8, рдХреБрдЫ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЧреБрд░рднрд╛рдЧ 3:
рд╣реЛрд╕реНрдЯрд┐рдВрдЧ, рдЖрд░рдИрдкреАрдПрд▓, рдХрдВрд╕реЛрд▓, рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВрднрд╛рдЧ 4:
npm, package.json рдФрд░ package-lock.json рдлрд╛рдЗрд▓реЗрдВрднрд╛рдЧ 5:
npm рдФрд░ npxрднрд╛рдЧ 6:
рдИрд╡реЗрдВрдЯ рд▓реВрдк, рдХреЙрд▓ рд╕реНрдЯреИрдХ, рдЯрд╛рдЗрдорд░рднрд╛рдЧ 7:
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧрднрд╛рдЧ 8:
HTTP рдФрд░ WebSocket рдкреНрд░реЛрдЯреЛрдХреЙрд▓рднрд╛рдЧ 9:
рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛рднрд╛рдЧ 10:
рдорд╛рдирдХ рдореЙрдбреНрдпреВрд▓, рдереНрд░реЗрдбреНрд╕, рдбреЗрдЯрд╛рдмреЗрд╕, NODE_ENVNode.js рдЧрд╛рдЗрдб рдХреА рдкреВрд░реНрдг рдкреАрдбреАрдПрдл Node.js рдУрдПрд╕ рдореЙрдбреНрдпреВрд▓
os
рдореЙрдбреНрдпреВрд▓ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдорд╛рдирдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕реЗ рдХреЛрдб рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:
const os = require('os')
рдпрд╣рд╛рдВ рдХрдИ рдЙрдкрдпреЛрдЧреА рдЧреБрдг рд╣реИрдВ, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХрд╛рдо рдореЗрдВ рдЖ рд╕рдХрддреЗ рд╣реИрдВред
рддреЛ,
os.EOL
рд╕рдВрдкрддреНрддрд┐
os.EOL
рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд▓рд╛рдЗрди рд╡рд┐рднрд╛рдЬрдХ (рдПрдХ рд▓рд╛рдЗрди
os.EOL
) рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдкрд░, рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдкрд░
\n
,
\r\n
ред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬрдм рд╣рдо рдпрд╣рд╛рдВ "рд▓рд┐рдирдХреНрд╕ рдФрд░ macOS" рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо POSIX- рд╕рдВрдЧрдд рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣рд╛рдВ рдХрдо рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
os.constants.signals
рдкреНрд░реЙрдкрд░реНрдЯреА,
SIGKILL
, рдЬреИрд╕реЗ рд╕рд┐рдЧреНрдирд▓,
SIGKILL
, рдФрд░ рдЗрддрдиреЗ рдкрд░ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддреА рд╣реИред
рдпрд╣рд╛рдВ рдЖрдк рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
os.constants.errno
рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдЬреИрд╕реЗ
EADDRINUSE
,
EOVERFLOW
ред
рдЕрдм
os
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдореБрдЦреНрдп рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
тЦНos.arch ()
рдпрд╣ рд╡рд┐рдзрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
arm
,
x64
,
arm64
ред
тЦНos.cpus ()
рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:
[ { model: 'Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz', speed: 2400, times: { user: 281685380, nice: 0, sys: 187986530, idle: 685833750, irq: 0 } }, { model: 'Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz', speed: 2400, times: { user: 282348700, nice: 0, sys: 161800480, idle: 703509470, irq: 0 } } ]
тЦНos.endianness ()
рдмреА.рдИ.рдИ. рдпрд╛
LE
рдЕрдиреБрд╕рд╛рд░ рдЬреЛ
рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░ (рдмрд┐рдЧ рдПрдВрдЧрд┐рдпрди рдпрд╛ рд▓рд┐рдЯрд┐рд▓ рдПрдВрдбрд┐рдпрди) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдХрд╛ рдЙрдкрдпреЛрдЧ Node.s.s.s.f рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
тЦНos.freemem ()
рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдореБрдлреНрдд рд╕рд┐рд╕реНрдЯрдо рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рджреЗрддрд╛ рд╣реИред
Omos.homedir ()
рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╣реЛрдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдкрде рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
'/Users/flavio'
ред
тЦНos.hostname ()
рдореЗрдЬрдмрд╛рди рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИред
тЦНos.loadavg ()
рдПрдХ рд╕рд░рдгреА рдореЗрдВ, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдХреА рдЧрдИ рдФрд╕рдд рд▓реЛрдб рдбреЗрдЯрд╛ред рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕ рдФрд░ macOS рдкрд░ рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
[ 3.68798828125, 4.00244140625, 11.1181640625 ]
тЦНos.networkInterfaces ()
рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЙрдкрд▓рдмреНрдз рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
{ lo0: [ { address: '127.0.0.1', netmask: '255.0.0.0', family: 'IPv4', mac: 'fe:82:00:00:00:00', internal: true }, { address: '::1', netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', family: 'IPv6', mac: 'fe:82:00:00:00:00', scopeid: 0, internal: true }, { address: 'fe80::1', netmask: 'ffff:ffff:ffff:ffff::', family: 'IPv6', mac: 'fe:82:00:00:00:00', scopeid: 1, internal: true } ], en1: [ { address: 'fe82::9b:8282:d7e6:496e', netmask: 'ffff:ffff:ffff:ffff::', family: 'IPv6', mac: '06:00:00:02:0e:00', scopeid: 5, internal: false }, { address: '192.168.1.38', netmask: '255.255.255.0', family: 'IPv4', mac: '06:00:00:02:0e:00', internal: false } ], utun0: [ { address: 'fe80::2513:72bc:f405:61d0', netmask: 'ffff:ffff:ffff:ffff::', family: 'IPv6', mac: 'fe:80:00:20:00:00', scopeid: 8, internal: false } ] }
тЦНos.platform ()
рдЙрд╕ рдордВрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП Node.js. рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдБ рдХреБрдЫ рд╕рдВрднрд╛рд╡рд┐рдд рд░рд┐рдЯрд░реНрди рдорд╛рди рджрд┐рдП рдЧрдП рд╣реИрдВ:
- рдбрд╛рд░реНрд╡рд┐рди
- FreeBSD
- linux
- OpenBSD
- Win32
тЦНos.release ()
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрдЦреНрдпрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
тЦНos.tmpdir ()
рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдкрде рджреЗрддрд╛ рд╣реИред
тЦНos.totalmem ()
рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдореЗрдореЛрд░реА рдХреА рдХреБрд▓ рд░рд╛рд╢рд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
тЦНos.type ()
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
Linux
- рд▓рд┐рдирдХреНрд╕редDarwin
- macOSредWindows_NT
- рд╡рд┐рдВрдбреЛрдЬрд╝ред
тЦНos.uptime ()
рдЕрдВрддрд┐рдо рд░рд┐рдмреВрдЯ рдХреЗ рдмрд╛рдж рд╕реЗ рд╕реЗрдХрдВрдб рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдЕрдкрдЯрд╛рдЗрдо рд▓реМрдЯрд╛рддрд╛ рд╣реИред
Node.js рдИрд╡реЗрдВрдЯ рдореЙрдбреНрдпреВрд▓
events
рдореЙрдбреНрдпреВрд▓ рд╣рдореЗрдВ
EventEmitter
рдХреНрд▓рд╛рд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ Node.js рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдИрд╡реЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╛рдордЧреНрд░реА рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ
рд╕рд╛рддрд╡реЗрдВ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХреАред
рдпрд╣рд╛рдБ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдПрдкреАрдЖрдИ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХреЛрдб рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдорд╛рдирдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛
EventEmitter
рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
const EventEmitter = require('events') const door = new EventEmitter()
EventEmitter
рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рдорд╛рдирдХ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдШрдЯрдирд╛рдПрдБ:
newListener
- рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ newListener
рдЬрдм рдПрдХ рдШрдЯрдирд╛ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИредremoveListener
- рдмреБрд▓рд╛рдпрд╛ рдЬрдм рд╣реИрдВрдбрд▓рд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
EventEmitter
рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ (рддрд░реАрдХреЛрдВ рдХреЗ рдирд╛рдо рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╡рд╕реНрддреБ рдХреЛ
emitter
рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред
тЦНemitter.addListener ()
emitter.on()
рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдоред
тЦНemitter.emit ()
рдПрдХ рдШрдЯрдирд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рд╕рднреА рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд╡реЗ рдкрдВрдЬреАрдХреГрдд рдереЗред
тЦНemitter.eventNames ()
рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдШрдЯрдирд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВред
тЦНemitter.getMaxListeners ()
EventEmitter
рд╡рд░реНрдЧ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВрдбрд▓рд░ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ 10 рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ
setMaxListeners()
рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдврд╝рд╛рдпрд╛ рдпрд╛ рдШрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
тЦНemitter.listenerCount ()
рдЙрд╕ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
door.listenerCount('open')
тЦНemitter.listeners ()
рд╕рдВрдмрдВрдзрд┐рдд рдЗрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
door.listeners('open')
тЦНemitter.off ()
emitter.removeListener()
10 рдореЗрдВ рд╢реБрд░реВ рдХреА рдЧрдИ
emitter.removeListener()
рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдоред
тЦНemitter.on ()
рдПрдХ рдХреЙрд▓рдмреИрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ рдЬреЛ рдПрдХ рдШрдЯрдирд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ:
door.on('open', () => { console.log('Door was opened') })
тЦНemitter.once ()
рдпрд╣ рдПрдХ рдХреЙрд▓рдмреИрдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреА рдкрд╣рд▓реА рдШрдЯрдирд╛ рдкрд░ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЙрд▓рдмреИрдХ рдкрдВрдЬреАрдХреГрдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
const EventEmitter = require('events') const ee = new EventEmitter() ee.once('my-event', () => {
тЦНemitter.prependListener ()
on()
рдпрд╛
addListener()
рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╕рдордп, рдЗрд╕ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╣реИрдВрдбрд▓рд░ рдХрддрд╛рд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
prependListener()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ
prependListener()
, рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХрддрд╛рд░ рдХреЗ рд╕рд╛рдордиреЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рдШрдЯрдирд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
тЦНemitter.prependOnceListener ()
рдпрд╣ рд╡рд┐рдзрд┐ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЕрд░реНрдерд╛рддреН, рдЬрдм рдПрдХ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫрд┐рдд рд╣реИрдВрдбрд▓рд░ рдХреЛ рдПрдХ
once()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣реИрдВрдбрд▓рд░ рдХреА рдХрддрд╛рд░ рдореЗрдВ рдЕрдВрддрд┐рдо рдФрд░ рдЕрдВрддрд┐рдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
prependOnceListener()
рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдХрддрд╛рд░ рдХреЗ рд╕рд╛рдордиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
тЦНemitter.removeAllListeners ()
рдпрд╣ рд╡рд┐рдзрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИред рд╡реЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
door.removeAllListeners('open')
тЦНemitter.removeListener ()
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣рдЯрд╛рддрд╛ рд╣реИред рд╣реИрдВрдбрд▓рд░ рдХреЛ рдмрд╛рдж рдореЗрдВ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдмрдВрдзрд┐рдд рдХреЙрд▓рдмреИрдХ рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
const doSomething = () => {} door.on('open', doSomething) door.removeListener('open', doSomething)
тЦНemitter.setMaxListeners ()
рдпрд╣ рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдЙрди рдЕрдзрд┐рдХрддрдо рд╣реИрдВрдбрд▓рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ
EventEmitter
рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХрд┐рд╕реА рдПрдХрд▓ рдИрд╡реЗрдВрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо 10 рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рди рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░реЗрдВ:
door.setMaxListeners(50)
Node.js http рдореЙрдбреНрдпреВрд▓
рд╕рд╛рдордЧреНрд░реА рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ
рдЖрдард╡реЗрдВ рднрд╛рдЧ рдореЗрдВ, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдорд╛рдирдХ Node.js
http
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рд╣реИред рд╡рд╣ HTTP рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдбреЗрд╡рд▓рдкрд░ рддрдВрддреНрд░ рдХреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИред рдпрд╣ Node.js. рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЛрдб рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
const http = require('http')
рдЗрд╕рдореЗрдВ рдЧреБрдг, рд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рд╡рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЖрдЗрдП рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред
тЦНSvoystva
http.METHODS
рдпрд╣ рдЧреБрдг рд╕рднреА рд╕рдорд░реНрдерд┐рдд HTTP рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ:
> require('http').METHODS [ 'ACL', 'BIND', 'CHECKOUT', 'CONNECT', 'COPY', 'DELETE', 'GET', 'HEAD', 'LINK', 'LOCK', 'M-SEARCH', 'MERGE', 'MKACTIVITY', 'MKCALENDAR', 'MKCOL', 'MOVE', 'NOTIFY', 'OPTIONS', 'PATCH', 'POST', 'PROPFIND', 'PROPPATCH', 'PURGE', 'PUT', 'REBIND', 'REPORT', 'SEARCH', 'SUBSCRIBE', 'TRACE', 'UNBIND', 'UNLINK', 'UNLOCK', 'UNSUBSCRIBE' ]
http.STATUS_CODES
рдЗрд╕рдореЗрдВ HTTP рд╕реНрдЯреЗрдЯрд╕ рдХреЛрдб рдФрд░ рдЙрдирдХреЗ рд╡рд┐рд╡рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
> require('http').STATUS_CODES { '100': 'Continue', '101': 'Switching Protocols', '102': 'Processing', '200': 'OK', '201': 'Created', '202': 'Accepted', '203': 'Non-Authoritative Information', '204': 'No Content', '205': 'Reset Content', '206': 'Partial Content', '207': 'Multi-Status', '208': 'Already Reported', '226': 'IM Used', '300': 'Multiple Choices', '301': 'Moved Permanently', '302': 'Found', '303': 'See Other', '304': 'Not Modified', '305': 'Use Proxy', '307': 'Temporary Redirect', '308': 'Permanent Redirect', '400': 'Bad Request', '401': 'Unauthorized', '402': 'Payment Required', '403': 'Forbidden', '404': 'Not Found', '405': 'Method Not Allowed', '406': 'Not Acceptable', '407': 'Proxy Authentication Required', '408': 'Request Timeout', '409': 'Conflict', '410': 'Gone', '411': 'Length Required', '412': 'Precondition Failed', '413': 'Payload Too Large', '414': 'URI Too Long', '415': 'Unsupported Media Type', '416': 'Range Not Satisfiable', '417': 'Expectation Failed', '418': 'I\'ma teapot', '421': 'Misdirected Request', '422': 'Unprocessable Entity', '423': 'Locked', '424': 'Failed Dependency', '425': 'Unordered Collection', '426': 'Upgrade Required', '428': 'Precondition Required', '429': 'Too Many Requests', '431': 'Request Header Fields Too Large', '451': 'Unavailable For Legal Reasons', '500': 'Internal Server Error', '501': 'Not Implemented', '502': 'Bad Gateway', '503': 'Service Unavailable', '504': 'Gateway Timeout', '505': 'HTTP Version Not Supported', '506': 'Variant Also Negotiates', '507': 'Insufficient Storage', '508': 'Loop Detected', '509': 'Bandwidth Limit Exceeded', '510': 'Not Extended', '511': 'Network Authentication Required' }
http.globalAgent
рдпрд╣ рд╕рдВрдкрддреНрддрд┐
http.Agent
рд╡рд░реНрдЧ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреА рдУрд░
http.Agent
ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ Node.js. HTTP рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдПрдХ рдкреНрд░рдореБрдЦ рдШрдЯрдХ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдиреАрдЪреЗ
http.Agent
рдХреЗ рд╡рд░реНрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
тЦНMetody
http.createServer ()
http.Server
рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред HTTP рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ:
const server = http.createServer((req, res) => {
http.request ()
рдЖрдкрдХреЛ
http.ClientRequest
рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдХрд░ рд╕рд░реНрд╡рд░ рд╕реЗ HTTP рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
http.get ()
рдпрд╣ рд╡рд┐рдзрд┐
http.request()
рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ HTTP рд╡рд┐рдзрд┐ рдХреЛ
GET
рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ
req.end()
рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
тЦН рдХрдХреНрд╖рд╛рдПрдВ
HTTP рдореЙрдбреНрдпреВрд▓ 5 рдХреНрд▓рд╛рд╕реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ -
Agent
,
ClientRequest
,
Server
,
ServerResponse
рдФрд░
ServerResponse
ред рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
http.Agent
Node.js рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ
http.Agent
рд╡рд░реНрдЧ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рднреА HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реЙрдХреЗрдЯреНрд╕ рдХреА рдХрддрд╛рд░ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдПрдХ рд╕реЙрдХреЗрдЯ рдкреВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ Node.js. рдиреЗрдЯрд╡рд░реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдЕрдкрдиреА рдЦреБрдж рдХреА
http.Agent
рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
http.ClientRequest
http.ClientRequest
рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ, рдЬреЛ рдПрдХ рдЪрд▓ рд░рд╣рд╛ рдЕрдиреБрд░реЛрдз рд╣реИ, рдЬрдм
http.request()
рдпрд╛
http.get()
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдХрд┐рд╕реА рдЕрдиреБрд░реЛрдз рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдирд╛ рдЙрдард╛рдИ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИ -
http.IncomingMessage
рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред рдХреНрд╡реЗрд░реА рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдЖрдк
response.read()
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред response
рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рдЖрдк data
рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реНрд░реЛрддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
http.Server
рдЗрд╕ рд╢реНрд░реЗрдгреА рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ
http.createServer()
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рд╕рд░реНрд╡рд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
listen()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред close()
рд╡рд┐рдзрд┐ рд╕рд░реНрд╡рд░ рдХреЛ рд░реЛрдХрддреА рд╣реИред
http.ServerResponse
рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ
http.Server
рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░
http.Server
рд╣реЛрдиреЗ рдкрд░
request
рдЗрд╡реЗрдВрдЯ рдХреЗ рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреЛрдб рдореЗрдВ рдирд╛рдо
res
рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИ:
const server = http.createServer((req, res) => {
рдРрд╕реЗ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж,
end()
рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣рд╛рдБ HTTP рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ:
getHeaderNames()
- рд╕реНрдерд╛рдкрд┐рдд рд╣реЗрдбрд░ рдХреЗ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИредgetHeaders()
- рд╕реЗрдЯ HTTP рд╣реЗрдбрд░ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИредsetHeader('headername', value)
- рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИредgetHeader('headername')
рд╢реАрд░реНрд╖ рд▓реЗрдЦ getHeader('headername')
- рд╕реЗрдЯ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рд▓реМрдЯрд╛рддрд╛ рд╣реИредremoveHeader('headername')
рд╢реАрд░реНрд╖ рд▓реЗрдЦ removeHeader('headername')
- рд╕реНрдерд╛рдкрд┐рдд рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИредhasHeader('headername')
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ true
рдпрджрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╢реАрд░реНрд╖рдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рд╕реЗ рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИредheadersSent()
- рд╣реЗрдбрд░ рдкрд╣рд▓реЗ рд╣реА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдкрд░ рд╕рд╣реА рд╣реИред
рд╣реЗрдбрд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ
response.writeHead()
рд╡рд┐рдзрд┐ рд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рд╕реНрдерд┐рддрд┐ рдХреЛрдб рд▓реЗрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдФрд░ рд╣реЗрдбрд░ рдХреЗ рдЕрдиреБрд░реВрдк рдПрдХ рд╕рдВрджреЗрд╢ рдХреЛ рдЗрд╕рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмреЙрдбреА рдореЗрдВ
write()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ HTTP рдкреНрд░рддрд┐рд╕рд╛рдж рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдмрдлрд╝рд░реНрдб рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИред
рдпрджрд┐ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдЕрднреА рддрдХ
response.writeHead()
рд╕рд╛рде рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред
response.writeHead()
рдХрдорд╛рдВрдб, рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╣реЗрдбрд░ рдФрд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрджреЗрд╢ рдкрд╣рд▓реЗ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк
statusCode
рдФрд░
statusMessage
рд▓рд┐рдП рдорд╛рди рд╕реЗрдЯ рдХрд░рдХреЗ рдЙрдирдХреЗ рдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ
statusMessage
:
response.statusCode = 500 response.statusMessage =
http.IncomingMessage
http.IncomingMessage
рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрдВрддреНрд░реЛрдВ рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ:
http.Server
- request
рдШрдЯрдирд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордпредhttp.ClientRequest
- response
рдШрдЯрдирд╛ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╕рдордпред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН:
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрджреЗрд╢ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП,
statusCode
рдФрд░ statusMessage
рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред - рдЖрдк
headers
рдпрд╛ rawHearders
(рдХрдЪреНрдЪреЗ рд╣реЗрдбрд░ рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП) rawHearders
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ headers
рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред - рдЖрдк
method
рдЧреБрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд░реЛрдз рд╡рд┐рдзрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред - рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ HTTP рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ,
httpVersion
рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред - URL рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
url
рдкреНрд░реЙрдкрд░реНрдЯреА рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред socket
рдЧреБрдг рдЖрдкрдХреЛ net.Socket
рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ net.Socket
рдСрдмреНрдЬреЗрдХреНрдЯред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛
http.IncomingMessage
рдмрд╛рдж рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
http.IncomingMessage
рд╡рд╛рд▓реА
http.IncomingMessage
рдСрдмреНрдЬреЗрдХреНрдЯ
Readable Stream
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
Node.js рдореЗрдВ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдереНрд░реЗрдбреНрд╕ рдореВрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ Node.js рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдзрд╛рд░рд╛рдПрдБ рдРрд╕реЗ рдЙрдкрдХрд░рдг рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмреАрдЪ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
рдзрд╛рдЧреЗ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ Node.js. рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рд╣реИ рд╡реЗ рджрд╢рдХреЛрдВ рдкрд╣рд▓реЗ рдУрдПрд╕ рдХреЗ рдпреВрдирд┐рдХреНрд╕ рдкрд░рд┐рд╡рд╛рд░ рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдПред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдзрд╛рд░рд╛рдУрдВ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдкрд╛рдЗрдк рдЪрд░рд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ - -
|
)ред
рдпрджрд┐ рд╣рдо рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдХрд╣рддреЗ рд╣реИрдВ, рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдирд╛, рддреЛ, рдЗрд╕реА рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЗрди рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред
рдкреНрд░рд╡рд╛рд╣ рддрдВрддреНрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рдкрдврд╝рд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
Node.js
рд╕реНрдЯреНрд░реАрдо рдореЙрдбреНрдпреВрд▓ рд╡рд╣ рдиреАрдВрд╡ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА API рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдзрд╛рд░рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ StrengthAbout рддрд╛рдХрдд
рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзрд╛рд░рд╛рдПрдБ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рдпрджреЗ рд╣реИрдВ:
- рд╕реНрдореГрддрд┐ рдХрд╛ рдХреБрд╢рд▓ рдЙрдкрдпреЛрдЧред рдПрдХ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд▓реЛрдб рдХреА рдЧрдИ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рдореЗрдореЛрд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рдПред
- рд╕рдордп рдХреА рдмрдЪрддред рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
Reams рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд╛ рдЙрджрд╛рд╣рд░рдг
рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдбрд┐рд╕реНрдХ рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рдкрд╣рд▓реЗ, рдЙрд╕ рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдорд╛рдирдХ Node.js
fs
рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЗрд╕реЗ HTTP рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрд░реЛрдз рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
const http = require('http') const fs = require('fs') const server = http.createServer(function (req, res) { fs.readFile(__dirname + '/data.txt', (err, data) => { res.end(data) }) }) server.listen(3000)
рдпрд╣рд╛рдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА
readFile()
рд╡рд┐рдзрд┐ рд╕реЗ рдЖрдк рдкреВрд░реА рдлрд╛рдЗрд▓ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рд░реАрдбрд┐рдВрдЧ рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╡рд╣ рд╕рдВрдмрдВрдзрд┐рдд рдХреЙрд▓рдмреИрдХ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
res.end(data)
рд╡рд┐рдзрд┐, рдЬрд┐рд╕реЗ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рднреЗрдЬрддрд╛ рд╣реИред
рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдЗрд╕ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рдпрд╣рд╛рдБ рдзрд╛рд░рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
const http = require('http') const fs = require('fs') const server = http.createServer((req, res) => { const stream = fs.createReadStream(__dirname + '/data.txt') stream.pipe(res) }) server.listen(3000)
рдЬрдм рдлрд╝рд╛рдЗрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЙрд╕ рдкрд▓ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЙрд╕рдХрд╛ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВред
тЦНрдкрд╛рдЗрдк () рд╡рд┐рдзрд┐
рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рдлреЙрд░реНрдо рд╕реНрдЯреНрд░реАрдо
stream.pipe(res)
рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ
pipe()
рдлрд╝рд╛рдЗрд▓ рд╕реНрдЯреНрд░реАрдо рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрддреА рд╣реИ рдФрд░ рдЧрдВрддрд╡реНрдп рдкрд░ рднреЗрдЬрддреА рд╣реИред
рдЗрд╕реЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдзрд╛рд░рд╛ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕реНрдЯреНрд░реАрдо рд╣реИ рдЬреЛ HTTP рдкреНрд░рддрд┐рд╕рд╛рдж рдХреЗ рд▓рд┐рдП рднреЗрдЬреА рдЬрд╛рддреА рд╣реИред
pipe()
рдХрд╛ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп
pipe()
рд╡рд┐рдзрд┐ рд▓рдХреНрд╖реНрдп рдзрд╛рд░рд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ
pipe()
рд╡рд┐рдзрд┐ рдореЗрдВ рдХрдИ рдХреЙрд▓ рдХреЛ рдЪреЗрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
src.pipe(dest1).pipe(dest2)
рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:
src.pipe(dest1) dest1.pipe(dest2)
тЦНAPI Node.js рдЬреЛ рдзрд╛рд░рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
рдзрд╛рд░рд╛рдПрдБ рдПрдХ рдЙрдкрдпреЛрдЧреА рддрдВрддреНрд░ рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, Node.js рдХрд░реНрдиреЗрд▓ рдХреЗ рдХрдИ рдореЙрдбреНрдпреВрд▓ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдХреНрд╖рдорддрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ:
process.stdin
- stdin
рдЬреБрдбрд╝рд╛ рдПрдХ рдереНрд░реЗрдб рд▓реМрдЯрд╛рддрд╛ рд╣реИредprocess.stdout
- рд╕реНрдЯрдбрдЖрдЙрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рдереНрд░реЗрдб рд▓реМрдЯрд╛рддрд╛ рд╣реИредprocess.stderr
- stderr
рдЬреБрдбрд╝рд╛ рдПрдХ рдзрд╛рдЧрд╛ рджреЗрддрд╛ рд╣реИредfs.createReadStream()
- рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдардиреАрдп рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рддрд╛ рд╣реИредfs.createWriteStream()
- рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рддрд╛ рд╣реИредnet.connect()
- рдПрдХ рд╕реНрдЯреНрд░реАрдо-рдЖрдзрд╛рд░рд┐рдд рдХрдиреЗрдХреНрд╢рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИредhttp.request()
- http.ClientRequest
рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИредzlib.createGzip()
- gzip
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ gzip
рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреНрд░реАрдо рдкрд░ рднреЗрдЬрддрд╛ рд╣реИредzlib.createGunzip()
- рдПрдХ gzip
рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИредzlib.createDeflate()
- zlib.createDeflate()
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреНрд░реАрдо рдкрд░ рднреЗрдЬрддрд╛ рд╣реИредzlib.createInflate()
- рдПрдХ zlib.createInflate()
рдзрд╛рд░рд╛ рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдзрд╛рд░рд╛рдПрдБ
рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреА рдзрд╛рд░рд╛рдПрдБ рд╣реИрдВ:
- рдПрдХ рдкрдардиреАрдп рдзрд╛рд░рд╛ рдПрдХ рдзрд╛рд░рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдРрд╕реА рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗред рдЬрдм рдбреЗрдЯрд╛ рдРрд╕реА рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЖрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рддрдм рддрдХ рдмрдлрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдбреЗрдЯрд╛ рдЙрдкрднреЛрдХреНрддрд╛ рдЗрд╕реЗ рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддрд╛ред
- рд░рд╛рдЗрдЯрд┐рдВрдЧ (рд▓реЗрдЦрди) рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреНрд░реАрдо рдПрдХ рд╕реНрдЯреНрд░реАрдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдбреЗрдЯрд╛ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕рд╕реЗ рдбреЗрдЯрд╛ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
- рдбреБрдкреНрд▓реЗрдХреНрд╕ рд╕реНрдЯреНрд░реАрдо (
Duplex
) - рдЗрд╕ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЖрдк рдбреЗрдЯрд╛ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирд╕реЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореВрд▓рддрдГ рдпрд╣ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдзрд╛рд░рд╛ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИ рдФрд░ рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдПрдХ рдзрд╛рд░рд╛ рд╣реИред - рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рд╕реНрдЯреНрд░реАрдо (
Transform
) - рдРрд╕реА рдзрд╛рд░рд╛рдПрдБ рдбреБрдкреНрд▓реЗрдХреНрд╕ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рдорд╛рди рд╣реЛрддреА рд╣реИрдВ, рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЗрди рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рдЬреЛ рдЖрддрд╛ рд╣реИ, рд╡рд╣ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдЙрдирд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
тЦН рдПрдХ рдкрдврд╝реЗрдВ рдзрд╛рд░рд╛ рдмрдирд╛рдПрдБ
,
stream
:
const Stream = require('stream') const readableStream = new Stream.Readable()
, :
readableStream.push('hi!') readableStream.push('ho!')
тЦН
Writable
_write()
. :
const Stream = require('stream') const writableStream = new Stream.Writable()
_write()
:
writableStream._write = (chunk, encoding, next) => { console.log(chunk.toString()) next() }
, :
process.stdin.pipe(writableStream)
тЦН
, , :
const Stream = require('stream') const readableStream = new Stream.Readable() const writableStream = new Stream.Writable() writableStream._write = (chunk, encoding, next) => { console.log(chunk.toString()) next() } readableStream.pipe(writableStream) readableStream.push('hi!') readableStream.push('ho!') readableStream.push(null)
readableStream.push(null)
.
,
readable
:
readableStream.on('readable', () => { console.log(readableStream.read()) })
тЦН
write()
:
writableStream.write('hey!\n')
тЦН ,
, ,
end()
:
writableStream.end()
. , , .
MySQL Node.js
MySQL . Node.js , MySQL-, тАФ , .
mysqljs/mysql . , , 12000 GitHub. , MySQL-.
тЦН
:
npm install mysql
тЦН
:
const mysql = require('mysql')
:
const options = { user: 'the_mysql_user_name', password: 'the_mysql_user_password', database: 'the_mysql_database_name' } const connection = mysql.createConnection(options)
:
connection.connect(err => { if (err) { console.error('An error occurred while connecting to the DB') throw err } }
тЦН
options
:
const options = { user: 'the_mysql_user_name', password: 'the_mysql_user_password', database: 'the_mysql_database_name' }
. тАФ :
host
тАФ , MySQL-, тАФ localhost
.port
тАФ , тАФ 3306
.socketPath
тАФ Unix .debug
тАФ , .trace
тАФ , .ssl
тАФ SSL- .
тЦН SELECT
SQL- .
query
, . тАФ , . . :
connection.query('SELECT * FROM todos', (error, todos, fields) => { if (error) { console.error('An error occurred while executing the query') throw error } console.log(todos) })
, :
const id = 223 connection.query('SELECT * FROM todos WHERE id = ?', [id], (error, todos, fields) => { if (error) { console.error('An error occurred while executing the query') throw error } console.log(todos) })
, , :
const id = 223 const author = 'Flavio' connection.query('SELECT * FROM todos WHERE id = ? AND author = ?', [id, author], (error, todos, fields) => { if (error) { console.error('An error occurred while executing the query') throw error } console.log(todos) })
тЦН INSERT
INSERT
. , :
const todo = { thing: 'Buy the milk' author: 'Flavio' } connection.query('INSERT INTO todos SET ?', todo, (error, results, fields) => { if (error) { console.error('An error occurred while executing the query') throw error } })
, ,
auto_increment
,
results.insertId
:
const todo = { thing: 'Buy the milk' author: 'Flavio' } connection.query('INSERT INTO todos SET ?', todo, (error, results, fields) => { if (error) { console.error('An error occurred while executing the query') throw error }} const id = results.resultId console.log(id) )
тЦН
тАФ
end()
:
connection.end()
.
-
Node.js -.
Node.js . , -,
NODE_ENV
:
NODE_ENV=production
. Linux, , :
export NODE_ENV=production
, ,
.bash_profile
( Bash), .
, :
NODE_ENV=production node app.js
Node.js.
NODE_ENV
production
:
,
Pug тАФ , Express, ,
NODE_ENV
production
. Express, , . - . .
Express . , ,
NODE_ENV
:
app.configure('development', () => { //... }) app.configure('production', () => { //... }) app.configure('production', 'staging', () => { //... })
, :
app.configure('development', () => { app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }) app.configure('production', () => { app.use(express.errorHandler()) })
тЦН
, , Node.js , . , , , Node.js, - ,
Node.js.
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! , Node.js, , .
