Node.js: различия между версиями

Материал из support.qbpro.ru
 
(не показано 46 промежуточных версий этого же участника)
Строка 10: Строка 10:
==АРХИТЕКТУРА==
==АРХИТЕКТУРА==
'''Node.js''' работает на движке '''V8''', транслирующем '''JavaScript''' в машинный код. Простыми словами, '''Node.js''' — это приложение на '''C++''', которое получает на входе код '''JavaScript''' и выполняет его. Чтобы взаимодействовать с устройствами ввода-вывода на компьютере, в платформе предусмотрен собственный интерфейс на '''C++'''. Таким образом, платформа превращает специализированный скриптовый язык '''JavaScript''' в язык общего назначения, поэтому на '''Node.js''' можно писать любые компьютерные программы. Платформа позволяет пользоваться единым языком '''JavaScript''' для написания кода и на стороне клиента ('''Frontend'''), и на сервере ('''Backend'''). Эти возможности '''Node.js''' важны для разработки приложений реального времени, которые основаны на событиях.
'''Node.js''' работает на движке '''V8''', транслирующем '''JavaScript''' в машинный код. Простыми словами, '''Node.js''' — это приложение на '''C++''', которое получает на входе код '''JavaScript''' и выполняет его. Чтобы взаимодействовать с устройствами ввода-вывода на компьютере, в платформе предусмотрен собственный интерфейс на '''C++'''. Таким образом, платформа превращает специализированный скриптовый язык '''JavaScript''' в язык общего назначения, поэтому на '''Node.js''' можно писать любые компьютерные программы. Платформа позволяет пользоваться единым языком '''JavaScript''' для написания кода и на стороне клиента ('''Frontend'''), и на сервере ('''Backend'''). Эти возможности '''Node.js''' важны для разработки приложений реального времени, которые основаны на событиях.
==УСТАНОВКА И IDE==
* [[Установка node.js в Debian]]
* [https://vscode-docs.readthedocs.io/en/latest/runtimes/nodejs/ Node.js Applications with VS Code]
* [https://github.com/microsoft/vscode-docs/blob/main/docs/nodejs/nodejs-tutorial.md vscode-docs]
* [https://translated.turbopages.org/proxy_u/en-ru.ru.dad9deda-66a13eb8-24112291-74722d776562/https/www.freecodecamp.org/news/how-to-get-started-debugging-nodejs-applications-with-ndb-a37e8747dbba How to get started debugging NodeJS applications with ndb]
* [https://nodejs.org/api/debugger.html Debugger]
* [https://github.com/node-inspector/node-inspector Node Inspector]
** [https://habr.com/ru/articles/114825/ Удаленная отладка Node.js приложений и кода на WebKit браузерах]


==ПРИМЕРЫ КОДА==
==ПРИМЕРЫ КОДА==
* [https://metanit.com/web/nodejs/1.2.php Первое приложение на Node.js]
* [https://metanit.com/web/nodejs/1.2.php Первое приложение на Node.js]
* [https://www.demo2s.com/node.js/node.js.html Node.js Tutorial]
* [https://nodejs.org/api/synopsis.html Usage and example]
* [https://www.geeksforgeeks.org/node-js-examples/ Node.js Examples]
* [https://habr.com/ru/articles/245775/ Выразительный JavaScript: Node.js]
* [[JavaScript Strict Mode]]
* [https://webformyself.com/node-js-masshtabirovanie-prilozheniya-s-pomoshhyu-child_process/ Node.js — Масштабирование приложения с помощью child_process]
* [[Node js & Подключение модулей без явного использования require или аналог namespace]]
* [https://habr.com/ru/articles/102717/ Node.JS — Основы асинхронного программирования, часть 1]
* [[Node.js debian init.script]]
* [[Daemon init script for node.js based app/server (DEBIAN/UBUNTU)]]
* [https://www.codementor.io/@codementorteam/how-to-use-json-files-in-node-js-85hndqt32 How to Use JSON files in Node.js]
* [[Nodejs - Использование MD5]]
* [[Получить MAC-адрес текущего компьютера с node.js]]
* [https://stackoverflow.com/questions/5878682/node-js-hash-string node.js hash string?]
* [https://habr.com/post/217901/ Node.js, Require и Exports]


==ПОЛЕЗНЫЕ СТАТЬИ==
==ПОЛЕЗНЫЕ СТАТЬИ==
* [[Кластер на основе NodeJS]]
* [[Tactoom.com изнутри — социальная блог-платформа на NodeJS/NoSQL]]
* [https://ru.hexlet.io/blog/posts/luchshie-praktiki-napisaniya-prilozheniy-na-nodejs 10 лучших практик написания приложений на NodeJS]
* [https://habr.com/ru/companies/vk/articles/255895/ 10 основных ошибок при разработке на Node.js]
** [https://proglib.io/p/10-node-errors 10 главных ошибок, которые совершают Node-разработчики]
** [https://makeomatic.ru/blog/2015/05/25/10_mistakes_2_node/ 10 типичных ошибок Node.js разработчиков]
==БИБЛИОТЕКА==
==БИБЛИОТЕКА==
* [[Руководство NodeJS]]
* [[Руководство NodeJS]]
* [[Node.js Virtual Machine (vm) Usage (перевод)]]
* [[Node.js Virtual Machine (vm) Usage (перевод)]]
* [[NodeJs - socket.io]]
* [[Express: веб-фреймворк для Node.js. Руководство пользователя]]
* [[Node-sync_—_псевдо-синхронное_программирование_на_nodejs_с_использованием_fibers]]
* [[Socket.io документация]]


==OnLine БИБЛИОТЕКА==
==OnLine БИБЛИОТЕКА==
* [https://habr.com/ru/companies/ruvds/articles/422893/ Руководство по Node.js]
* [https://habr.com/ru/companies/ruvds/articles/422893/ Руководство по Node.js]
* [https://www.npmjs.com/package/jsdoc2 jsdoc2 npm]
* [https://habr.com/ru/articles/572968/ Генерация документации с использованием JSDoc]
* [https://www.demo2s.com/node.js/node-js-jsdoc-an-api-documentation-generator-for-javascript.html Node.js jsdoc An API documentation generator for JavaScript.]
** [https://www.npmjs.com/package/jsdoc2 jsdoc2 npm]
** [https://www.demo2s.com/node.js/node-js-jsdoc-an-api-documentation-generator-for-javascript.html Node.js jsdoc An API documentation generator for JavaScript.]
* [https://habr.com/ru/articles/138071/ Разработка WEB-проекта на Node.JS]
** [https://habr.com/ru/articles/138629/ Разработка WEB-проекта на Node.JS: Часть 2]
* [https://habr.com/ru/articles/147571/ Moqups — новый сервис для создания макетов UI]
* [https://www.pvsm.ru/node-js/12212 Централизованная обработка исключений в Node.JS]
* [https://changelog.com/posts/node-canvas-render-and-stream-html5-canvas-using-node-js node-canvas – render and stream HTML5 canvas using Node.js]
* [https://developer.mozilla.org/ru/docs/Learn/Server-side/Express_Nodejs Веб-фреймворк Express (Node.js/JavaScript)]
* [https://www.pvsm.ru/node-js/16286 Установка node.js на VPS]
* [https://www.cyberforum.ru/nodejs/ Forum Node.js]
* [https://habr.com/ru/articles/314394/ Делаем проект на Node.js с использованием Mongoose, Express, Cluster.]
* [http://blog.denivip.ru/index.php/2012/11/%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%B2%D1%8B%D1%81%D0%BE%D0%BA%D0%BE%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-%D1%81/ Разработка высокопроизводительных сервисов на Node.js]
* [https://tproger.ru/articles/5-razlichnyh-instrumentov-dlya-obedineniya-prilozhenij-node-js 5 сборщиков модулей для приложений Node.js]
* [https://yakovlev.me/web-razrabotka-eto-slozhno/ Сборка проекта в web-разработке]
* [https://nodejsdev.ru/ Справочник Nodejs - RU ]
* [https://sky.pro/wiki/javascript/vyzov-i-ispolnenie-binarnykh-komand-iz-node-js/ Вызов и исполнение бинарных команд из Node.js]
* [https://drumcoder.co.uk/blog/2011/jan/10/nodejs-phone-book/ Node.js and Postgres Phone Book]
* [https://github.com/pugjs/pug#readme Шаблорнизатор для NodeJS]
* [https://www.pvsm.ru/web-razrabotka/2198/print/ Node.JS / Разработка WEB-проекта на Node.JS]


==ИСТОЧНИКИ==
==ИСТОЧНИКИ==
* [https://metanit.com/web/nodejs/1.1.php Введение в Node JS]
* [https://metanit.com/web/nodejs/1.1.php Введение в Node JS]

Текущая версия от 21:37, 24 июля 2024

ВВЕДЕНИЕ

Node.js представляет среду выполнения кода на JavaScript, которая построена на основе движка JavaScript Chrome V8, который позволяет транслировать вызовы на языке JavaScript в машинный код. Node.js прежде всего предназначен для создания серверных приложений на языке JavaScript. Хотя также существуют проекты по написанию десктопных приложений (Electron) и даже по созданию кода для микроконтроллеров. Но прежде всего мы говорим о Node.js, как о платформе для создания веб-приложений.
Особенностью Node.js является то, что Node.js использует один (основной) поток, который получает все запросы и управляет ими через очередь запросов (таким образом, Node.js является однопоточным сервером). Внутри этого потока выполняется так называемый цикл событий (event loop), который представляет собой цикл, который непрерывно проверяет запросы из очереди событий и обрабатывает события ввода и вывода.
Если пользователь отправляет запрос на сервер Node.js, в цикле событий выполняется проверка, чтобы определить, требует ли следующий запрос блокирующей операции ввода или вывода (например, обращение к базе данных или файловой системе). Если нет, то запрос обрабатывается напрямую, и пользователю отправляется результат обработки.
Если же запрос требует блокирующей операции ввода/вывода, для выполнения этой операции запускается один из нескольких внутренних обработчиков Node.js (потоков). В обработчики передается функция обратного вызова, которая, в свою очередь, вызывается, как только будет выполнена блокирующая операция ввода/вывода.
При этом основной поток не останавливается во время блокирующих операций ввода/вывода: цикл событий постоянно совершает свои обходы, проверяет новые запросы и так далее. Благодаря этой архитектуре Node.js предотвращает создание все большего количества потоков и чрезмерного использования памяти.
Платформу разработал Райан Даль, программист из Америки, в 2009 году. До появления Node.js приложения, которые написаны на языке программирования JavaScript, можно было запускать только в браузере. С появлением платформы стало возможно писать на JavaScript не только в браузере, но и на сервере.
Node.js является открытым проектом, исходники которого можно посмотреть на github.com.

АРХИТЕКТУРА

Node.js работает на движке V8, транслирующем JavaScript в машинный код. Простыми словами, Node.js — это приложение на C++, которое получает на входе код JavaScript и выполняет его. Чтобы взаимодействовать с устройствами ввода-вывода на компьютере, в платформе предусмотрен собственный интерфейс на C++. Таким образом, платформа превращает специализированный скриптовый язык JavaScript в язык общего назначения, поэтому на Node.js можно писать любые компьютерные программы. Платформа позволяет пользоваться единым языком JavaScript для написания кода и на стороне клиента (Frontend), и на сервере (Backend). Эти возможности Node.js важны для разработки приложений реального времени, которые основаны на событиях.

УСТАНОВКА И IDE

ПРИМЕРЫ КОДА

ПОЛЕЗНЫЕ СТАТЬИ

БИБЛИОТЕКА

OnLine БИБЛИОТЕКА

ИСТОЧНИКИ