Для запуска Node.js:

Команда -

node (запустите Node REPL в своем терминале)

node — версия (распечатайте текущую версию Node)

узел имя_файла.js (выполнить код узла в файле имя.js)

💡 REPL означает Read Eval Print Loop. Это список шагов, которые происходят, когда вы запускаете команду node, а затем вводите код.

Глобальный объект Node.js

В Node у нас есть объект global, к которому мы всегда можем получить доступ. Функции, которые, как мы ожидаем, будут доступны везде, находятся в этом объекте global.

Например, чтобы какой-то код выполнялся через 5 секунд, мы можем использовать либо global.setTimeout, либо просто setTimeout. Ключевое слово global является необязательным.

setTimeout(() => { 
  console.log('hello');
}, 5000);

Вероятно, самый известный глобальный — это global.console.log, который мы пишем как просто console.log.

Модульная система Node.js

Функция require, Встроенные модули, Создание модулей, Модули ECMAScript

В Node.js каждый файл рассматривается как отдельный модуль. Модули предоставляют нам способ повторного использования существующего кода.

Функция require

Мы можем повторно использовать существующий код с помощью встроенной в Node функции require(). Эта функция импортирует код из другого модуля.

const fs = require('fs');
fs.readFileSync('hello.txt');
// OR...
const { readFileSync } = require('fs');
readFileSync('hello.txt');

Встроенные модули

Некоторые модули, такие как fs, встроены в Node. Эти модули содержат функции, специфичные для Node.

Основные встроенные модули включают:

  • fs — чтение и запись файлов в вашей файловой системе.
  • путь — объединяйте пути независимо от используемой ОС.
  • процесс — информация о текущем запущенном процессе, например. process.argv для переданных аргументов или process.env для переменных среды
  • http — делать запросы и создавать HTTP-серверы.
  • https — работа с защищенными HTTP-серверами с использованием SSL/TLS.
  • events — работа с EventEmitter
  • crypto — инструменты шифрования, такие как шифрование и хеширование.

Пакеты Node.js

Команды NPM, package.json, node_modules, package-lock.json

Разработчики Node часто публикуют пакеты, которые другие разработчики могут использовать для решения общих проблем. Пакет – это набор модулей Node вместе с файлом package.json, описывающим пакет.

Для работы с Node-пакетами мы используем NPM. NPM включает в себя две вещи:

  1. Реестр NPM с огромной коллекцией пакетов Node, которые мы можем использовать.
  2. Инструмент NPM, который вы установили при установке Node.

Большинство приложений Node, которые мы создаем, включают файл package.json, что означает, что наши приложения Node также являются пакетами Node.

Файл package.json содержит:

  1. Название, версия, описание, лицензия текущего пакета.
  2. Скрипты для автоматизации таких задач, как запуск, тестирование и установка текущего пакета.
  3. Списки зависимостей, которые должны быть установлены текущим пакетом.

Источник событий Node.js

Node.js предоставляет встроенный модуль для работы с событиями.

const EventEmitter = require('events');
const celebrity = new EventEmitter();
celebrity.on('success', () => {
  console.log('Congratulations! You are the best!');
});
celebrity.emit('success'); // logs success message
celebrity.emit('success'); // logs success message again
celebrity.emit('failure'); // logs nothing

Многие функции Node моделируются с помощью класса EventEmitter. Некоторые примеры включают работающий в данный момент узел process, работающий HTTP-сервер и веб-сокеты. Все они испускают события, которые затем можно прослушивать с помощью функции прослушивания, такой как on().

Например, мы можем прослушивать событие выхода в текущем запущенном процессе. В этом случае у события есть код, связанный с ним, чтобы более точно указать, как процесс завершается.

Концепции серверной части

Архитектура клиент-сервер

Ваш интерфейс обычно является клиентом. Ваш бэкэнд обычно является сервером.

В клиент-серверной архитектуре клиенты получают доступ к данным (или «ресурсам») с сервера. Затем клиент может отображать эти данные и взаимодействовать с ними.

Клиент и сервер взаимодействуют друг с другом по протоколу HTTP.

API

Сокращение от интерфейса прикладного программирования.

Это набор функций или операций, которые поддерживает ваш внутренний сервер. Фронтенд взаимодействует с бэкендом, используя только эти операции.

В Интернете внутренние API обычно определяются списком URL-адресов, соответствующими методами HTTP и любыми запросами и параметрами.

CRUD

Сокращение от «Создать, прочитать, обновить и удалить».

Это основные операции, которые каждый API поддерживает с коллекциями данных. Ваш API обычно сохраняет (или «сохраняет») эти наборы данных в базе данных.

RESTful

RESTful API — это те, которые следуют определенным ограничениям. К ним относятся:

  • Клиент-серверная архитектура. Клиенты получают доступ к ресурсам с сервера по протоколу HTTP.
  • Связь без гражданства. Каждый запрос содержит всю информацию, необходимую серверу для обработки этого запроса. Каждый запрос отделен от любого другого запроса.
  • Кэшируемый. Связь без сохранения состояния упрощает кэширование.

Express.js

Маршруты GET, Маршруты POST, Маршрутизаторы

Структура папок Node.js

Одну типичную структуру папок для API с архитектурой RESTful и с использованием среды Express можно найти ниже. Серверы Node обычно следуют шаблону Model View Controller. Модели живут вместе в одной папке. Контроллеры сгруппированы в зависимости от того, к какой функции или набору они относятся. Представления обычно управляются внешним интерфейсом, хотя некоторые серверы Node могут обслуживать статический HTML или использовать механизмы шаблонов, такие как Handlebars.