Node.js - це відкрите джерело та абсолютно безкоштовне програмне забезпечення, яке дає змогу веб-розробникам створювати масштабовані та швидкі мережеві програми. Використовуючи тривалість виконання JavaScript в JavaScript, програма Node.js надзвичайно ефективна та легка, особливо тому, що вона використовує неблокуючу модель, що керується подіями.
Верхня платформа для запуску коду JavaScript на сервері
Node.js в даний час вважається провідною платформою для запуску коду JavaScript на сервері, яка використовується у великих компаніях, таких як Google, eBay, Yahoo, LinkedIn, Microsoft, Cloud9 та багато інших.
Обов'язковий приклад
Наступний код створить простий веб-сервер, який відповідає "Hello World" для кожного запиту.
var http = require ('http');
http.createServer (функція (req, res) {
res.writeHead (200, {'Content-Type': 'text / plain'});
res.end ('Hello Worldn');
}). слухайте (1337, '127.0.0.1');
console.log ('Сервер працює на http://127.0.0.1:1337/');
Для запуску HTTP-сервера вам доведеться вказати код вище в файл з назвою & ldquo; example.js & rdquo; (без лапок) і виконайте його за допомогою команди вузла з термінального емулятора:
% node example.js
Сервер працює на http://127.0.0.1:1337/
Підтримувані операційні системи
Node.js - це багатоплатформенна програма, яка успішно пройшла випробування в багатьох дистрибутивах GNU / Linux, включаючи Debian, Ubuntu, Arch Linux, Fedora, Red Hat Enterprise Linux, openSUSE, Mageia, Slackware та інші. як і в комерційних операційних системах Mac OS X і Microsoft Windows. Наразі підтримуються як 64-бітні, так і 32-бітні архітектури набору команд.
Під капотом, вимоги та наявність
Як згадувалося, це багатоплатформенне програмне забезпечення. Він може бути завантажений як попередньо встановлені програмісти для операційних систем Mac OS X, GNU / Linux та Microsoft Windows, а також універсальний архів джерел, який можна збирати та встановлювати практично в будь-якій операційній системі, де підтримується Python.
Що нового у цьому випуску:
- консоль:
- Метод console.timeLog () був реалізований. # 21312
- дефіс:
- Оновити до libuv 1.22.0. # 21731
- Оновити до ICU 62.1 (Unicode 11, CLDR 33.1). # 21728
- http:
- Додана підтримка для передачі параметрів тайм-ауту та агента для http.request. # 21204
- інспектор:
- Покажіть вихідний консольний API у вимозі ('insector') консолі. # 21659
- napi:
- Додана експериментальна підтримка функцій, що стосуються великих чисел. # 21226
- процес:
- Метод process.hrtime.bigint () був реалізований. # 21256
- Додано аргумент командного рядка -tіlle для встановлення заголовку процесу під час запуску. # 21477
- trace_events:
- Додані метадані process_name. # 21477
- Додано нових співавторів
- codebytere - Шеллі Вор
Що нового у версії 10.0.0:
- Повна підтримка N-API
- Просте початок відладки часу за допомогою нового розширення коду Visual Studio
- Підтримка TTD для генераторів та функцій асинхронного типу
- Підтримка протоколу інспектора
- Збільшення стабільності та інших різноманітних покращень
Що нового в версії:
- async_hooks:
- додавати події трасування до async_hooks (Андреас Мэдсен) # 15538
- додати типи провайдерів для мережевого сервера (Andreas Madsen) # 17157
- консоль:
- Консоль.debug тепер може використовуватися за межами інспектора (Бенджамін Заславський) # 17033
- дефіс:
- оновити libuv до 1.18.0 (cjihrig) # 17282
- патч V8 до 6.2.414.46 (Myles Borins) # 17206
- модуль:
- module.builtinModules поверне список вбудованих модулів (Jon Moss) # 16386
- n-api:
- додати допоміжний додаток для отримання циклу подій (Anna Henningsen) # 17109
- процес:
- process.setUncaughtExceptionCaptureCallback тепер може бути використаний для налаштування поведінки для --abort-on-uncaught-exception (Анна Хеннінгсен) # 17159
- За допомогою обробника сигналів тепер можна отримати код сигналу, який ініціював обробник. (Роберт Россманн) № 15606
- src:
- embedders тепер можуть використовувати Node :: CreatePlatform для створення примірника NodePlatform (Cheng Zhao) # 16981
- потік:
- writable.writableHighWaterMark і readable.readableHighWaterMark повертають значення, які об'єкт потоку був інстанційований (Calvin Metcalf) # 12860
- Додано нових співавторів
- maclover7 Джон Мосс
- гійбедфорд Гай Бедфорд
- зшив Ян Го
Що нового в версії 9.2.0:
- крипто:
- Підтримка створення з 1.1.0 та 1.0.2 (Дейвід Бенджамін) # 16130
- fs:
- fs.realpathSync.native та fs.realpath.native тепер викрито (Ben Noordhuis) # 15776
- процес:
- виставити process.ppid (cjihrig) # 16839
Що нового у версії 8.5.0:
- зібрати:
- Знімки в даний момент повторно включено в V8 # 14875
- консоль:
- Впровадити мінімальний консоль.груп (). # 14910
- дефіс:
- оновити libuv до 1.14.1 # 14866
- оновити nghttp2 до v1.25.0 # 14955
- DNS:
- Додайте параметр verbatim до dns.lookup (). Коли це правда, результати з DNS-резольвера передаються так, як це відбувається, без переміщення, що Node.js в іншому випадку це виставляє адреси IPv4 перед адресами IPv6. # 14731
- fs:
- додати fs.copyFile і fs.copyFileSync, що дозволяє ефективніше копіювати файли. # 15034
- інспектор:
- Увімкнути сліди стеку асинхронного типу # 13870
- модуль:
- Додати підтримку ESM. На даний момент він знаходиться за прапором --experimental-modules і вимагає розширення .mjs. вузол - експериментальні модулі index.mjs # 14369
- napi:
- виконайте обіцянку # 14365
- os:
- Додайте підтримку позначення CIDR до виводу методу networkInterfaces (). # 14307
- perf_hooks:
- Початкова реалізація API Timing Performance для Node.js. Це той самий API для синхронізації продуктивності, який застосовується сучасними браузерами з багатьма властивостями Node.js. Використовуються API інтерфейсу User Timing () та measure (). # 14680
- tls:
- кілька PFX у createSecureContext # 14793
- Додано нових співавторів:
- BridgeAR - Ruben Bridgewater
Що нового у версії 8.3.0:
- Двигун V8 був оновлений до версії 6.0, що суттєво змінило профіль продуктивності.
- Інші помітні зміни:
- DNS:
- Незалежні примірники DNS-резольвера підтримуються зараз, підтримуючи скасування відповідних запитів.
- N-API:
- Багато функцій N-API для обробки помилок було змінено, щоб підтримувати присвоєння кодів помилок.
- REPL:
- Підтримка автозавершення для вимоги () була вдосконалена.
- Утиліти:
- Стандарт кодування WHATWG (TextDecoder та TextEncoder) реалізовано як експериментальна функція.
Що нового у версії 8.1.3:
- Виправлено дві регресії Stream з модулем потоку:
- Завершення події тепер завжди буде випущено після події помилки, якщо вона буде випущена: [0a9e96e86c] # 13850
- У режимі об'єкта читаються потоки можуть знову використовувати невизначені дані. [5840138e70] # 13760
Що нового у версії 8.1.2:
- Виправте помилкові властивості process.release в 8.1.1, що спричиняє неможливість складання власних надбудов на платформах, відмінних від Windows. Це виправлення в процесі збірки Node.js, тому додаткових кодів не входить до версії 8.1.1.
Що нового у версії 7.7.1:
- [c8e34b61f6] - build: додайте відсутні заголовки файлів src / tracing (Daniel Bevenius) # 10851
- [96f55f9e59] - src: перемістити trace_event.h до внутрішнього заголовка (Ben Noordhuis) # 10959
- [30c80cbe6f] - src: виправлення TracingController (Jason Ginchereau) # 10623
- [b89b2a7d36] - src: завжди ініціалізуйте контролер трасування в агенті (Метт Лорінг) # 10507
- [54e55e05ca] - тест: зробити більш надійним тест-intl-no-icu-дані (Michael Zasso) # 10992
- [7b253eb3ed] - тест: збільшити суворість для тестової траси-події (Rich Trott) # 11065
- [3dc4a5f1f4] - трасування: виправлення - попередження про несправжене приватне поле (Сантьяго Гімено) # 10416
- [8a918bf411] - трасування: виправлення - попередження про перебіг (Сантьяго Гімено) # 10416
Що нового у версії 7.4.0:
- буфер:
- Покращити ефективність розподілу буферу на ~ 11%. (Брайан Уайт) # 10443
- Покращити ефективність Buffer.from () на ~ 50%. (Брайан Уайт) # 10443
- події: покращити ефективність EventEmitter.once () на ~ 27%. (Брайан Уайт) # 10445
- fs: Дозволити проходження Uint8Array до методів fs, де підтримуються буфери. (Анна Хеннінгсен) № 10382
- http: Покращення роботи HTTP-сервера на ~ 7%. (Брайан Уайт) # 6533
- npm: оновлення до v4.0.5 (Kat Marchan) # 10330
Що нового у версії 7.2.1:
- буфер:
- Відновлено вичерпність виклику Buffer () без нових. (Ганна Хеннінгсен) # 9529
- Виправлено buffer.transcode () для однобайтових кодування символів до UCS2. (Ганна Хеннінгсен) # 9838
- обіцяють: - попередження про трасу зараз виробляють корисні стаккрати для попереджень про обіцянку. (Ганна Хеннінгсен) # 9525
- repl: Виправлена помилка, що перешкоджає правильному аналізу функцій генератора. (Тедді Кац) # 9852
- V8: Виправлено значний екземпляр регресії продуктивності. (Франциска Хінкельманн) № 9730
Що нового у версії 7.2.0:
- крипто: метод "Розшифрувати" setAuthTag () і setAAD тепер повертають це.
- dns: реалізовано {ttl: true} для resolve4 () і resolve6 ().
- libuv: оновлення до v1.10.1
- Виправлено потенційне переповнення буфера при написанні даних на консолі на Windows 10. (CVE-2016-9551)
- процес: додано нове зовнішнє властивість до даних, які повертаються memoryUsage ().
- tls: виправлено витік пам'яті, коли записи були черговані в з'єднання TLS, яке було знищено під час руху.
- V8 (dep): оновлення до v5.4.500.43
- v8: Дані, отримані getHeapStatistics (), включають три нових поля: malloced_memory, peak_malloced_memory і does_zap_garbage.
Що нового у версії 6.4.0:
- build: символи zlib та додаткові символи OpenSSL тепер виставляються на платформах Windows. (Олексій Хультман) № 7983 та №7576
- child_process, cluster: Захищені дочірні процеси та кластери тепер підтримують налаштування stdio. (Колін Ігріг) № 7811 та № 7838
- child_process: argv [0] тепер можна встановити на довільні значення в порожніх процесах. (Пат Пантуто) # 7696
- fs: fs.ReadStream тепер показує кількість байтів, прочитаних до цього часу. (Linus Unneback) # 7942
- repl: REPL тепер підтримує режим редактора. (Принц Дж. Уеслі) # 7275
- util: inspect () тепер можна налаштувати глобально, використовуючи util.inspect.defaultOptions. (Роман Рейс) №8013
Тепер
Що нового у версії 6.3.0:
- буфер: додано buffer.swap64 () для доповнення swap16 () & amp; swap32 (). (Зах Бьорнсон) # 7157
- build: Для створення Node.js як спільної бібліотеки були додані нові параметри конфігурації. (Стефан Будану) №6994
- Параметри: - shared, --without-v8-platform & amp; - без комплектації-v8.
- крипто: оновлення кореневих сертифікатів. (Бен Нордхейс) № 7363
- відладчик: адреса сервера тепер можна налаштувати за допомогою --debug = :. (Ben Noordhuis) # 3316
- npm: оновлено npm до v3.10.3 (Kat Marchan) # 7515 & amp; (Ребекка Тернер) # 7410
- readline: до конструктора readline додано пропозицію. (Еван Лукас) № 7125
- repl / vm: sigint / ctrl + c тепер виривається з нескінченних циклів, не припиняючи екземпляр Node.js. (Анна Хеннінгсен) № 6635
- src:
- Додано вузол :: FreeEnvironment Public C ++ API. (Чен Чжао) # 3098
- Refactored require ('константи'), константи тепер доступні безпосередньо з їх відповідних модулів. (Джеймс М Снелл) # 6534
- потік: покращена продуктивність readable.read () до 70%. (Брайан Уайт) # 7077
- таймери: setImmediate () в даний час на 150% швидше в деяких ситуаціях. (Andras) # 6436
- util: Додано параметр breakLength для util.inspect (), щоб контролювати, як об'єкти форматуються по лініях. (cjihrig) # 7499
- v8-insector: Експериментальна підтримка була додана для налагодження Node.js над протоколом інспектора. (Алі Іджаз Шейх) # 6792
- Примітка. Ця функція експериментальна, її можна змінити або видалити.
- Ви можете спробувати цю функцію, запустивши Node.js за допомогою прапорця --inspect.
Що нового в версії 6.0.0:
- Буфер:
- Нові конструктори буфера додані # 4682 та # 5833.
- Існуючі конструктори Buffer () та SlowBuffer () застаріли в документах № 4682 та № 5833.
- Незареєстровані API-адреси буфера видалено # 5048, # 4594.
- Покращена обробка помилок # 4514.
- Спосіб Buffer.prototype.lastIndexOf () додано # 4846.
- Кластер:
- Працівник випущений як перший аргумент у події "повідомлення" № 5361.
- Власник worker.exitedAfterDisconnect замінює worker.suicide # 3743.
- Консоль:
- Виклик console.timeEnd () з невідомим ярликом тепер видає попередження про процес, а не закидання # 5901.
- Крипто:
- Покращена обробка помилок # 3100, # 5611.
- Спрощена сертифікація класів сертифікатів № 5382.
- Покращено контроль за режимом FIPS # 5181.
- Перевантаження дайджесту pbkdf2 не підтримується # 4047.
- Залежності:
- Повторно введіть спільну підтримку створення c-ares # 5775.
- V8 оновлено до версії 5.0.71.35 # 6372.
- DNS:
- Додайте API dns.resolvePtr () для запиту простих записів DTR PTR # 4921.
- Домени:
- Очистити стек, коли немає обробника помилок # 4659.
- Події:
- об'єкт EventEmitter.prototype._events більше не успадковується з Object.prototype # 6092.
- Методи EventEmitter.prototype.prependListener () та EventEmitter.prototype.prependOnceListener () додані # 6032.
- Файлова система:
- Методи fs.realpath () та fs.realpathSync () були оновлені, щоб використовувати більш ефективну реалізацію на основі libuv. Ця зміна включає видалення аргументу кешу, і метод може викинути нові помилки # 3594.
- FS apis тепер може приймати та повертати шляхи як буфери 5616.
- Помилка обробки та перевірки поліпшень # 5616, # 5590, # 4518, # 3917.
- Строковий інтерфейс fs.read не підтримується # 4525.
- HTTP:
- Тепер "clientError" може бути використаний для повернення користувацьких помилок з HTTP-сервера # 4557.
- Модулі:
- Поточний каталог тепер пріоритетний для місцевих пошуків # 5689.
- Символьні посилання зберігаються під час заповнення модулів # 5950.
- Net:
- Підказки DNS більше неявно встановлюють # 6021.
- Покращена обробка помилок та перевірка типу # 5981, # 5733, # 2904.
- ОС X:
- MACOSX_DEPLOYMENT_TARGET було зіткнуто до 10.7 # 6402.
- Шлях:
- Покращено перевірку типу # 5348.
- Процес:
- Внести попередження про процес API # 4782.
- Викиньте виняток, коли не функція передається до nextTick # 3860.
- запит запиту:
- Об'єкт, який повернув querystring.parse (), більше не успадковується з Object.prototype # 6055.
- Readline:
- Основна інформація видається беззастережно # 6024.
- Тепер історія може бути явним чином відключена # 6352.
- REPL:
- Призначення до _ виведе попередження № 5535.
- Виразів більше не буде завершено, коли eval не вдається # 6328.
- Таймери:
- Невдало, коли зворотний виклик не є функцією # 4362.
- Потоки:
- Нуль тепер є недійсним елементом для запису в об'єктному режимі # 6170.
- TLS:
- Перейменуйте "clientError" в "tlsClientError" # 4557.
- SHA1 використовується для sessionIdContext # 3866.
- TTY:
- Заздалегідь застарілий пакет обкладинки setRawMode видалено # 2528.
- URL:
- Ім'я користувача та пароль буде видалено url.resolve (), якщо хост змінить # 1480.
- Утиліти:
- Зміни в форматі об'єкта Error # 4582.
- Метод util'_extend () застарілий # 4903
- Спосіб util.log () застарілий # 6161.
- Windows:
- Windows XP та Vista більше не підтримуються # 5167.
- Zlib:
- Зроблено кілька покращень для обробки Zlib # 5883 і # 5707.
Вимоги :
- Python
Коментар не знайдено