Начало работы
Hello World
-
“Создать проект, добавить конфигурацию
package.json
``bash $ mkdir myapp # создать каталог $ cd myapp # войти в каталог $ npm init -y # Инициализация конфигурации -
Установка зависимостей ``bash $ npm install express
-
Добавляем код в файл
index.js
:const express = require('express') const app = express() const port = 3000 app.get('/', (req, res) => { res. send('Hello World!') }) app.listen(port, () => { console.log(`Прослушивание порта на ${порт}`) })
-
Запустите приложение с помощью следующей команды ``bash $ node index.js
{.marker-timeline}
express -h
``bash Использование: express [options] [dir] Опции: -h, –help вывод информации об использовании –version вывод номера версии -e, –ejs добавить поддержку движка ejs –hbs добавить поддержку движка hbs –pug добавить поддержку движка pug -H, –hogan Добавить поддержку движка hogan.js –no-view Не генерируется движок представления -v, –view добавить поддержку <движка> представления (ejs|hbs|hjs|jade|pug|twig|vash) (по умолчанию jade) -c, –css добавить поддержку таблицы стилей (less|stylus|compass|sass) (по умолчанию css) –git добавить .gitignore -f, –force принудительное использование непустых каталогов
{.wrap-text}
Создание проекта `myapp`
``bash
$ express --view=pug myapp
# запустить приложение
$ DEBUG=myapp:*npm start
express()
:- | :- |
---|---|
express.json() |
# |
express.raw() |
# |
express.Router() |
# |
express.static() |
# |
express.text() |
# |
express.urlencoded() |
# |
Router
:- | :- |
---|---|
router.all() |
# |
router.METHOD() |
# |
router.param() |
# |
router.route() |
# |
router.use() |
# |
Приложение
var express = require('express')
var app = express()
console.dir(app.locals.title)
//=> 'My App'
console.dir(app.locals.email)
//=> '[email protected]'
Атрибут
:- | :- |
---|---|
app.locals |
Локальные переменные в приложении # |
app.mountpath |
Шаблон пути для монтирования субприложений # |
События
:- | :- |
---|---|
mount |
Дочернее приложение монтируется на родительское приложение, и событие срабатывает на дочернем приложении # |
Метод
:- | :- |
---|---|
app.all() |
# |
app.delete() |
# |
app.disable() |
# |
app.disabled() |
# |
app.enable() |
# |
app.enabled() |
# |
app.engine() |
# |
app.get(name) |
# |
app.get(path, callback) |
# |
app.listen() |
# |
app.METHOD() |
# |
app.param() |
# |
app.path() |
# |
app.post() |
# |
app.put() |
# |
app.render() |
# |
app.route() |
# |
app.set() |
# |
app.use() |
# |
Запрос
Атрибут
:- | :- |
---|---|
req.app |
# |
req.baseUrl |
# |
req.body |
# |
req.cookies |
# |
req.fresh |
# |
req.hostname |
# |
req.ip |
# |
req.ips |
# |
req.method |
# |
req.originalUrl |
# |
req.params |
# |
req.path |
# |
req.protocol |
# |
req.query |
# |
req.route |
# |
req.secure |
# |
req.signedCookies |
# |
req.stale |
# |
req.subdomains |
# |
req.xhr |
# |
Метод
:- | :- |
---|---|
req.accepts() |
# |
req.acceptsCharsets() |
# |
req.acceptsEncodings() |
# |
req.acceptsLanguages() |
# |
req.get() |
Получение полей заголовка HTTP-запроса # |
req.is() |
# |
req.param() |
# |
req.range() |
# |
Response
app.get('/', function (req, res) {
console.dir(res.headersSent) //false
res.send('OK')
console.dir(res.headersSent) //true
})
Атрибут
:- | :- |
---|---|
res.app |
# |
res.headersSent |
# |
res.locals |
# |
Метод
:- | :- |
---|---|
res.append() |
# |
res.attachment() |
# |
res.cookie() |
# |
res.clearCookie() |
# |
res.download() |
Запрос на скачивание файлов # |
res.end() |
Завершение процесса ответа # |
res.format() |
# |
res.get() |
# |
res.json() |
Отправить JSON-ответ # |
res.jsonp() |
Отправить ответ с поддержкой JSONP # |
res.links() |
# |
res.location() |
# |
res.redirect() |
Перенаправление запроса # |
res.render() |
Рендеринг шаблона представления # |
res.send() |
Отправка различных типов ответов # |
res.sendFile() |
Отправка файла в виде октетного потока # |
res.sendStatus() |
# |
res.set() |
# |
res.status() |
# |
res.type() |
# |
res.vary() |
# |
Пример
Маршрутизатор {. row-span-2}
Вызывается для любого запроса, переданного этому маршрутизатору
router. use(function (req, res, next) {
//... здесь есть некоторая логика... как и в любом другом промежуточном ПО
next()
})
будет обрабатывать любой запрос, заканчивающийся на /events
.
//зависит от того, где маршрутизатор "использует()"
router. get('/events', (req, res, next) => {
//..
})
Ответ
Объект res
представляет собой HTTP-ответ, отправляемый приложением Express
при получении HTTP-запроса
app.get('/user/:id', (req, res) => {
res.send('user' + req.params.id)
})
Запрос
Объект req
представляет собой HTTP
запрос и имеет свойства для строки запроса, параметров, тела запроса, HTTP-заголовков и т.д.
app.get('/user/:id', (req, res) => {
res.send('user' + req.params.id)
})
res. end()
res. end()
res.status(404).end()
Завершение процесса получения ответа. Этот метод фактически пришел из ядра Node, а именно из метода response.end()
функции http.ServerResponse
.
res.json([body])
res.json(null)
res.json({ user: 'tobi' })
res.status(500).json({ error: 'message' })
app.all
app.all('/secret', function (req, res, next) {
console.log('доступ к секретному разделу...')
next() // Передаем управление следующему обработчику
})
app.delete
app.delete('/', function (req, res) {
res.send('DELETE запрос на главную страницу')
})
app.disable(name)
app.disable('trust proxy')
app.get('trust proxy')
// => false
app.disabled(name)
app.disabled('trust proxy')
// => true
app.enable('trust proxy')
app.disabled('trust proxy')
// => false
app.engine(ext, callback)
var engines = require('consolidate')
app.engine('haml', engines.haml)
app.engine('html', engines.hogan)
app.listen([port[, host[, backlog]]][, callback])
var express = require('express')
var app = express()
app.listen(3000)
Маршрутизация
const express = require('express')
const app = express()
//Ответ на запрос "hello world" при выполнении GET-запроса к домашней странице
app.get('/', (req, res) => {
res.send('hello world')
})
// Маршрутизация метода GET
app.get('/', (req, res) => {
res.send('GET-запрос на главную страницу')
})
// Маршрутизация методом POST
app.post('/', (req, res) => {
res.send('POST-запрос на главную страницу')
})
Middleware
function logOriginalUrl (req, res, next) {
console.log('ReqURL:', req.originalUrl)
next()
}
function logMethod (req, res, next) {
console.log('Тип запроса:', req.method)
next()
}
const log = [logOriginalUrl, logMethod]
app.get('/user/:id', log,
(req, res, next)=>{
res.send('Информация о пользователе')
}
)
Использование шаблонов
app.set('view engine', 'pug')
Создайте файл шаблона Pug
с именем index.pug
в каталоге views
со следующим содержимым
html
заголовок
заголовок= title
тело
h1=сообщение
Создайте маршрут для рендеринга файла index.pug
. Если свойство view engine не задано, то необходимо указать расширение файла представления
app.get('/', (req, res) => {
res. render('index', {
title: 'Привет', message: 'Hello there!'
})
})