JavaScript๋ก ๋คํธ์ํฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ํ๋ซํผ์ธ Node.js 18.0์ด ์ถ์๋์์ต๋๋ค. Node.js 18.0์ ์ฅ๊ธฐ ์ง์ ๋ธ๋์น๋ก ๋ถ๋ฅ๋๋๋ฐ, ์ด ์ํ๋ ์์ ํ ์ดํ์ธ 18์์๋ง ๋ถ์ฌ๋ ์์ ์ ๋๋ค. Node.js 2025.x๋ 16๋ 2024์๊น์ง ์ง์๋ฉ๋๋ค. Node.js 14.x์ ์ด์ LTS ๋ธ๋์น ์ ์ง ๊ด๋ฆฌ๋ 2023๋ 12์๊น์ง ์ง์๋๋ฉฐ, ๋ง์ง๋ง LTS ๋ธ๋์น 30.x 17๋ ์ ์ธ 1๋ XNUMX์๊น์ง ์ ์ง๋ฉ๋๋ค. XNUMX.x LTS ๋ธ๋์น๋ XNUMX์ XNUMX์ผ์ ์ค๋จ๋๊ณ , Node.js XNUMX.x ์คํ ์ด์ง ๋ธ๋์น๋ XNUMX์ XNUMX์ผ์ ์ค๋จ๋ฉ๋๋ค.
์ฃผ์ ๊ฐ์ ์ฌํญ:
- V8 ์์ง์ด Chromium 10.1์์ ์ฌ์ฉ๋๋ ๋ฒ์ 101๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค. Node.js 17.9.0 ๋ฆด๋ฆฌ์ค์ ๋น๊ตํ์ฌ ์ด์ ๋์ ๊ธฐ์ค์ผ๋ก ์์๋ฅผ ์ฐพ๋ findLast ๋ฐ findLastIndex ๋ฉ์๋์ ๊ฐ์ ๊ธฐ๋ฅ์ด ์ง์๋ฉ๋๋ค. ๋ฐฐ์ด ๋ฐ Intl.supportedValuesOf ํจ์. ํฅ์๋ Intl.Locale API. ํด๋์ค ํ๋ ๋ฐ ๊ฐ์ธ ๋ฉ์๋์ ์ด๊ธฐํ๊ฐ ๊ฐ์ํ๋์์ต๋๋ค.
- ์คํ์ ์ธ fetch() API๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ผ๋ฉฐ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฆฌ์์ค๋ฅผ ๋ก๋ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๊ตฌํ์ HTTP/1.1 undici ํด๋ผ์ด์ธํธ์ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ๋ธ๋ผ์ฐ์ ์์ ์ ๊ณต๋๋ ์ ์ฌํ API์ ์ต๋ํ ๊ฐ๊น์ต๋๋ค. ์ฌ๊ธฐ์๋ HTTP ์์ฒญ ๋ฐ ์๋ต ํค๋๋ฅผ ์กฐ์ํ๊ธฐ ์ํ FormData, ํค๋, ์์ฒญ ๋ฐ ์๋ต ์ธํฐํ์ด์ค์ ๋ํ ์ง์์ด ํฌํจ๋ฉ๋๋ค. const res = fetch('https://nodejs.org/api/documentation.json')๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค. if (res.ok) { const data = res.json()์ ๊ธฐ๋ค๋ฆฝ๋๋ค; console.log(๋ฐ์ดํฐ); }
- ์น ์คํธ๋ฆผ API์ ์คํ์ ๊ตฌํ์ด ์ถ๊ฐ๋์ด ๋คํธ์ํฌ๋ฅผ ํตํด ์์ ๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. API๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฒด ํ์ผ์ด ๋ค์ด๋ก๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ๋ณด๊ฐ ๋์ฐฉํ ๋ ๋ฐ์ดํฐ ์์ ์ ์ํํ ์์ฒด ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ด์ Node.js์์ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฒด์๋ ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream ๋ฐ DecompressionStream์ด ํฌํจ๋ฉ๋๋ค.
- Blob API๊ฐ stable๋ก ์ด๋ํ์ฌ ๋ค์ํ ์์ ์ ์ค๋ ๋์์ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์์ ๋ฐ์ดํฐ๋ฅผ ์บก์ํํ ์ ์์ต๋๋ค.
- BroadcastChannel API๊ฐ ์์ ํ๋์ด "ํ ๋ช ์ ๋ฐ์ ์ - ๋ค์์ ์์ ์" ํ์์ผ๋ก ๋น๋๊ธฐ ๋ชจ๋์์ ๋ฉ์์ง ๊ตํ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- TAP(Test Anything Protocol) ํ์์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ JavaScript์์ ํ ์คํธ๋ฅผ ์์ฑํ๊ณ ์คํํ๊ธฐ ์ํ ์คํ์ ๋ชจ๋ node:test๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
- Red Hat Enterprise Linux(RHEL) 8 ๋ฐ Debian 2.28 ๋ฐ Ubuntu 10๋ฅผ ํฌํจํ Glibc 20.04+ ๊ธฐ๋ฐ์ ๊ธฐํ ๋ฐฐํฌํ๊ณผ macOS 10.15+์ฉ์ผ๋ก ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ์ด์ ๋ธ๋ฆฌ ์์ฑ์ด ์ ๊ณต๋ฉ๋๋ค. V8 ์์ง ๋น๋ ๋ฌธ์ ๋ก ์ธํด Windows์ฉ 32๋นํธ ๋น๋ ์์ฑ์ด ์ผ์์ ์ผ๋ก ์ค๋จ๋์์ต๋๋ค.
- ์์ ์ ์ฌ์ฉ์๊ฐ ์ ํํ ๊ตฌ์ฑ ์์๊ฐ ์ด๊ธฐํ๋์ด Node.js ์คํ ํ์ผ์ ๋น๋ํ๋ ์คํ์ ์ต์ ์ด ์ ๊ณต๋์์ต๋๋ค. ์์ ๊ตฌ์ฑ ์์๋ฅผ ์ ์ํ๊ธฐ ์ํด "--node-snapshot-main" ์ต์ ์ด ๊ตฌ์ฑ ๋น๋ ์คํฌ๋ฆฝํธ์ ์ถ๊ฐ๋์์ต๋๋ค(์: "./configure โnode-snapshot-main=marked.js;). ์ด๋ฆ ๋ ธ๋"
Node.js ํ๋ซํผ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฒ ์ ์ง ๊ด๋ฆฌ์ ์ผ๋ฐ ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ ๋คํธ์ํฌ ํ๋ก๊ทธ๋จ ์์ฑ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. Node.js์ฉ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ธฐ ์ํด HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 ์๋ฒ ๋ฐ ํด๋ผ์ด์ธํธ ๊ตฌํ์ด ํฌํจ๋ ๋ชจ๋, ํตํฉ์ฉ ๋ชจ๋์ ์ฐพ์ ์ ์๋ ๋๊ท๋ชจ ๋ชจ๋ ๋ชจ์์ด ์ค๋น๋์์ต๋๋ค. ๋ค์ํ ์น ํ๋ ์์ํฌ, WebSocket ๋ฐ Ajax ํธ๋ค๋ฌ, DBMS ์ปค๋ฅํฐ(MySQL, PostgreSQL, SQLite, MongoDB), ํ ํ๋ฆฟ ์์ง, CSS ์์ง, ์ํธํ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ ๋ฐ ์ธ์ฆ ์์คํ (OAuth), XML ํ์.
๋ง์ ์์ ๋ณ๋ ฌ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด Node.js๋ ๋น์ฐจ๋จ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐ ์ฝ๋ฐฑ ํธ๋ค๋ฌ ์ ์์ ๊ธฐ๋ฐํ ๋น๋๊ธฐ ์ฝ๋ ์คํ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค. ๋ฉํฐํ๋ ์ฑ ์ฐ๊ฒฐ์ ์ง์๋๋ ๋ฐฉ๋ฒ์ epoll, kqueue, /dev/poll ๋ฐ select์ ๋๋ค. ์ฐ๊ฒฐ ๋ค์คํ๋ฅผ ์ํด Unix ์์คํ ์ libev ๋ฐ Windows์ IOCP์ ๋ํ ์ถ๊ฐ ๊ธฐ๋ฅ์ธ libuv ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. libeio ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ ๋ ํ์ ์์ฑํ๊ณ c-ares๋ฅผ ํตํฉํ์ฌ ๋น์ฐจ๋จ ๋ชจ๋์์ DNS ์ฟผ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค. ์ฐจ๋จ์ ์ ๋ฐํ๋ ๋ชจ๋ ์์คํ ํธ์ถ์ ์ค๋ ๋ ํ ๋ด์์ ์คํ๋ ๋ค์ ์ ํธ ์ฒ๋ฆฌ๊ธฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ฆ ์๋ ํ์ดํ(ํ์ดํ)๋ฅผ ํตํด ๋ค์ ์ ์กํฉ๋๋ค. JavaScript ์ฝ๋์ ์คํ์ Google์์ ๊ฐ๋ฐํ V8 ์์ง์ ์ฌ์ฉํ์ฌ ์ ๊ณต๋ฉ๋๋ค(๋ํ Microsoft๋ Chakra-Core ์์ง์ผ๋ก Node.js ๋ฒ์ ์ ๊ฐ๋ฐ ์ค์ ๋๋ค).
๋ณธ์ง์ ์ผ๋ก Node.js๋ Perl AnyEvent, Ruby Event Machine, Python Twisted ํ๋ ์์ํฌ ๋ฐ Tcl ์ด๋ฒคํธ ๊ตฌํ๊ณผ ์ ์ฌํ์ง๋ง Node.js์ ์ด๋ฒคํธ ๋ฃจํ๋ ๊ฐ๋ฐ์์๊ฒ ์จ๊ฒจ์ ธ ์์ผ๋ฉฐ ์คํ ์ค์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฒคํธ ์ฒ๋ฆฌ์ ์ ์ฌํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์์. node.js์ฉ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ ๋ ์๋ฅผ ๋ค์ด "var result = db.query("select..");"๋ฅผ ์ํํ๋ ๋์ ์ด๋ฒคํธ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ์ ์ธ๋ถ ์ฌํญ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์์ ์๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ํ์ ๊ฒฐ๊ณผ ์ฒ๋ฆฌ์ ํจ๊ป Node.js๋ ๋น๋๊ธฐ ์คํ ์์น์ ์ฌ์ฉํฉ๋๋ค. ์ฝ๋๋ "db.query("select..", function (result) {result processing});"๋ก ๋ณํ๋๋ฉฐ, ์ฌ๊ธฐ์ ์ ์ด๋ ์ถ๊ฐ ์ฝ๋๋ก ์ฆ์ ์ ๋ฌ๋๊ณ ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ๋ฉด ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru