fbpx

Каталог статей

Каталог статей для размещения статей информационного характера

Как выучить

Введение экспресса/узла

Введение экспресса/узла

В этой первой статье об Express мы ответим на вопросы “Что такое Node?” и “Что такое Express?”, а также дадим вам обзор того, что делает веб-фреймворк Express особенным. Мы опишем основные возможности и покажем вам некоторые из основных строительных блоков приложения Express (хотя на данный момент у вас еще нет среды разработки, в которой можно было бы его протестировать).

Предварительные условия: Базовая компьютерная грамотность. Общее понимание программирования веб-сайтов на стороне сервера и, в частности, механики взаимодействия клиента и сервера в веб-сайтах.
Цель: Получить представление о том, что такое Express и как он сочетается с Node, какие функциональные возможности он предоставляет, а также об основных строительных блоках приложения Express.

Знакомство с Node

Node (или более формально Node.js ) – это кроссплатформенная среда выполнения с открытым исходным кодом, которая позволяет разработчикам создавать все виды серверных инструментов и приложений на JavaScript. Среда выполнения предназначена для использования вне контекста браузера (т.е. непосредственно на компьютере или серверной ОС). Поэтому среда не содержит специфичных для браузера API JavaScript и добавляет поддержку более традиционных API ОС, включая HTTP и библиотеки файловой системы.

С точки зрения разработки веб-серверов Node имеет ряд преимуществ:

  • Высокая производительность! Node был разработан для оптимизации пропускной способности и масштабируемости веб-приложений и является хорошим решением для многих распространенных проблем веб-разработки (например, веб-приложений реального времени).
  • Код пишется на “простом старом JavaScript”, что означает, что при написании кода на стороне клиента и на стороне сервера тратится меньше времени на “переключение контекста” между языками.
  • JavaScript является относительно новым языком программирования и выигрывает от улучшения дизайна языка по сравнению с другими традиционными языками веб-серверов (например, Python, PHP и т.д.) Многие другие новые и популярные языки компилируются/конвертируются в JavaScript, поэтому вы также можете использовать TypeScript, CoffeeScript, ClojureScript, Scala, LiveScript и т.д.
  • Менеджер пакетов node (npm) предоставляет доступ к сотням тысяч многократно используемых пакетов. Он также имеет лучшее в своем классе разрешение зависимостей и может быть использован для автоматизации большей части инструментария сборки.
  • Node.js является переносимым. Он доступен на Microsoft Windows, macOS, Linux, Solaris, FreeBSD, OpenBSD, WebOS и NonStop OS. Более того, он хорошо поддерживается многими хостинг-провайдерами, которые часто предоставляют специальную инфраструктуру и документацию для размещения сайтов Node.
  • У него очень активная экосистема сторонних разработчиков и сообщество разработчиков, в котором много людей, готовых помочь.

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

Здравствуйте, Node.js

Следующий пример создает веб-сервер, который прослушивает любой HTTP-запрос по URL – когда запрос будет получен, скрипт ответит строкой: “Hello World”. Если вы уже установили node, вы можете выполнить следующие шаги, чтобы опробовать пример:

  1. Откройте терминал (в Windows откройте утилиту командной строки)
  2. Создайте папку, в которой вы хотите сохранить программу, например, test-node, а затем войдите в нее, введя в терминал следующую команду:

Наконец, перейдите по адресу http://localhost:8000 в своем веб-браузере; вы должны увидеть текст ” Hello World ” в верхнем левом углу пустой веб-страницы.

Веб-фреймворки

Другие распространенные задачи веб-разработки не поддерживаются непосредственно самим Node. Если вы хотите добавить специфическую обработку различных HTTP-глаголов (например, GET , POST , DELETE и т.д.), отдельно обрабатывать запросы по различным URL-путям (“маршрутам”), обслуживать статические файлы или использовать шаблоны для динамического создания ответа, Node сам по себе не будет очень полезен. Вам придется либо писать код самостоятельно, либо не изобретать велосипед и использовать веб-фреймворк!

Представляем Express

Express – это самый популярный веб-фреймворк Node, а также базовая библиотека для ряда других популярных веб-фреймворков Node. Она предоставляет механизмы для:

  • Писать обработчики для запросов с различными HTTP-глаголами по различным URL-путям (маршрутам).
  • Интеграция с механизмами рендеринга “view” для генерации ответов путем вставки данных в шаблоны.
  • Устанавливать общие настройки веб-приложений, такие как порт для подключения и расположение шаблонов, которые используются для рендеринга ответа.
  • Добавлять дополнительное “промежуточное ПО” для обработки запросов в любой точке конвейера обработки запросов.

Хотя сам Express довольно минималистичен, разработчики создали совместимые пакеты промежуточного ПО для решения практически любой проблемы веб-разработки. Существуют библиотеки для работы с cookies, сессиями, логинами пользователей, параметрами URL, данными POST, заголовками безопасности и многим другим. Список пакетов промежуточного ПО, поддерживаемых командой Express, можно найти на сайте Express Middleware (вместе со списком некоторых популярных пакетов сторонних производителей).

Примечание: Такая гибкость является обоюдоострым мечом. Существуют пакеты промежуточного ПО для решения практически любой проблемы или требования, но выбор правильных пакетов для использования иногда может оказаться сложной задачей. Также не существует “правильного способа” структурировать приложение, и многие примеры, которые вы можете найти в Интернете, не являются оптимальными или показывают лишь малую часть того, что необходимо сделать для разработки веб-приложения.

Откуда взялись Node и Express?

Первоначально Node был выпущен только для Linux в 2009 году. Менеджер пакетов npm был выпущен в 2010 году, а поддержка Windows была добавлена в 2012 году. Если вы хотите узнать больше, загляните в Википедию.

Express был первоначально выпущен в ноябре 2010 года и в настоящее время находится на 4-й версии API. Вы можете посмотреть журнал изменений для получения информации об изменениях в текущем выпуске, а также GitHub для получения более подробных исторических заметок о выпуске.

Насколько популярны Node и Express?

Популярность веб-фреймворка важна, поскольку это показатель того, будет ли он поддерживаться и какие ресурсы будут доступны в плане документации, библиотек дополнений и технической поддержки.

Не существует какого-либо легкодоступного и окончательного показателя популярности серверных фреймворков (хотя вы можете оценить популярность, используя такие механизмы, как подсчет количества проектов GitHub и вопросов StackOverflow для каждой платформы). Лучше спросить, являются ли Node и Express “достаточно популярными”, чтобы избежать проблем непопулярных платформ. Продолжают ли они развиваться? Можете ли вы получить помощь, если она вам понадобится? Есть ли возможность получить оплачиваемую работу, если вы изучите Express?

Судя по количеству компаний высокого уровня, использующих Express, количеству людей, вносящих вклад в кодовую базу, и количеству людей, оказывающих как бесплатную, так и платную поддержку, то да, Express – популярный фреймворк!

Есть ли у Express свое мнение?

Веб-фреймворки часто называют “opinionated” или “unopinionated”.

Фреймворки с мнением – это те, которые имеют свое мнение о “правильном способе” решения любой конкретной задачи. Они часто способствуют быстрой разработке в определенной области (решение проблем определенного типа), потому что правильный способ сделать что-либо обычно хорошо понятен и хорошо документирован. Однако они могут быть менее гибкими при решении проблем за пределами своей основной области, и, как правило, предлагают меньше вариантов выбора компонентов и подходов, которые можно использовать.

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

Express не имеет ограничений. Вы можете вставить в цепочку обработки запросов практически любое совместимое промежуточное ПО, которое вам нравится, и практически в любом порядке. Вы можете структурировать приложение в одном или нескольких файлах и использовать любую структуру каталогов. Иногда вам может показаться, что у вас слишком много возможностей!

Как выглядит экспресс-код?

В традиционном веб-сайте, управляемом данными, веб-приложение ожидает HTTP-запросов от веб-браузера (или другого клиента). Когда запрос получен, приложение решает, какое действие необходимо выполнить, основываясь на шаблоне URL и, возможно, связанной с ним информации, содержащейся в данных POST или GET. В зависимости от того, что требуется, оно может читать или записывать информацию из базы данных или выполнять другие задачи, необходимые для удовлетворения запроса. Затем приложение возвращает ответ веб-браузеру, часто динамически создавая HTML-страницу для отображения браузером путем вставки полученных данных в шаблоны HTML.

Express предоставляет методы для указания того, какая функция вызывается для определенного HTTP-глагола ( GET , POST , SET и т.д.) и шаблона URL (“Route”), а также методы для указания того, какой движок шаблона (“view”) используется, где расположены файлы шаблона и какой шаблон использовать для отображения ответа. Вы можете использовать промежуточное ПО Express для добавления поддержки cookies, сессий и пользователей, получения параметров POST / GET и т.д. Вы можете использовать любой механизм базы данных

Примечание: Если у вас уже установлены Node и Express (или вы устанавливаете их, как показано в следующей статье), вы можете сохранить этот код в текстовом файле под названием app.js и запустить его в командной строке bash, вызвав:

node ./app.js

Первые две строки требуют() (импортируют) модуль express и создают приложение Express. Этот объект, который традиционно называется app, имеет методы для маршрутизации HTTP-запросов, настройки промежуточного ПО, рендеринга HTML-представлений, регистрации шаблонизатора и изменения настроек приложения, которые управляют поведением приложения (например, режим среды, чувствительны ли определения маршрутов к регистру и т.д.).

В средней части кода (три строки, начинающиеся с app.get) показано определение маршрута. Метод app.get() определяет функцию обратного вызова, которая будет вызываться всякий раз, когда поступает HTTP GET запрос с путем ( ‘/’ ) относительно корня сайта. Функция обратного вызова принимает запрос и объект ответа в качестве аргументов и вызывает send() для ответа, чтобы вернуть строку “Hello World!”.

Последний блок запускает сервер на указанном порту (‘3000’) и печатает комментарий журнала в консоль. Запустив сервер, вы можете зайти на localhost:3000 в своем браузере и посмотреть ответ примера.

Импорт и создание модулей

Модуль – это библиотека/файл JavaScript, который вы можете импортировать в другой код с помощью функции require() Node. Сам Express является модулем, как и библиотеки промежуточного ПО и базы данных, которые мы используем в наших приложениях Express.

Приведенный ниже код показывает, как мы импортируем модуль по имени, используя в качестве примера фреймворк Express. Сначала мы вызываем функцию require(), указывая имя модуля в виде строки (‘express’), и вызываем возвращаемый объект для создания приложения Express. Затем мы можем получить доступ к свойствам и функциям объекта приложения.

Вы также можете создавать свои собственные модули, которые можно импортировать таким же образом.

Примечание: Вы захотите создать свои собственные модули, потому что это позволит вам организовать ваш код на управляемые части – монолитное однофайловое приложение трудно понять и поддерживать. Использование модулей также помогает управлять пространством имен, поскольку при использовании модуля импортируются только те переменные, которые вы явно экспортируете.

Чтобы сделать объекты доступными вне модуля, их нужно просто раскрыть как дополнительные свойства объекта exports. Например, модуль square.js ниже – это файл, экспортирующий методы area() и perimeter():

Мы можем импортировать этот модуль с помощью require() , а затем вызвать экспортированный метод(ы), как показано на рисунке:

Примечание: Вы также можете указать абсолютный путь к модулю (или имя, как мы сделали вначале).

Если вы хотите экспортировать полный объект в одном назначении, а не создавать его по одному свойству за раз, назначьте его в module.exports, как показано ниже (вы также можете сделать это, чтобы сделать корень объекта exports конструктором или другой функцией):

Примечание: Вы можете думать об exports как о сокращении до module.exports внутри данного модуля. На самом деле, exports – это просто

Код JavaScript часто использует асинхронные, а не синхронные API для операций, которые могут занять некоторое время. Синхронный API – это такой API, в котором каждая операция должна завершиться до начала следующей операции. Например, следующие функции журнала являются синхронными и выводят текст на консоль в порядке (Первая, Вторая).

Напротив, асинхронный API – это API, в котором API начинает операцию и сразу же возвращается (до завершения операции). После завершения операции API будет использовать какой-либо механизм для выполнения дополнительных операций. Например, в приведенном ниже коде будет выведено “Second, First”, потому что, хотя метод setTimeout() вызывается первым и возвращается немедленно, операция не завершится в течение нескольких секунд.

Использование неблокирующих асинхронных API еще более важно в Node, чем в браузере, потому что Node – это однопоточная среда выполнения, управляемая событиями. “Однопоточность” означает, что все запросы к серверу выполняются в одном потоке (а не порождаются отдельными процессами). Эта модель чрезвычайно эффективна с точки зрения скорости и ресурсов сервера, но она означает, что если какие-либо ваши функции вызывают синхронные методы, которые требуют много времени для завершения, они будут блокировать не только текущий запрос, но и все остальные запросы, обрабатываемые вашим веб-приложением.

Существует несколько способов для асинхронного API уведомить ваше приложение о завершении работы. Наиболее распространенным способом является регистрация функции обратного вызова при вызове асинхронного API, которая будет вызвана после завершения операции. Именно этот подход использовался выше.

Примечание: Использование обратных вызовов может быть довольно “беспорядочным”, если у вас есть последовательность зависимых асинхронных операций, которые должны быть выполнены по порядку, поскольку это приводит к появлению нескольких уровней вложенных обратных вызовов. Эта проблема широко известна как “ад обратных вызовов”. Эту проблему можно уменьшить с помощью хорошей практики кодирования (см. , использования модуля типа async или рефакторинга кода с использованием родных возможностей JavaScript, таких как Promises и async/await. Node предлагает функцию utils.promisify для эргономичного преобразования callback → Promise.

Примечание: Общим соглашением для Node и Express является использование обратных вызовов по ошибке. Согласно этой конвенции, первое значение в ваших функциях обратного вызова – это значение ошибки, а последующие аргументы содержат данные об успехе. Хорошее объяснение того, почему этот подход полезен, можно найти в этом блоге: The Node.js Way – Understanding Error-First Callbacks (fredkschott.com).

Создание обработчиков маршрутов

В нашем примере Hello World Express (см. выше) мы определили (callback) функцию-обработчик маршрута для HTTP GET-запросов к корню сайта (‘/’).

Функция обратного вызова принимает в качестве аргументов запрос и объект ответа. В данном случае метод вызывает send() для ответа, чтобы вернуть строку “Hello World!”. Существует ряд других методов ответа для завершения цикла запрос/ответ, например, вы можете вызвать res.json()

Объект приложения Express также предоставляет методы для определения обработчиков маршрутов для всех остальных HTTP-глаголов, которые в основном используются точно так же:

checkout() , copy() , delete() , get() , head() , lock() , merge() , mkactivity() , mkcol() , move() , m-search() , notify() , options() , patch() , post() , purge() , put() , report() , search() , subscribe() , trace() , unlock() , unsubscribe() .

Существует специальный метод маршрутизации app.all(), который будет вызван в ответ на любой метод HTTP. Он используется для загрузки функций промежуточного ПО по определенному пути для всех методов запроса. В следующем примере (из документации Express) показан обработчик, который будет выполняться для запросов к /secret независимо от используемого HTTP-глагола (при условии, что он поддерживается модулем http).

Маршруты позволяют искать определенные символы в URL, извлекать некоторые значения из URL и передавать их в качестве параметров обработчику маршрута (как атрибуты объекта запроса, передаваемого в качестве параметра).

Часто бывает полезно сгруппировать обработчики маршрутов для определенной части сайта вместе и обращаться к ним, используя общий префикс маршрута (например, на сайте с Wiki все маршруты, связанные с wiki, могут быть собраны в одном файле и обращаться к ним с префиксом маршрута /wiki/ ). В Express это достигается с помощью объекта express.Router. Например, мы можем создать наш маршрут wiki в модуле с именем wiki.js , а затем экспортировать объект Router, как показано ниже:

Примечание: Добавление маршрутов в объект Router аналогично добавлению маршрутов в объект app (как показано ранее).

Чтобы использовать маршрутизатор в нашем основном файле приложения, мы потребуем() модуль маршрутов ( wiki.js ), затем вызовем use() в приложении Express, чтобы добавить Router в путь обработки промежуточного ПО. После этого два маршрута будут доступны из /wiki/ и /wiki/about/ .

Мы расскажем вам больше о работе с маршрутами и, в частности, об использовании Router, позже в связанном разделе Маршруты и контроллеры.

Использование промежуточного ПО

Промежуточное ПО широко используется в приложениях Express, для выполнения различных задач, от обслуживания статических файлов до обработки ошибок и сжатия HTTP-ответов. В то время как функции маршрутизации завершают цикл HTTP-запрос-ответ возвращением некоторого ответа HTTP-клиенту, функции промежуточного ПО обычно выполняют некоторую операцию над запросом или ответом, а затем вызывают следующую функцию в “стеке”, которая может быть другим промежуточным ПО или обработчиком маршрута. Порядок вызова промежуточного ПО зависит от разработчика приложения.

Примечание: промежуточное ПО может выполнять любые операции, исполнять любой код, вносить изменения в объект запроса и ответа, а также завершать цикл запрос-ответ. Если оно не завершает цикл, то оно должно вызвать next() для передачи управления следующей функции промежуточного ПО (иначе запрос останется в подвешенном состоянии).

Большинство приложений используют стороннее промежуточное ПО, чтобы упростить общие задачи веб-разработки, такие как работа с cookies, сессиями, аутентификация пользователя, доступ к POST и JSON данным запроса, логирование и т.д. Вы можете найти список пакетов промежуточного ПО, поддерживаемых командой Express (в него также входят другие популярные пакеты сторонних разработчиков). Другие пакеты Express доступны в менеджере пакетов npm.

Чтобы использовать стороннее промежуточное ПО, сначала нужно установить его в ваше приложение с помощью npm. Например, чтобы установить промежуточное ПО morgan HTTP request logger, нужно сделать следующее:

Затем вы можете вызвать use() на объекте приложения Express, чтобы добавить промежуточное ПО в стек:

Примечание: Функции промежуточного ПО и маршрутизации вызываются в том порядке, в котором они объявлены. Для некоторых промежуточных программ порядок важен (например, если промежуточная программа сессии зависит от промежуточной программы cookie, то обработчик cookie должен быть добавлен первым). Почти всегда промежуточное ПО вызывается перед установкой маршрутов, иначе ваши обработчики маршрутов не будут иметь доступа к функциональности, добавленной вашим промежуточным ПО.

Вы можете написать свои собственные функции промежуточного ПО, и, скорее всего, вам придется это сделать (хотя бы для того, чтобы создать код обработки ошибок). Единственное различие между функцией промежуточного ПО и обратным вызовом обработчика маршрута заключается в том, что функции промежуточного ПО имеют третий аргумент next , который функции промежуточного ПО должны вызывать, если не они завершают цикл запроса (когда вызывается функция промежуточного ПО, она содержит следующую функцию, которая должна быть вызвана).

Вы можете добавить промежуточную функцию в цепочку обработки для всех ответов с помощью app.use() , или для определенного HTTP-глагола с помощью связанного метода: app.get() , app.post() , и т.д. Маршруты задаются одинаково для обоих случаев, хотя при вызове app.use() маршрут необязателен.

В примере ниже показано, как можно добавить промежуточную функцию, используя оба подхода, с маршрутом и без него.

Примечание: Выше мы объявили промежуточную функцию отдельно, а затем установили ее в качестве обратного вызова. В нашей предыдущей функции обработчика маршрута мы объявили функцию обратного вызова, когда она использовалась. В JavaScript подходит любой из этих подходов.

В документации Express есть еще много отличной документации по использованию и написанию промежуточного ПО Express.

Обслуживание статических файлов

Вы можете использовать промежуточное ПО express.static для обслуживания статических файлов, включая ваши изображения, CSS и JavaScript (static() – единственная функция промежуточного ПО, которая фактически является частью Express). Например, вы можете использовать приведенную ниже строку для обслуживания изображений, CSS и JavaScript файлов из каталога с именем ‘ public’ на том же уровне, где вы вызываете node:

Любые файлы в каталоге public обслуживаются путем добавления их имени (относительно базового каталога “public”) к базовому URL. Так, например:

Вы можете вызвать static() несколько раз, чтобы обслужить несколько каталогов. Если файл не может быть найден одной промежуточной функцией, то он будет передан последующей промежуточной функции (порядок вызова промежуточной функции основан на порядке объявления).

Вы также можете создать виртуальный префикс для ваших статических URL, вместо того чтобы добавлять файлы к базовому URL. Например, здесь мы указываем путь монтирования, чтобы файлы загружались с префиксом “/media”:

Теперь вы можете загружать файлы, находящиеся в публичной директории, с префиксом пути /media.

Обработка ошибок

Ошибки обрабатываются одной или несколькими специальными промежуточными функциями, которые имеют четыре аргумента вместо обычных трех: (err, req, res, next) . Например:

Эти функции могут возвращать любое требуемое содержимое, но должны вызываться после всех других вызовов app.use() и routes, чтобы они были последним промежуточным ПО в процессе обработки запроса.

Примечание: Трассировка стека не включена в производственную среду. Для запуска в производственном режиме необходимо установить переменную окружения NODE_ENV в ‘ production’ .

Примечание: HTTP404 и другие коды состояния “ошибка” не рассматриваются как ошибки. Если вы хотите обрабатывать их, вы можете добавить для этого промежуточную функцию. Для получения дополнительной информации см. раздел FAQ.

Дополнительную информацию см. в разделе Обработка ошибок (Express docs).

Использование баз данных

Приложения Express могут использовать любой механизм баз данных, поддерживаемый Node (сам Express не определяет никакого конкретного дополнительного поведения/требований для управления базами данных). Существует множество вариантов, включая PostgreSQL, MySQL, Redis, SQLite, MongoDB и т.д.

Для того чтобы использовать их, необходимо сначала установить драйвер базы данных с помощью npm. Например, для установки драйвера для популярной NoSQL-базы MongoDB вы можете воспользоваться командой:

Сама база данных может быть установлена локально или на облачном сервере. В коде Express вы требуете драйвер, подключаетесь к базе данных, а затем выполняете операции создания, чтения, обновления и удаления (CRUD). Пример ниже (из документации Express) показывает, как вы можете найти записи “mammal” с помощью MongoDB.

Это работает с более старыми версиями mongodb версии

2.2.33:

Для mongodb версии 3.0 и выше:

Другим популярным подходом является непрямой доступ к базе данных через объектно-реляционный маппер (“ORM”). При таком подходе вы определяете свои данные как “объекты” или “модели”, а ORM отображает их в формат базовой базы данных. Преимущество этого подхода заключается в том, что как разработчик вы можете продолжать мыслить в терминах объектов JavaScript, а не семантики базы данных, и что есть очевидное место для выполнения валидации и проверки входящих данных. Подробнее о базах данных мы поговорим в одной из следующих статей.

Для получения дополнительной информации смотрите Интеграция с базами данных (Express docs).

Рендеринг данных (представления)

Движки шаблонов (также называемые в документации Express “движками представлений”) позволяют задать структуру выходного документа в шаблоне, используя заполнители для данных, которые будут заполнены при генерации страницы. Шаблоны часто используются для создания HTML, но могут создавать и другие типы документов. Express поддерживает несколько шаблонизаторов, и здесь можно найти полезное сравнение наиболее популярных из них: Comparing JavaScript Templating Engines: Jade, Mustache, Dust и другие.

В коде настроек приложения вы задаете используемый шаблонизатор и место, где Express должен искать шаблоны, используя настройки ‘views’ и ‘view engine’, как показано ниже (вам также придется установить пакет, содержащий библиотеку шаблонов).~Внешний вид шаблона будет зависеть от того, какой движок вы используете. Предположим, что у вас есть файл шаблона с именем “index.”, который содержит заполнители для переменных данных с именами “title” и “message”, вы должны вызвать Response.render() в функции обработчика маршрута для создания и отправки HTML-ответа:

Для получения дополнительной информации смотрите Использование шаблонизаторов с Express (Express docs).

Файл st

Express не делает никаких предположений относительно структуры или того, какие компоненты вы используете. Маршруты, представления, статические файлы и другая логика, специфичная для приложения, могут находиться в любом количестве файлов с любой структурой каталогов. Хотя вполне возможно иметь все приложение Express в одном файле, обычно имеет смысл разделить ваше приложение на файлы, основанные на функции (например, управление учетными записями, блоги, дискуссионные форумы) и архитектурной проблемной области (например, модель, представление или контроллер, если вы используете архитектуру MVC).

В одной из следующих тем мы будем использовать генератор приложений Express Application Generator, который создает модульный скелет приложения, который мы можем легко расширить для создания веб-приложений.

Резюме

Поздравляем, вы завершили первый шаг в вашем путешествии по Express/Node! Теперь вы должны понимать основные преимущества Express и Node, а также примерно представлять, как могут выглядеть основные части приложения Express (маршруты, промежуточное ПО, обработка ошибок и код шаблона). Вы также должны понимать, что, поскольку Express является неавторизованным фреймворком, способ объединения этих частей и библиотеки, которые вы используете, во многом зависят от вас!

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *