Node.js: различия между версиями
Vix (обсуждение | вклад) |
Vix (обсуждение | вклад) |
||
(не показаны 22 промежуточные версии этого же участника) | |||
Строка 12: | Строка 12: | ||
==УСТАНОВКА И IDE== | ==УСТАНОВКА И IDE== | ||
* [[Установка node.js в Debian]] | * [[Установка 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 браузерах] | |||
==ПРИМЕРЫ КОДА== | ==ПРИМЕРЫ КОДА== | ||
Строка 19: | Строка 25: | ||
* [https://www.geeksforgeeks.org/node-js-examples/ Node.js Examples] | * [https://www.geeksforgeeks.org/node-js-examples/ Node.js Examples] | ||
* [https://habr.com/ru/articles/245775/ Выразительный JavaScript: Node.js] | * [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] | |||
==ПОЛЕЗНЫЕ СТАТЬИ== | ==ПОЛЕЗНЫЕ СТАТЬИ== | ||
Строка 24: | Строка 41: | ||
* [[Tactoom.com изнутри — социальная блог-платформа на NodeJS/NoSQL]] | * [[Tactoom.com изнутри — социальная блог-платформа на NodeJS/NoSQL]] | ||
* [https://ru.hexlet.io/blog/posts/luchshie-praktiki-napisaniya-prilozheniy-na-nodejs 10 лучших практик написания приложений на NodeJS] | * [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 разработчиков] | |||
==БИБЛИОТЕКА== | ==БИБЛИОТЕКА== | ||
Строка 38: | Строка 58: | ||
** [https://www.npmjs.com/package/jsdoc2 jsdoc2 npm] | ** [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://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/138629/ Разработка WEB-проекта на Node.JS: Часть 2] | * [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://habr.com/ru/articles/147571/ Moqups — новый сервис для создания макетов UI] | ||
* [https://www.pvsm.ru/node-js/12212 Централизованная обработка исключений в Node.JS] | * [https://www.pvsm.ru/node-js/12212 Централизованная обработка исключений в Node.JS] | ||
Строка 49: | Строка 70: | ||
* [https://tproger.ru/articles/5-razlichnyh-instrumentov-dlya-obedineniya-prilozhenij-node-js 5 сборщиков модулей для приложений 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://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
- Установка node.js в Debian
- Node.js Applications with VS Code
- vscode-docs
- How to get started debugging NodeJS applications with ndb
- Debugger
- Node Inspector
ПРИМЕРЫ КОДА
- Первое приложение на Node.js
- Node.js Tutorial
- Usage and example
- Node.js Examples
- Выразительный JavaScript: Node.js
- JavaScript Strict Mode
- Node.js — Масштабирование приложения с помощью child_process
- Node js & Подключение модулей без явного использования require или аналог namespace
- Node.JS — Основы асинхронного программирования, часть 1
- Node.js debian init.script
- Daemon init script for node.js based app/server (DEBIAN/UBUNTU)
- How to Use JSON files in Node.js
- Nodejs - Использование MD5
- Получить MAC-адрес текущего компьютера с node.js
- node.js hash string?
- Node.js, Require и Exports
ПОЛЕЗНЫЕ СТАТЬИ
- Кластер на основе NodeJS
- Tactoom.com изнутри — социальная блог-платформа на NodeJS/NoSQL
- 10 лучших практик написания приложений на NodeJS
- 10 основных ошибок при разработке на Node.js
БИБЛИОТЕКА
- Руководство NodeJS
- Node.js Virtual Machine (vm) Usage (перевод)
- NodeJs - socket.io
- Express: веб-фреймворк для Node.js. Руководство пользователя
- Node-sync_—_псевдо-синхронное_программирование_на_nodejs_с_использованием_fibers
- Socket.io документация
OnLine БИБЛИОТЕКА
- Руководство по Node.js
- Генерация документации с использованием JSDoc
- Разработка WEB-проекта на Node.JS
- Moqups — новый сервис для создания макетов UI
- Централизованная обработка исключений в Node.JS
- node-canvas – render and stream HTML5 canvas using Node.js
- Веб-фреймворк Express (Node.js/JavaScript)
- Установка node.js на VPS
- Forum Node.js
- Делаем проект на Node.js с использованием Mongoose, Express, Cluster.
- Разработка высокопроизводительных сервисов на Node.js
- 5 сборщиков модулей для приложений Node.js
- Сборка проекта в web-разработке
- Справочник Nodejs - RU
- Вызов и исполнение бинарных команд из Node.js
- Node.js and Postgres Phone Book
- Шаблорнизатор для NodeJS
- Node.JS / Разработка WEB-проекта на Node.JS