Что такое Node.js: для чего нужен, преимущества и как установить
Оглавление:
Node.js — это программная среда на JavaScript-движке (V8). Используется для компиляции JS-кода в машинный язык. Другими словами, эта программная платформа транслирует исходный JS непосредственно в машинный код, который и будет исполняться уже на серверной стороне. Важно уточнить: Node.js не является самостоятельным языком программирования, а только программной платформой для использования JavaScript на серверной стороне. При этом она использует подходы событийно-ориентированного и так называемого react-программирования. Чаще всего, «Нод» задействуется в качестве веб-сервера, однако, может применяться и для создания десктопных программ и других целей (например, для программирования микроконтроллеров). Эта платформа появилась в 2009 году и сегодня используется очень широко, в самых разнообразных отраслях разработки. По типу программной платформы она относится к средам выполнения.
Простыми словами, Node.js — это платформа, которая умеет компилировать код JavaScript напрямую в машинный код. Таким образом достигается конвертация исходного JS в язык общего назначения.
Для чего нужен Node.js
Сперва проясним два важных момента: что такое Node и чем он не является.
Чем НЕ является Node
- Это не фреймворк, это сервер.
- Обертки Node над JavaScript V8 Runtime, сделаны не на JavaScript, а на языке C.
- Он не многопоточный. Он работает в одном потоке с обратным вызовом.
- Он не для начинающих, кто не умеет работать с JavaScript.
Чем является Node
- Это сервер, который может выполнять JavaScript. Это своего рода браузер на стороне сервера.
- Это кросс-платформа для развертывания real-time веб-приложений.
- Он предоставляет вам асинхронные API (управляемые событиями типа ввод-вывод)
- Он запускает однопоточный цикл, основанный на событиях, поэтому все выполнения становятся неблокирующими.
Платформа «Нод» используется для программирования на стороне сервера. Чаще всего, её код используется для создания веб-приложений, сайтов (и веб-страниц), кроме того — применяется для развертывания программ командной строки (cmd).
Программная платформа используется для любой бэкэнд-разработки, которая связана с языком программирования JavaScript. Но фронтэндеры также используют эту платформу для решение своих задач.
Вот краткий список примеров, что можно сделать на Node.js:
- Десктопная программа для различных операционных систем, включая Windows, Linux, DOS, UNIX, macOS.
- Кроссплатформенная программа.
- Онлайн-сервис.
- Социальная сеть.
- Онлайн-игра.
- Любой сайт.
Преимущества и недостатки
Давайте начнём с недостатков, так как ограничения особенно важны ещё на этапе выбора программной платформы. Вот они:
Минусы
- Node.js не обеспечивает масштабируемость. Одного процессора будет недостаточно; при этом платформа не предоставляет никакой возможности масштабирования для использования преимуществ многоядерности, обычно присутствующей в современном серверном оборудовании.
- Работа с реляционной базой данных — превращается в сильную головную боль, если вы используете Node.
- Каждый раз при использовании обратного вызова генерируются тонны вложенных обратных вызовов.
- Без глубокого погружения и знания JS можно столкнуться с концептуальной проблемой.
- Node.js не подходит для задач, требующих больших затрат процессора. Он подходит только для непосредственного ввода-вывода (например, для веб-серверов).
Плюсы
Теперь — достоинства платформы «Нод», которые оценят как новички, так и программисты с опытом:
- Асинхронный ввод-вывод, управляемый событиями, помогает в одновременной обработке запросов.
- Один и тот же кусок кода можно использовать как на серверной, так и клиентской стороне.
- Использует JavaScript, который легко выучить за несколько месяцев
- Есть NPM. Это собственный пакет модулей для Node. Там есть всё и он продолжает расти.
- Активное и живое сообщество, с большим количеством кода, распространяемого через github и другие площадки для разработчиков.
- Вы можете передавать большие файлы.
И, конечно, углубляясь в «Нод» вы продолжаете совершенствоваться в профессии бэкенд-разработчика: у нас также есть полноценный курс для тех кто хочет постигнуть профессию бэкенд-разработчик. За 3 месяца вы ознакомитесь со всеми важными технологиями (от Node.js и PHP до серверного JavaScript), которые нужны специалисту в 2023 году и даже получите несколько впечатляющих проектов для своего будущего портфолио.
Где Node будет лучшим решением
Вот несколько приложений или областей, где Node.js может стать наилучшим инструментом:
WebSocket servers. Неблокирующая архитектура делает «Нод» наилучшим инструментом для развертывания WebSosket-приложений или стриминг-приложений. Серверы чатов могут стать более эффективными, быстрыми и отлаженными, используя Node.js в качестве основы (ведь такие серверы работают в realtime-режиме, где скорость отклика и передачи данных особенно важны),
Клиент для быстрой загрузки файлов. С помощью Node вы можете загружать несколько файлов одновременно. Это означает, что в один и тот же момент времени на сервере может находиться часть файла Primer1 и часть Primer2. Такой подход делает значительно ускоряет скорость загрузки файлов.
Потоковая передача данных. Поскольку Node имеет дело с концепцией обратного вызова, ее можно задействовать и для потоковой передачи данных. Это может быть очень полезно для самых разнообразных целей, особенно для бизнеса (например, агрегаторы товаров получают результаты сразу из нескольких сторонних API).
Рекламный сервер. Рекламные серверы должны быть самыми быстрыми. Если реклама на сайте загружается быстрее чем основной контент, то главное внимание пользователя получит именно рекламный баннер. Другое дело, если реклама загружается медленнее: допустим, у вас большой баннер до контента, который загружается 5 секунд. И пока такая реклама будет прогружаться пользователь уже начнёт читать середину страницы. Поэтому, рекламные серверы действительно должны быть быстрыми, и вот почему нужно использовать Node.
Программное обеспечение для фондовой биржи. Это конкретный пример. И он хорошо иллюстрирует возможности «Нод». В случае обновления акций все должно происходить в realtime-режиме. Node делает возможным развертывание веб-приложений, которые эффективно обмениваются данными в режиме реального времени.
Как установить Node.js
Сперва о NPM (сокр. от Node Package Manager) — это самостоятельный менеджер пакетов по умолчанию для Node. NPM позволяет делиться и заимствовать пакеты для разработки своих приложений. Кроме того, NPM функционирует как утилита командной строки для приложения при установке пакетов в проект, управления зависимостями (и другими параметрами).
Компоненты NPM
- Сайт: вы можете найти пакеты для своего проекта на официальном сайте NPM. Кроме того, вы можете создавать и настраивать профили для управления всеми типами проектов (и настройки к ним доступа).
- Интерфейс командной строки (CLI): нужен для взаимодействия с пакетами и репозиториями NPM. Используется CLI, запускаемый с терминала.
- Реестр: Имеет огромную базу данных проектов JavaScript и мета-данных. Позволяет использовать любой поддерживаемый NPM-реестр.
Как скачать и установить Node.js и NPM на операционную систему Windows?
Поскольку далее мы будем делать полноценное веб-приложение с помощью Node.js, прежде всего, необходимо установить Node.js. Вы можете найти эту программную платформу для большинства операционных систем, включая Windows и Mac OS. В рамках этой статьи — рассмотрим установку только на Windows.
Давайте начнем с первого шага — установки программы.
Шаг 1: Скачайте программу установки
Скачайте программу установки для Windows с официального сайта Node.js. Убедитесь, что вы скачали последнюю версию. Она включает в себя менеджер пакетов NPM.
Обязательно выберите 64-битную версию программы установки
Рекомендуем выбрать LTS-версию (Long-term Support), если планируете использовать эту программную платформу долгосрочно. После клика по зеленой кнопке файл .msi будет загружен в ваш браузер.
После загрузки установочного пакета на жёсткий диск — запустите его.
Сделайте двойной клик по скаченному файлу
Шаг 2: Установите программу Node.js и программу NPM
Нажмите кнопку Next
На экране появится приветственное сообщение, нажмите кнопку «Далее» (или Next). Начнется процесс установки. Выберите нужный путь, куда вы хотите установить Node.js.
Нажав на кнопку Next, вы попадёте на следующий экран настройки
Убедитесь, что вы выбрали менеджер пакетов npm, а не установленный по умолчанию Node.js runtime. Таким образом, мы сможем установить Node и NPM одновременно.
Отметьте компоненты, которые должны быть установлены
У вас должно быть, как минимум, 143 мегабайт пространства для установки Node.js и функций npm.
Убедитесь, что устанавливаете программу из под учетной записи администратора
Теперь нажимаем кнопку Install. Ждём пока распакуются все файлы и установка будет завершена.
Шаг 3: Проверьте текущую версию установленного Node.js и NPM
Если у вас есть сомнения, правильно ли вы все установили или нет, можно проверить версию с помощью командной строки.
Запустите командную строку «Нод»
На экране появится окно Command Prompt. Проверьте свою версию Node.js (и обязательно версию NPM). Для этого есть две команды:
- Чтобы проверить версию Node, введите команду node -v.
- Чтобы проверить версию NPM, введите команду npm -v.
Все установлено правильно
Не стоит беспокоиться, если вы увидите цифры, отличные от тех, которые есть на скриншоте выше: Node и NPM ну очень часто обновляются. Главное — чтобы не было ошибок.
Как пользоваться, основные команды
Разобрать все возможности, функции и инструменты программной платформы «Нод» было бы нереально в рамках одной статьи. Поэтому, далее — мы рассмотрим только основы: консоль / REPL, главные команды, синтаксис.
Основы Node.js: синтаксис, типы примитивов, команды
Node.js имеет полную совместимость с JavaScript (если можно вообще так выразиться). Таким образом, синтаксис JavaScript, который используется внутри Node.js аналогичен синтаксису браузерного JS.
Мы сэкономим ваше время — приводим таблицу самых популярных команд «Нод», которая поможет вам начать работу с платформой:
Понимать все, что здесь написано, не обязательно. Просто сохраните эту таблицу как заметку — она точно понадобится вам позже.
Давайте посмотрим на особенности программной платформы и узнаем, чем она отличается от JavaScript.
Примитивы
Node.js включает следующие типы примитивов:
- Строка.
- Число.
- Булево.
- Неопределенный.
- Null.
- RegExp.
Все остальное — является объектом в Node.js.
Свободная типизация
JS в Node.js имеет поддержку свободной типизации, как и в браузерном JS. Можно применять привычный оператор var для введения какой-либо переменной любого типа, например.
Объектный литерал
Синтаксис объектного литерала такой же, как и в браузерном JS.
var obj = { authorName: 'Ryan Dahl', language: 'Node.js' }
Функции
Функция также может иметь атрибуты и свойства. Она может рассматриваться как класс в JavaScript.
function Display(x) { console.log(x); } Display(100);
Buffer
Node включает дополнительный тип данных под названием Buffer (кстати, он недоступен в браузерном JS). Буфер, в основном, используется для хранения двоичных данных, при чтении из файла или получении пакетов по сети.
Объект процесса
Каждый сценарий Node выполняется в процессе. Соответственно, он включает объект process — для вывода деталей по конкретному процессу.
В примере ниже показано, как получить информацию о процессе в REPL с помощью объекта process.
> process.execPath
'C:Program Files
odejs
ode.exe'
> process.pid
1652
> process.cwd()
'C:'
По умолчанию локальный
JavaScript Node отличается от браузерного JS и когда речь заходит о глобальной видимости. В браузерном JS переменные всегда приобретают статус глобальных (конечно, речь о тех, которые используются без var-оператора). В Node по умолчанию — все становится локальным.
Доступ к глобальной области видимости
В браузере глобальная область видимости — это объект окна. В Node же глобальный объект — глобальная область видимости.
Чтобы добавить что-то в глобальную область видимости, нужно экспортировать это с помощью export (либо, для конкретных целей, введением module.export). Таким же образом импортируйте модули / объекты с помощью функции require(), чтобы получить к ним доступ из глобальной области видимости.
Например, чтобы экспортировать объект в Node, нужно применить exports.name = object.
exports.log = { console: function(msg) { console.log(msg); }, file: function(msg) { // log to file here } }
Теперь вы можете импортировать объект log через функции require() и использовать его в любом месте вашего проекта.
REPL: что это и как пользоваться
Node поставляется с виртуальной средой REPL (она же оболочка или командная строке). REPL — это быстрый и простой способ тестирования простого кода Node / JavaScript.
Самые главные команды для REPL также даём в таблице:
Теперь давайте посмотрим, как это работает. Чтобы запустить REPL (оболочку Node), откройте cmd строку (в Windows) или терминал (в Mac или UNIX/Linux). Теперь укажите команду node, как показано ниже.
Укажите команду в командной строке
Что умеет эта командная строка? Например, вы можете проверить практически любое выражение Node / JavaScript в REPL. Допустим, вы хотите узнать результат для 50 + 43:
Видим ответ в новой строке. Оператор + (знак плюс) также склеивает строки, как в браузерном JS
Вы также можете определить переменные и выполнить над ними какую-либо операцию.
Работа с переменными в консоли
Если вам нужно написать многострочное выражение или функцию JavaScript — нажимайте Enter всякий раз, когда хотите написать что-то в следующей строке (как продолжение кода) — терминале REPL появятся три точки (...), это означает, что вы можете продолжить на следующей строке. Напишите .break, чтобы выйти из режима продолжения.
Например, вы можете определить функцию и выполнить ее, как показано ниже
Вы можете выполнить внешний файл JavaScript, инициировав команду node fileName. Например, ниже приведен запуск mynodejs-app.js в командной строке / терминале и отображение результата.
console.log("Hello World");
Теперь вы можете инициировать запуск mynodejs-app из cmd:
Успех. Мы вызывали mynodejs-app
Когда вы закончите и понадобится закрыть REPL, укажите команду .exit и нажмите Enter.
Таким образом, вы можете выполнить любой код Node / JavaScript в оболочке node (REPL). Это даст вам результат, аналогичный тому, который вы получаете в консоли браузера Google Chrome.
Фреймворки и вспомогательные инструменты
Фреймворки Node (как правило) могут быть трех типов — MVC, Full-Stack Model-View-Controller и фреймворки REST API.
- MVC-фреймворки (на основе Model-View-Controller). Эти фреймворки предлагают собственный шаблон проектирования, который разделяет логику веб-приложения на три основные части: модели, представления и контроллеры. Разделение задач разработки в таком виде делает чрезвычайно простым масштабирование веб-приложения. Express.js — каноничный пример MVC-фреймворка.
- Полностекевые MVC-фреймворки. При создании веб-приложений в realtime-режиме полнофункциональные MVC-фреймворки дают огромное количество строительных блоков, библиотек, шаблонизаторов и ряд других возможностей для разработки. Кроме того, такие фреймворки могут применяться как в разработке фронтенда, так и бэкенда веб-приложения.
- REST API. Фреймворки Node ориентированы на более быстрое создание приложений с помощью готового REST API. Это означает, что вам не нужно беспокоиться об архитектурных стилях сетевых приложений и других сопутствующих вопросах.
Почти все эти фреймворки предоставляют готовый интерфейс программирования, что значительно экономит время веб-разработчика.
Вспомогательные инструменты
Теперь посмотрим на конкретные инструменты, которые дополнят «Нод».
Derby.js. Полнофункциональный инструмент для создания «Нод»-приложений. Derby.js отличный выбор для развертывания приложений в реальном времени, поскольку позволяет одному и тому же коду работать на Node (сервер) и в браузере. Таким образом, вам не нужно беспокоиться о написании отдельных кодов для части представления.
Можно даже парсить шаблоны в браузере. Просто отредактируйте шаблон, как показано выше
Koa.js. Фреймворк нового поколения. Инструмент особенно удобен при создании API (ведь он может эффективно работать с HTTP-посредниками с помощью стекоподобного метода). Кроме того, он конструктивно нормализует недостатки Node. С помощью этого фреймворка можно поддерживать различные формы контента, предоставляемого пользователям по одному и тому же URL.
Koa похож на многие другие системы промежуточного ПО (Ruby's Rack, Connect)
Loopback.js. Обеспечивает наилучшее соединение с любым фреймворком Node. Это означает, что вы можете интегрировать его с несколькими различными API-сервисами. Loopback.js лучше всего работает с REST API: платформа обеспечивает отличную гибкость, соединяясь с широким спектром устройств, браузеров, баз данных и сервисов. Структурированный код фреймворка помогает поддерживать модули приложений и высокую скорость разработки.
Эти компании используют Loopback.js
Meteor.js. Одно приложение, один язык. Если вы ищете фреймворк для Javascript и использующий только один язык, Meteor.js — идеальный выбор (с открытым исходным кодом). Он автоматически меняет данные среди клиентов. Самое главное — фреймворк удобен для различных операционных систем, включая, Android, iOS и настольных приложений. Meteor также имеет обширные библиотеки и крутые функции для тестирования цепочки клиент / сервер.
Три причины выбрать Meteor.js в качестве основного фреймворка
Создаем первое приложение на Node.js
Для создания первой программы вам понадобятся два компонента: Node и npm, установленные на вашем компьютере.
Откройте консоль и выполните пару команд. Чтобы проверить, установлен ли Node, выполните:
node -v
Чтобы проверить, установлен ли Node, выполните:
npm -v
Помимо Node, вам понадобится установленный и запущенный сервер MySQL. Вы можете использовать автономный установщик MySQL или дистрибутивы серверов со встроенным MySQL, такие как WAMP (либо кросплатформенная сборке сервера XAMPP).
Создание формы входа в систему на Node.js
Начнем с создания новой папки для приложения и перейдем в нее с помощью командной строки с директивой cd:
cd path/to/your/folder
Затем — выполните следующую команду для установки зависимостей, необходимых для нашей формы:
npm i express mysql dotenv hbs bcryptjs
Давайте разберем для чего нужна каждая из библиотек, которые мы используем:
- Express: для создания API и веб-маршрутов и настройки бэкенда приложения.
- Bcryptjs: для хэширования паролей.
- MySQL: для подключения к нашему локальному серверу MySQL.
- hbs: для рендеринга HTML на сервере.
- dotenv: для хранения переменных окружения, которые не должны быть открыты в исходном коде приложения.
Кроме того, мы рекомендуем установить nodemon, который автоматически перезапускает сервер при обнаружении изменений файлов, экономя время. Установите его с помощью следующей команды:
npm i nodemon --save
Наконец, запустите package.json с помощью любого удобного редактора и добавьте следующее поле в объект scripts:
"start": "nodemon app.js"
Теперь мы закончили с настройкой проекта. Далее — мы подключимся к БД MySQL и создадим таблицу для хранения информации о входе пользователей.
Настройка подключения к базе данных в Node.js
Три простых шага:
- Начните с создания новой базы данных в вашей среде MySQL (ее имя будет login-db).
- После этого — создайте таблицу users с ID, именем, email и паролем.
- Установите ID в INT и AUTOINCREMENT, имя, email и пароль в VARCHAR.
В итоге база данных в phpMyAdmin будет выглядеть следующим образом:
В нашем случае БД выглядит так
- Затем — создайте файл .env в корневой папке вашего приложения. Внутри .env — добавьте имя базы данных, домен хоста, имя пользователя и пароль к соответствующим именам переменных. Вот значения по умолчанию для БД MySQL:
DATABASE = login-db DATABASE_HOST = localhost DATABASE_ROOT = root DATABASE_PASSWORD =
- После установки переменных — создайте app.js-файл в корне. Откройте файл в текстовом редакторе и импортируйте следующие зависимости:
const express = require('express'); const mysql = require("mysql") const dotenv = require('dotenv')
- Затем— создайте приложение Express:
const app = express();
- После этого — укажите путь к переменным окружения:
dotenv.config({ path: './.env'})
Здесь мы приказываем серверу найти .env в том же каталоге, что и app.js.
- Далее — обращаемся к переменным из process.env и передаем их в соответствующие свойства соединения:
const db = mysql.createConnection({ host: process.env.DATABASE_HOST, user: process.env.DATABASE_USER, password: process.env.DATABASE_PASSWORD, database: process.env.DATABASE })
- Теперь, когда мы настроили соединение с учетными данными базы данных, подключите базу данных:
db.connect((error) => { if(error) { console.log(error) } else { console.log("MySQL connected!") } })
- Соединение будет успешным, либо — неудачным. В случае неудачи мы увидим error в обратном вызове. В противном случае — будет выведена строка "MySQL connected!"
- Наконец, запустите сервер, выполнив в terminal простейшую команду:
npm start
Если все прошло успешно, вы увидите, что MySQL is connected.
Теперь, давайте создадим домашнюю страницу. Это не сложно.
Настройка домашней страницы
Вот алгоритм действий:
-
- В корне добавьте новую папку views.
- Затем в папке views создайте index.hbs, register.hbs и login.hbs. Как вы уже догадались, это файлы Handlebars для домашней страницы, страницы авторизации и страниц регистрации.
- Теперь для каждой из них включите базовую HTML-разметку:
Здесь мы связали два элемента с CSS-сайта и библиотекой Bootstrap CSS. Мы также создали навигационное меню, которое будет повторно использоваться на всех страницах и включать ссылки на страницы входа и регистрации.
- Далее, внутри index.hbs, используйте следующую разметку в тегах body, чтобы добавить «джамботрон» на главную страницу вашего сайта:
- Затем укажите view engine в app.js (в качестве Handlebars):
app.set('view engine', 'hbs')
- Оттуда же импортируйте path, чтобы указать статические активы, используемые в ваших шаблонах Handlebars:
// other imports const path = require("path") const publicDir = path.join(__dirname, './public') app.use(express.static(publicDir))
- Затем — зарегистрируйте маршрут рендеринга index.hbs на главной странице:
app.get("/", (req, res) => { res.render("index") })
- Наконец, настройте порт для приложения в app.listen():
app.listen(5000, ()=> { console.log("server started on port 5000") })
- Запустите сервер, выполнив npm start, затем — перейдите на localhost:5000 для просмотра домашней страницы:
Пример страницы авторизации на Node и MySQL
Далее — создадим формы регистрации и входа.
Создание форм входа и регистрации в Node.js
Мы создадим HTML-форму с входами для имени пользователя, email, пароля и его подтверждения. Форма будет отправлять данные в маршрут, который мы указали в action.
Вот пошаговая инструкция, как создать HTML-форму регистрации и авторизации.
- Откройте файл register.hbs во views и включите следующую разметку body и после nav :
- В app.js зарегистрируйте маршрут к странице регистрации и сохраните файл:
app.get("/register", (req, res) => { res.render("register") })
- После этого — перейдите в браузер и выберите в навигационной панели пункт «Регистрация». Вы должны увидеть форму регистрации:
Форма регистрации выводится корректно
Теперь настроим форму входа:
- Чтобы создать форму входа, откройте login.hbs внутри views и используйте ту же форму, что и выше.
- Удалите inputs и labels для подтверждения e-mail и пароля.
- Измените атрибуты id и название карточки с Register Form на другое название (например, Login Form).
- Далее — зарегистрируйте маршрут входа в app.js:
app.get("/login", (req, res) => {
res.render("login")
})
Сохраните файлы и перейдите в браузер. Протестируйте функциональность формы для логина:
Форма выводится корректно, когда мы выбираем «Авторизация» на верхней панели
Теперь, когда мы закончили работу над фронт-эндом, давайте настроим регистрацию пользователя в бэкенде.
Регистрация пользователя
Значения формы будут отправлены в маршрут /auth/register, когда регистрационная форма будет отправлена. Вот пошаговая инструкция, что нужно сделать:
- В app.js начните с импорта bcrypt:
const bcrypt = require("bcryptjs")
- Далее — настройте сервер Express на получение значений формы в формате JSON:
app.use(express.urlencoded({extended: 'false'})) app.use(express.json())
- Затем — создайте auth/register и получите значения формы пользователя:
app.post("/auth/register", (req, res) => { const { name, email, password, password_confirm } = req.body // db.query() code goes here })
- Теперь, когда у вас есть значения, сделайте запрос к базе данных, чтобы проверить, находится ли электронная почта на сервере. Таким образом, пользователь не сможет зарегистрироваться несколько раз с одним и тем же электронным адресом:
db.query('SELECT email FROM users WHERE email = ?', [email], async (error, res) => { // remaining code goes here })
Если при выполнении запроса произошла ошибка, будет выведен статус error :
if(error){ console.log(error) } // other code
- Затем проверьте, есть ли результат и совпадают ли два пароля. Если все условия верны, переделайте страницу регистрации, чтобы уведомить пользователя о том, что его email уже используется (либо, что указанные пароли различаются)
if( result.length > 0 ) { return res.render('register', { message: 'This email is already in use' }) } else if(password !== password_confirm) { return res.render('register', { message: 'Passwords do not match!' }) } // other code
- Если условия выше не являются истинными, пользователь будет добавлен в базу данных. Зашифруйте пароль и поместите его в базу данных вместе с другими значениями:
let hashedPassword = await bcrypt.hash(password, 8) db.query('INSERT INTO users SET?', {name: name, email: email, password: hashedPassword}, (err, res) => { if(error) { console.log(error) } else { return res.render('register', { message: 'User registered!' }) } })
-
Важно: для вывода пользовательских сообщений нужно поправить register.hbs и включить следующий шаблон под div:
-
Наконец, сохраните все изменения в файле и протестируйте поведение формы в браузере:
Все работает корректно. Пользователь смог отправить свои данные через форму.
Также обязательно посмотрите наш бесплатный видеокурс. Мы создали полноценный API и дали пошаговую инструкцию, как вы сможете сделать то же самое самостоятельно.
Резюме + советы по обучению
Напоследок — мы подготовили 8 причин, почему стоит использовать Node:
- Неблокирующий код — самая веская причина выбрать Node в качестве сервера.
- Node полностью ориентирован на события. Большая часть кода — выполняется на основе обратных вызовов. Такой подход помогает приложению не уходить в сон, а становиться доступным для других запросов.
- Быстрая обработка. Node использует движок V8 JavaScript Runtime (да, это движок, встроенный в широко известный Google Chrome). Node имеет собственную обертку над этим движком, что дает дополнительные возможности для создания веб-приложений. И обертка Node, и движок V8 JavaScript — написаны на C, что делает их действительно быстрыми. «Нод» действительно намного быстрее, чем тот же Ruby, Python или Perl.
- Обработка одновременных запросов. Node может обрабатывать сотни и даже тысячи соединений в одно время— с минимальными расходами на один процесс.
- Единая среда. Использование JavaScript как на веб-сервере, так и в браузере уменьшает несоответствие между двумя средами программирования, что позволяет передавать структуры данных через JSON (ведь они нужны по обе стороны).
- Дублирующийся код валидации формы может быть разделен между сервером и клиентом. Практично и экономит время.
- Легко изучить. Node не является чем-то новым или чем-то принципиально сложным. По сути — этот тот же JavaScript. Поэтому разработчикам JavaScript не нужно прилагать много усилий для изучения Node.
- Популярность и сообщество. Многие начинающие изучать веб уже сталкивались с JavaScript. JS — один из самых популярных ЯП во всём мире. Популярный язык означает и популярное сообщество, большое количество обучающих материалов, книг и форумов. Большое сообщество гарантирует, что вы сможете получить помощь по любому, даже самому нестандартному вопросу.
Для тех, кто хочет овладеть серверной разработкой и конкретно «Нодом», мы подготовили полноценный курс. Это программа для тех, кто уже хорошо разбирается в JavaScript, имеет опыт веб-разработки и знаком с основными технологиями. При помощи этого курса вы научитесь создавать серверную часть веб-приложений — всего з 6 недель. А чтобы изучение Node проходило максимально эффективно — обязательно возьмите на заметку нашу подборку лучших книг по «Нод». Это восемь книг, которые должен прочитать каждый, кто хочет сделать эту платформу своим основным инструментом.
-
Node.js и серверный javascript
-
WebSocket и socket.io
-
Deploy
-
Серверный рендеринг и тестирование
-
Express.js и Koa.js