Node.js: различия между версиями
Vix (обсуждение | вклад) |
Vix (обсуждение | вклад) |
||
Строка 59: | Строка 59: | ||
* [https://sky.pro/wiki/javascript/vyzov-i-ispolnenie-binarnykh-komand-iz-node-js/ Вызов и исполнение бинарных команд из Node.js] | * [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://drumcoder.co.uk/blog/2011/jan/10/nodejs-phone-book/ Node.js and Postgres Phone Book] | ||
* [https://github.com/pugjs/pug#readme Шаблорнизатор для NodeJS] | |||
==ИСТОЧНИКИ== | ==ИСТОЧНИКИ== | ||
* [https://metanit.com/web/nodejs/1.1.php Введение в Node JS] | * [https://metanit.com/web/nodejs/1.1.php Введение в Node JS] |
Версия от 21:08, 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
- How to get started debugging NodeJS applications with ndb
- Debugger
- Удаленная отладка Node.js приложений и кода на WebKit браузерах
ПРИМЕРЫ КОДА
- Первое приложение на 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
ПОЛЕЗНЫЕ СТАТЬИ
- Кластер на основе NodeJS
- Tactoom.com изнутри — социальная блог-платформа на NodeJS/NoSQL
- 10 лучших практик написания приложений на NodeJS
БИБЛИОТЕКА
- Руководство 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: Часть 2
- 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