Node.js
Описание
Node.js - это среда выполнения JavaScript, построенная на движке JavaScript V8 Chrome.
Установка
Посетите это, чтобы установить Node.js в вашу систему.
выражать
Описание
Express - это минимальный и гибкий фреймворк для приложений Node.js.
Установка
Создайте каталог для хранения вашего приложения:
$ mkdir app-name
$ cd app-name
Создайте файл package.json для своего приложения:
$ npm init
Установите Express в каталог имени приложения и сохраните его в списке зависимостей:
$ npm install — save Express
Установите Express в каталог имени приложения и не сохраняйте его в списке зависимостей:
$ npm install — no-save Express
Привет, мир!
Создайте файл server.js в каталоге app-name и добавьте следующий код:
const express = require(‘express’) const app = express() const PORT = 5000 app.get(‘/’, (req, res) => res.send(“Hello World!”)) app.listen(PORT, () => console.log(`Server is running on Port ${PORT}.`))
Запустите сервер
$ node server.js
Сервер будет работать на порту 5000 localhost.
Базовая маршрутизация
Маршрутизация означает определение того, как приложение реагирует на запрос клиента к определенной конечной точке, которая является URI и методом запроса HTTP.
Определение маршрута:
app.METHOD(PATH, HANDLER)
- приложение является экземпляром Express
- МЕТОД - это метод HTTP-запроса. (нижний регистр)
- ПУТЬ - это путь на сервере.
- HANDLER - это функция, которая будет выполняться при совпадении маршрута.
Примеры:
Получить запрос
app.get(‘/’, (req, res) => res.send(‘This is a GET request.’))
POST запрос
app.post(‘/’, (req, res) => res.send(‘This is a POST request.’))
PUT Запрос
app.put(‘/’, (req, res) => res.send(‘This is a PUT request.’))
УДАЛИТЬ запрос
app.delete(‘/’, (req, res) => res.send(‘This is a DELETE request.’))
Пути маршрута
Пути маршрута в сочетании с методом запроса определяют конечные точки, в которых могут выполняться запросы. Пути маршрута могут быть строками, строковыми шаблонами или регулярными выражениями.
Персонажи?, +. * и () являются подмножествами их аналогов в регулярных выражениях. Если вам нужно использовать ($) в строке пути, заключите его с экранированием в ([и]). Пример - ›/data/$book
будет /data/([\$])book
.
Параметры маршрута
Параметры маршрута представляют собой именованные сегменты URL-адреса, которые используются для захвата значений, указанных в их позиции в URL-адресе. Захваченные значения заполняются в объекте req.params
с именем параметра маршрута, указанным в пути, в качестве их соответствующих ключей.
Примеры:
Route path: /users/:userId/books/:bookId
Request URL: http://localhost:3000/users/34/books/8989
req.params: { "userId": "34", "bookId": "8989" }
Чтобы определить маршруты с параметрами маршрута, просто укажите параметры маршрута в пути маршрута, как показано ниже:
app.get('/users/:userId/books/:bookId', function (req, res) {
res.send(req.params)
})
Обработчики маршрутов
Обработчики маршрутов могут быть в форме функции, массива функций или их комбинации, как показано в следующих примерах:
Функция однократного обратного вызова:
app.get('/example/a', function (req, res) {
res.send('Hello from A!')
})
Функция многократного обратного вызова (убедитесь, что вы указали следующий объект):
app.get('/example/b', function (req, res, next) {
console.log('the response will be sent by the next function ...')
next()
}, function (req, res) {
res.send('Hello from B!')
})
Массив функций обратного вызова:
var cb0 = function (req, res, next) {
console.log('CB0')
next()
}
var cb1 = function (req, res, next) {
console.log('CB1')
next()
}
var cb2 = function (req, res) {
res.send('Hello from C!')
}
app.get('/example/c', [cb0, cb1, cb2])
Сочетание независимых функций и функций массива:
var cb0 = function (req, res, next) {
console.log('CB0')
next()
}
var cb1 = function (req, res, next) {
console.log('CB1')
next()
}
app.get('/example/d', [cb0, cb1], function (req, res, next) {
console.log('the response will be sent by the next function ...')
next()
}, function (req, res) {
res.send('Hello from D!')
})
Методы ответа
Методы объекта ответа (res
) в следующей таблице могут отправлять ответ клиенту и завершать цикл запрос-ответ. Если ни один из этих методов не вызывается из обработчика маршрута, клиентский запрос останется зависшим.
- res.download () → Запрашивать скачивание файла
2. res.end () → Завершить процесс ответа.
3. res.json () → Отправить ответ JSON.
4. res.jsonp () → Отправить ответ JSON с поддержкой JSONP.
5. res.redirect () → Перенаправить запрос.
6. res.render () → Визуализировать шаблон представления.
7. res.send () → Отправить ответы разных типов.
8. res.sendFile () → Отправить файл в виде потока октетов.
9. res.sendStatus () → Задайте код статуи ответа и отправьте его строковое представление в качестве тела ответа.
app.route ()
Вы можете создать цепные обработчики маршрута для пути маршрута с помощью app.route()
.
app.route('/book')
.get(function (req, res) {
res.send('Get a random book')
})
.post(function (req, res) {
res.send('Add a book')
})
.put(function (req, res) {
res.send('Update the book')
})
express.Router
Используйте класс express.Router
для создания модульных монтируемых обработчиков маршрутов. Экземпляр Router
- это законченное промежуточное программное обеспечение и система маршрутизации; по этой причине его часто называют «мини-приложением».
В следующем примере создается маршрутизатор как модуль, загружается в него функция промежуточного программного обеспечения, определяются некоторые маршруты и монтируется модуль маршрутизатора на пути в основном приложении.
Создайте файл маршрутизатора с именем birds.js
в каталоге приложения со следующим содержимым:
var express = require('express') var router = express.Router()
// middleware that is specific to this router router.use(function timeLog (req, res, next) { console.log('Time: ', Date.now()) next() }) // define the home page route router.get('/', function (req, res) { res.send('Birds home page') }) // define the about route router.get('/about', function (req, res) { res.send('About birds') })
module.exports = router
Затем загрузите модуль маршрутизатора в приложение:
var birds = require('./birds')
// ...
app.use('/birds', birds)
Обслуживание статических файлов
Для обслуживания статических файлов, таких как изображения, файлы CSS и файлы JavaScript, используйте express.static
встроенную функцию промежуточного программного обеспечения в Express.
Сигнатура функции:
express.static(root, [options])
Например, используйте следующий код для обслуживания изображений, файлов CSS и файлов JavaScript в каталоге с именем public
:
app.use(express.static('public'))
Промежуточное ПО
Промежуточное ПО - это функции, которые имеют доступ к объекту запроса (req
), объекту ответа (res
) и функции next
в запросе-ответе приложения. цикл. Функция next
- это функция в маршрутизаторе Express, которая при вызове выполняет промежуточное программное обеспечение, заменяющее текущее промежуточное программное обеспечение.
Функции промежуточного программного обеспечения могут выполнять следующие задачи:
- Выполните любой код.
- Внесите изменения в объекты запроса и ответа.
- Завершите цикл запрос-ответ.
- Вызов следующего промежуточного программного обеспечения в стеке.
Если текущая функция промежуточного программного обеспечения не завершает цикл запроса-ответа, она должна вызвать next()
, чтобы передать управление следующей функции промежуточного программного обеспечения. В противном случае запрос останется зависшим.
Экспортируйте функцию, которая принимает объект параметров или другие параметры, которые затем возвращают реализацию промежуточного программного обеспечения на основе входных параметров.
Файл: my-middleware.js
module.exports = function (options) {
return function (req, res, next) {
// Implement the middleware function based on the options object
next()
}
}
Теперь промежуточное ПО можно использовать, как показано ниже.
var mw = require('./my-middleware.js')
app.use(mw({ option1: '1', option2: '2' }))
Это все.
Ссылки
Пример Express« Hello World
Ниже приведено самое простое приложение Express, которое вы можете создать. Это однофайловое приложение - не то, что вы получите, если… expressjs.com »