В этой главе я расскажу вам о том, как вы можете запустить простой HTTP-сервер на Node.js и начать обрабатывать запросы.
This article was translated to Russian by Andrey Melikhov, a front-end developer from Yandex.Money and editor of the collective blog about front-end, devSchacht . Find Andrey on: Twitter , GitHub , Medium & SoundCloud
Перевод этой статьи сделан Андреем Мелиховым, фронтенд-разработчиком из компании Яндекс.Деньги, редактором коллективного блога о фронтенде, devSchacht . Twitter | GitHub | Medium | SoundCloud
Когда вы начинаете создавать HTTP-приложения в Node.js, встроенные модули http/https - это то, с чем вы будете взаимодействовать.
Давайте создадим ваш первый HTTP-сервер на Node.js! Нам будет нужно подключить модуль http и привязать наш сервер к порту 3000 .
// содежимое index.js const http = require("http") const port = 3000 const requestHandler = (request, response) => { console.log(request.url) response.end("Hello Node.js Server!") } const server = http.createServer(requestHandler) server.listen(port, (err) => { if (err) { return console.log("something bad happened", err) } console.log(`server is listening on ${port}`) })
Затем запускаем этот скрипт:
$ node index.js
Что нужно здесь отметить:
Модуль http крайне низкоуровневый: создание сложного веб-приложения с использованием вышеприведённого фрагмента кода очень трудоёмко. Именно по этой причине мы обычно выбираем фреймворки для работы над нашими проектами. Есть множество фреймворков, вот самые популярные:
В этой и следующих главах мы будем использовать Express, так как именно для него вы можете найти множество модулей в NPM.
Быстрый, гибкий, минималистичный веб-фреймворк для Node.js - http://expressjs.com/
Добавление Express в ваш проект - это просто установка через NPM:
$ npm install express --save
После того, как вы установили Express, давайте посмотрим, как создать приложение аналогичное тому, что мы написали ранее:
Const express = require("express") const app = express() const port = 3000 app.get(‘/’, (request, response) => { response.send("Hello from Express!") }) app.listen(port, (err) => { if (err) { return console.log("something bad happened", err) } console.log("server is listening on ${port}") })
Самое большое различие, которое вы можете здесь заметить, заключается в том, что Express по умолчанию даёт вам роутер. Вам не нужно вручную разбирать URL, чтобы решить, что делать, вместо этого вы определяете маршрутизацию приложения с помощью app.get , app.post , app.put и так далее, а они уже транслируются в соответствующие HTTP-запросы.
Одна из самых мощных концепций, которую реализует Express - это паттерн Middleware.
Вы можете думать о промежуточных обработчиках как о конвейерах Unix, но для HTTP-запросов.
На диаграмме вы можете увидеть, как запрос идёт через условное Express-приложение. Он проходит через три промежуточных обработчика. Каждый обработчик может изменить этот запрос, а затем, основываясь на вашей бизнес-логике, третий middleware отправит ответ, либо запрос попадёт в обработчик соответствующего роута.
На практике вы можете сделать это следующим образом:
Const express = require("express") const app = express() app.use((request, response, next) => { console.log(request.headers) next() }) app.use((request, response, next) => { request.chance = Math.random() next() }) app.get("/", (request, response) => { response.json({ chance: request.chance }) }) app.listen(3000)
Что следует здесь отметить:
Как и во всех фреймворках, правильная обработка ошибок имеет решающее значение. В Express вы должны создать специальный промежуточный обработчик - middleware с четырьмя входными параметрами:
Const express = require(‘express’) const app = express() app.get(‘/’, (request, response) => { throw new Error(‘oops’) }) app.use((err, request, response, next) => { // логирование ошибки, пока просто console.log console.log(err) response.status(500).send(‘Something broke!’) })
Что следует здесь отметить:
Ранее мы рассмотрели, как отправлять JSON-ответы. Пришло время узнать, как отрендерить HTML простым способом. Для этого мы собираемся использовать пакет handlebars с обёрткой express-handlebars .
Сначала создадим следующую структуру каталогов:
├── index.js └── views ├── home.hbs └── layouts └── main.hbs
После этого заполните index.js следующим кодом:
// index.js const path = require("path") const express = require("express") const exphbs = require("express-handlebars") app.engine(".hbs", exphbs({ defaultLayout: "main", extname: ".hbs", layoutsDir: path.join(__dirname, "views/layouts") })) app.set("view engine", ".hbs") app.set("views", path.join(__dirname, "views"))
Приведённый выше код инициализирует движок handlebars и устанавливает каталог шаблонов в views/layouts . Это каталог, в котором будут храниться ваши шаблоны.
После того, как вы сделали эту настройку, вы можете поместить свой начальный html в main.hbs . Чтобы всё было проще, давайте сразу перейдём к этому:
Вы можете заметить метку {{{body}}} - здесь будет размещён ваш контент. Давайте создадим home.hbs !
Последнее, что мы должны сделать, чтобы заставить всё это работать, - добавить обработчик маршрута в наше приложение Express:
App.get("/", (request, response) => { response.render("home", { name: "John" }) })
Метод render принимает два параметра:
Как только вы сделаете запрос по этому адресу, вы получите что-то вроде этого:
Это всего лишь верхушка айсберга. Чтобы узнать, как добавить больше шаблонов (и даже частичных), обратитесь к официальной документации express-handlebars .
В некоторых случаях вам может потребоваться выяснить, что происходит с Express, когда приложение работает. Для этого вы можете передать следующую переменную окружения в Express: DEBUG=express* .
Вы должны запустить свой Node.js HTTP-сервер, используя:
$ DEBUG=express* node index.js
Вот как вы можете настроить свой первый HTTP-сервер на Node.js с нуля. Я рекомендую Express для начала, а затем поэкспериментируйте.
В следующей главе вы узнаете, как получать информацию из баз данных .
Co-founder of RisingStack
Please enable JavaScript to view theПришла мне в голову смелая мысль, взяться за написание туториала по разработке на node.js (что-то наподобие ruby.railstutorial.org). Так как я первый раз берусь за подобный труд то для для меня очень важен любой фидбэк. Нужно это - не нужно. Что стоит убрать а на чем остановиться подробнее, в общем любая конструктивная критика. Надеюсь что дело пойдет и вам понравится, в этом случае по мере написания буду выкладывать главы на хабр.
Приветствую, перед вами небольшой учебник по практической разработке на node.js, с использованием фреймворка express. Я с большим энтузиазмом отношусь к node и сопутствующим технологиям. Node.js в первую очередь привлекает свежестью в подходах к разработке, смелостью и драйвом.
О том, что такое node.js вы можете прочитать на http://nodejs.org/ , если коротко - то это серверная платформа, для выполнения javascript. Так же мы будем использовать express, web-фреймворк построеный на концепции middleware (о том, что это такое, поговорим поподробнее чуть позже)
В процессе изучения мы познакомимся с различными аспектами web-разработки, такими как использование системы контроля версий, автоматическое тестирование и так далее. В результате по ходу изучения мы разработаем вполне рабочее web-приложение (простенький аналог твиттера)
Хочется отметить, что очень большое влияние на меня оказал railstutorial , это лучшее пособие по web-разработке, которое я встречал, и мне очень хотелось бы создать нечто подобное для node.js.
В этой главе мы развернем рабочее окружение с нуля, установим все необходимые инструменты, создадим простенькое приложение и даже запустим его на облачном хостинге.
Так как я в основном использую в работе linux, а если точнее - Ubuntu 12.04, основная часть инструкций по установке тех или иных инструментов будет ориентирована на ползователей линукс, но я буду стараться по возможности давать ссылки на инструкции и для других ОС.
Для того чтобы точно следовать инструкциям в учебнике, вам нужно будет поставить систему контроля версий git , дело в том, что мы не только будем размещать код своих проектов в git, но и устанавливать многие инструменты из репозиториев на гитхабе .
Так что, первое что мы сделаем - это...
Пользователи apt-based дистрибутивов могут выполнить в терминале:
$ sudo apt-get install git-core
Теперь пришло время поставить последнюю стабильню версию node.js и npm (установщик пакетов для node). Инструкции по установке разных ОС можно найти . Для установки на ubuntu выполняем:
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:chris-lea/node.js $ sudo apt-get update $ sudo apt-get install nodejs npm
Если есть желание - можно запустить консоль node и поиграться с интерпретатором javascript.
Тут каждый волен выбирать по своему вкусу, лично меня вполне устраивает gedit с установленным набором плагинов gmate . Вполне подходят Netbeans или Webstorm.
Теперь пришло время познакомиться с фреймворком express . Фреймворк очень простой, и вполне приемлемо документированный.
Устанавливаем express глобально:
$ sudo npm install -g express
Создаем директорию для наших учебных проектов:
$ mkdir -p ~/projects/node-tutorial $ cd ~/projects/node-tutorial
Создаем проект и устанавливаем зависимости:
$ express first-app $ cd first-app && npm install
Желающие могут покопаться в том что нам сгенерировал генератор приложений, думаю, что люди знакомые с javascript могут предположить что там происходит.
Теперь приложение можно запустить:
И увидеть результат работы http://localhost:3000/
Теперь, когда у нас уже есть рабочее приложение, более подробно коснемся работы с сисемой контроля версий. Для того чтобы лучше познакомиться с работой git, стоит почитать книжку Pro Git , но можно и обойтись инструкциями в данном учебнике.
Для более комфортной работы с git стоит сначала указать свои личные данные:
$ git config --global user.name "Your Name" $ git config --global user.email [email protected]
И настроить алиасы для наиболее часто используемых комманд:
$ git config --global alias.co checkout $ git config --global alias.ci commit
Git настроен и можно размещать наше приложение в репозитории, инициализируем новый репозиторий:
Добавляем директорию с зависимостями приложения в gitignore:
$ echo "node_modules" > .gitignore
Помещаем все файлы в индекс и создаем первый коммит:
$ git add . $ git ci -m "Initial commit"
После размещения кода проекта в репозитории пришло время выложить проект на GitHub . GitHub - это социальная сеть и хостинг для проектов. Огромное число opensource проектов хостится на гитхабе, так что если вы там еще не зарегистрированы - самое время сделать это .
Перед тем как работать с GitHub нужно будет создать RSA ключи для доступа по ssh. Процедура описана . Для пользователей linux привожу инструкцию по созданию ключей если их у вас еще нет.
$ ssh-keygen -t rsa -C "[email protected]"
Отвечаем на вопросы генератора, после чего копируем содержимое файла ~/.ssh/id_rsa.pub:
$ sudo apt-get install xclip $ xclip -sel clip < ~/.ssh/id_rsa.pub
Проверить что ключ работает можно так:
$ ssh -T [email protected]
Возможно вы увидете предупреждение:
The authenticity of host "github.com (207.97.227.239)" can"t be established. # RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. # Are you sure you want to continue connecting (yes/no)?
Нужно просто ответить "yes" и тогда, если ключ успешно добавился, вы увидите ответ сервера:
Hi username! You"ve successfully authenticated, but GitHub does not # provide shell access.
В мы рассмотрели, что из себя представляет архитектура REST, шесть основных требований, которые выдвигаются к REST, значение методов запроса HTTP и кодов состояния ответов и структуру конечной точки RESTful API .
В этом руководстве мы создадим сервер, на котором будет располагаться наш API. Вы можете создавать API при помощи любого языка программирования и любого серверного программного обеспечения, однако мы будем использовать платформу Node.js , которая является реализацией JavaScript для стороны сервера, и Express – популярный фреймворк для Node.js с самым необходимым функционалом.
Для начала нам необходимо убедиться, что Node.js и npm установлены глобально на нашем компьютере. Мы можем это проверить при помощи выполнения команды с флажком -v , в результате чего будут показаны установленные версии этих инструментов. Откройте вашу консоль и введите туда следующую команду:
Node -v && npm -v v10.8.0 6.2.0
Версии, установленные на вашем компьютере, могут слегка отличаться от тех, что установлены у меня, однако если оба инструмента имеются, то можем приступить.
Давайте создадим папку проекта под названием express-api и перейдем в нее.
Mkdir express-api && cd express-api
Теперь, когда мы в ней, мы можем инициализировать наш проект, выполнив команду init.
Npm init
В результате вам будет предложен ряд вопросов о проекте, на которые вы можете как отвечать, так и нет. После настройки у вас будет файл package.json , который выглядит следующим образом:
{ "name": "express-api", "version": "1.0.0", "description": "Node.js and Express REST API", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Tania Rascia", "license": "MIT" }
Теперь, когда у нас есть package.json , мы можем установить зависимости, необходимые для нашего проекта. К счастью, нам нужны только следующие:
Мы воспользуемся командой install , за которой будут следовать все зависимости, для завершения настройки нашего проекта.
Npm install body-parser express mysql request
В результате будут созданы файл package-lock.json , папка node_modules , и package.json теперь будет выглядеть подобно следующему:
{ "name": "express-api", "version": "1.0.0", "description": "Node.js and Express REST API", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Tania Rascia", "license": "MIT", "dependencies": { "dependencies": { "body-parser": "^1.18.3", "express": "^4.16.3", "mysql": "^2.16.0", "request": "^2.88.0" } }
Перед тем как создать сервер Express, мы быстренько создадим сервер HTTP при помощи встроенного модуля http Node, чтобы вы получили общее представление о том, как работает простенький сервер.
Создайте файл под названием hello-server.js . Загрузите модуль http , установите значение порта (я выбрала 3001) и создайте сервер при помощи метода createServer() .
// Build a server with Node"s HTTP module const http = require("http"); const port = 3001; const server = http.createServer();
Во вступительном руководстве этой серии мы рассмотрели, какую роль выполняют запросы и ответы для сервера HTTP. Мы настроим наш сервер так, чтобы он мог обрабатывать запрос и отображать его URL-адрес на стороне сервера, а также так, чтобы на стороне клиента отображалось сообщение «Hello, server! ».
Server**on("request"** (request, response) => { console.log(`URL: ${request.url}`); response.end("Hello, server!") })
Наконец, мы укажем серверу, какой порт прослушивать и будем выводить ошибки при их наличии.
// Start the server server.listen(port, (error) => { if (error) return console.log(`Error: ${error}`); console.log(`Server is listening on port ${port}`) })
Теперь мы можем запустить наш сервер при помощи команды node , за которой следует имя файла.
Node hello-server.js
Вы увидите ответ в консоли.
Server is listening on port 3001
Для того чтобы проверить, действительно ли запустился сервер, перейдите в вашем браузере по адресу http://localhost:3001/ . Если все нормально, то вы увидите «Hello, server! » на странице. В вашей консоли вы увидите запрошенный URL-адрес.
URL: / URL: /favicon.ico
Если бы вы перешли по адресу http://localhost:3001/hello , то увидели бы URL: /hello .
Также мы можем использовать инструмент cURL на нашем локальном сервере, за счет чего нам будут показаны точные возвращенные заголовки и тело ответа.
Curl -i http://localhost:3001 HTTP/1.1 200 OK Date: Wed, 15 Aug 2018 22:14:23 GMT Connection: keep-alive Content-Length: 14 Hello, server!
Если вы закроете консоль, когда захотите, то сервер прекратит работу.
Теперь, когда мы получили общее представление о том, как работает сервер, запрос и ответ вместе, мы можем переписать этот код для Express, интерфейс которого даже проще и возможности которого более широки.
Мы создадим новый файл, app.js , который будет выступать в роли точки входа (* файл для запуска приложения) для собственно нашего проекта. Так же как и в случае с оригинальным сервером http, мы запросим модуль и укажем порт для запуска сервера.
Создайте файл app.js и добавьте туда следующий код:
// Require packages and set the port const express = require("express"); const port = 3002; const app = express();
Теперь, вместо того чтобы прослушивать все запросы, мы явно укажем серверу, что нам необходимы только запросы, выполненные по методу GET к корневой папке сервера (/). При получении конечной точкой запроса « / » мы отобразим запрошенный URL-адрес и выведем сообщение «Hello, Server!».
App.get("/", (request, response) => { console.log(`URL: ${request.url}`); response.send("Hello, Server!"); });
Наконец, мы запустим сервер, который будет прослушивать запросы, выполненные по 3002 порту, при помощи метода listen() .
// Start the server const server = app.listen(port, (error) =>
Мы можем запустить сервер при помощи команды node app.js , как и ранее, однако мы можем изменить свойство scripts в файле package.json для автоматического запуска этой конкретной команды.
"scripts": { "start": "node app.js" },
Теперь мы можем использовать команду npm start для запуска сервера, и после запуска мы увидим сообщение в консоли.
Server listening on port 3002
Если мы выполним команду curl -i для обсуждаемого URL-адреса, то увидим, что сервер в этом случае работает на базе Express и что имеются некоторые дополнительные заголовки вроде Content-Type .
Curl -i http://localhost:3002 HTTP/1.1 200 OK X-Powered-By: Express Content-Type: text/html; charset=utf-8 Content-Length: 14 ETag: W/"e-gaHDsc0MZK+LfDiTM4ruVL4pUqI" Date: Wed, 15 Aug 2018 22:38:45 GMT Connection: keep-alive Hello, Server!
Для того чтобы облегчить работу с запросами по методам POST и PUT к нашему API, мы добавим промежуточное ПО для разбора тела запроса. Тут нам и пригождается модуль body-parser . За счет этого модуля будет извлечено все тело пришедшего запроса, а его данные преобразованы в JSON-объект, с которым мы можем работать.
Мы просто запросим модуль вверху кода нашего файла. Добавьте следующую инструкцию require в верхнюю часть вашего файла app.js .
Const bodyParser = require("body-parser"); ...
Затем мы укажем нашему приложению Express, что необходимо использовать body-parser и преобразовывать данные в формат JSON.
// Use Node.js body parsing middleware app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true, }));
Также давайте изменим наше сообщение таким образом, чтобы вместо простого текста в качестве ответа отправлялся JSON-объект.
Response.send({message: "Node.js and Express REST API"});
// Require packages and set the port const express = require("express"); const port = 3002; const bodyParser = require("body-parser"); const app = express(); // Use Node.js body parsing middleware app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true, })); app.get("/", (request, response) => { response.send({ message: "Node.js and Express REST API"}); }); // Start the server const server = app.listen(port, (error) => { if (error) return console.log(`Error: ${error}`); console.log(`Server listening on port ${server.address().port}`); });
Если вы отправите запрос при помощи curl -i на сервер, то увидите, что в заголовке Content-Type теперь указано значение application/json; charset=utf-8 .
Пока что у нас имеется только маршрут для обработки запросов по методу GET к корню приложения « / »), однако наш API также должен быть способен обрабатывать запросы HTTP по всем главным методам к различным URL. Мы настроим маршрутизатор (* предоставляет функциональные возможности для обработки ответов) и добавим некоторые выдуманные данные для отправления пользователю.
Давайте создадим новую папку под названием routes и файл под названием routes.js . Мы подключим его вверху app.js .
Const routes = require("./routes/routes");
Обратите внимание на то, что расширение.js в require указывать необязательно. Теперь мы переместим маршрут для обработки запросов GET в routes.js . Добавьте следующий код в routes.js :
Const router = app => { app.get("/", (request, response) => { response.send({ message: "Node.js and Express REST API" }); }); }
Наконец, экспортируйте маршрутизатор, чтобы мы могли им воспользоваться в нашем файле app.js
// Export the router module.exports = router;
В app.js замените имеющийся код app.get() вызовом routes() :
Routes(app);
Теперь вы могли бы перейти по http://localhost:3002 и увидеть то же, что и ранее. (Не забудьте перезапустить сервер!)
После удачной настройки вышеуказанного мы предоставим некоторые данные в формате JSON при помощи другого маршрута. Пока что мы воспользуемся просто выдуманными данными, поскольку наша база данных еще не создана.
Давайте создадим переменную users в routes.js с некоторыми выдуманными пользовательскими данными в формате JSON.
Const users = [{ id: 1, name: "Richard Hendricks", email: "[email protected]", }, { id: 2, name: "Bertram Gilfoyle", email: "[email protected]", }, ];
Мы добавим еще один маршрут для обработки запросов по адресу /users и методу GET в наш маршрутизатор и будем отправлять с его помощью пользовательские данные.
App.get("/users", (request, response) => { response.send(users); });
После перезапуска сервера теперь вы можете перейти по http://localhost:3002/users и увидеть все наши данные.
Обратите внимание: если у вас не установлено в браузере расширения для просмотра файлов в формат JSON, то я вам очень рекомендую скачать его, например JSONView для Chrome. Благодаря этому вам будет намного проще читать данные!
Посетите репозиторий GitHub , чтобы ознакомиться с конечным кодом для этого поста и сравните его со своим.
В этом руководстве мы рассмотрели, как создать сервер при помощи встроенного модуля Node HTTP и при помощи Express, как назначить маршруты для запросов, выполняемых по различным URL-адресам, и как получать пришедшие в запросах по методу GET данные в формате JSON.
В последнем руководстве этой серии мы подключим наш сервер Express к MySQL для создания, просмотра, обновления и удаления пользователей из нашей базы данных, завершая реализацию функциональных возможностей нашего API.
Глядя на шаблон синтаксиса, если мы хотим добавить новый маршрут в приложение, то можем просто сделать что-то вроде следующего:
Router.get("/app", function(req, res) { res.render("app", { title: "Express" }); });
Самое интересное что маршрут это функция, содержащая логику. Внутри маршрута находится функция res.render:
Res.render("foo", { title: "Express" });
В шаблоне представления мы видим это:
H1= title p Добро пожаловать в #{title}
Это два примера того, как мы можем вытащить данные из controller/route и вывести их в представлении. В этом примере мы выводим HTML:
Добро пожаловать в Express
Всё это, кажется, вытекает из проблемы - может ли маршрут также содержать информацию контроллера? Это верно, поэтому есть движение в обществе за то, чтобы изменить имя папки с routes на controllers.
Отличный пример этого можно увидеть в примере Express MVC .
Но ради логичности в этом руководстве мы будем держаться текущих соглашений.
Ошибки уже направляют вас в Express. В файле app.js есть следующее:
/// поймать 404 и перенаправить в обработчик ошибки app.use(function(req, res, next) { var err = new Error("Не найдено"); err.status = 404; next(err); });
В папке views/ есть errors.jade.
Extends layout block content h1= message h2= error.status pre #{error.stack}
Всё просто. Если вы хотите настроить свою страницу 404, то всего-лишь редактируйте это представление.
Express представляет собой популярный веб-фреймворк, написанный на JavaScript и работающий внутри среды исполнения node.js. Этот модуль освещает некоторые ключевые преимущества этого фреймворка, установку среды разработки и выполнение основных задач веб-разработки и развертывания.
Перед началом этого модуля вам необходимо представлять, что из себя представляет серверное программирование и веб-фреймворки, желательно из прочтения статей другого модуля Server-side website programming first steps . Знакомство с основными концепциями программирования и языком программирования JavaScript будет очень полезным, но оно не является обязательным для понимания базовых понятий этого модуля.
Заметка : Этот веб-сайт содержит множество источников для изучения JavaScript в контексте разработки на стороне клиента : JavaScript , JavaScript Guide , JavaScript Basics , JavaScript (изучение). Ключевые особенности и коцепции языка JavaScript остаются сходными и для серверной разработки на Node.js и используемый материал достаточно релевантен. Node.js предоставляет additional APIs для обеспечения функционала, который полезен для "безбраузерной" разработки, т.е. для создания HTTP-сервера и доступа к файловой системе, но не поддерживает JavaScript APIs для работы с браузером и DOM.
Это руководство обеспечит вас некоторой информацией о работе с Node.js и Express, но также существуют и другие многочисленные отличные ресурсы в Интренете и книгах - некоторые из них доступны из тем How do I get started with Node.js (StackOverflow) и (Quora).
Теперь, когда вы знаете, что такое Express, мы покажем вам, как настроить и протестировать среду разработки Node/Express в Windows, Linux (Ubuntu) и Mac OS X. Независимо от того, какую популярную операционную систему вы используете, эта статья даст вам то, что вам нужно, чтобы начать разработку приложений Express.
Учебник Express: сайт LocalLibraryПервая статья в нашей серии практических уроков объясняет, что вы будете изучать, и предоставит обзор веб-сайта «локальной библиотеки», над которым мы будем работать и развивать в последующих статьях.
Учебник Express часть 2: Создание скелета веб-сайтаВ этой статье показано, как вы можете создать «скелет» веб-сайта, который затем можно будет заполнить с помощью маршрутов сайта, шаблонов/представлений и баз данных.
Учебник Express часть 3: Использование базы данных (с помощью Mongoose) В этой статье кратко представлены базы данных для Node/Express. Затем показывается, как мы можем использовать Mongoose для обеспечения доступа к баз данных для сайта LocalLibrary . В уроке объясняется, как объявляются объектная схема и модели, основные типы полей и базовая валидация. Также кратко показаны некоторые из основных способов доступа к данным модели. Учебник Express часть 4: Маршруты и контроллеры В этом уроке мы создадим маршруты (код обработки URL) с "фиктивным" обработчиком функций для всех конечных точек ресурсов, которые нам в конечном итоге понадобятся для сайта LocalLibrary . По завершении мы будем иметь модульную структуру нашего кода обработки маршрута, который мы можем расширить с помощью функций реального обработчика в следующих статьях. Мы также будем очень хорошо понимать, как создавать модульные маршруты, используя Express. Учебник Express часть 5: Отображение данных библиотеки Теперь мы готовы добавить страницы, на которых будут отображаться книги веб-сайта LocalLibrary и другие данные. Страницы будут включать главную страницу, которая показывает сколько записей определенного типа мы имеем и отдельную страницу для детального просмотра записи. По пути мы получим практический опыт в получении записей из баз данных и использовании шаблонов. Учебник Express часть 6: Работы с формами В этой части мы покажем вам, как работать с HTML формами в Express, используя Pug, и в частности, как создавать, обновлять и удалять документы из базы данных. Учебник Express часть 7: Выкладка в production Теперь когда вы создали восхитительный сайт LocalLibrary , вы захотите установить его на общедоступном сервере, чтобы он мог дать доступ персоналу библиотеки и пользователям в Интернет. В этой статье представлен обзор того, как вы можете найти хост для развертывания вашего сайта и что вам нужно сделать, чтобы подготовить ваш сайт к публикации. Установка LocalLibrary на PWS/Cloud Foundry В этой статье представлена практическая демонстрация того, как установить LocalLibrary на облаке Pivotal Web Services PaaS - это полнофункциональная альтернатива с открытым исходным кодом для Heroku, облачного сервиса PaaS используемого в части 7 этого учебника, представленного выше. PWS/Cloud Foundry опредленно стоит попробовать, если вы ищете альтернативу Heroku (или другому PaaS облачному сервису), или просто хотите попробовать что-то другое.