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) в следующей таблице могут отправлять ответ клиенту и завершать цикл запрос-ответ. Если ни один из этих методов не вызывается из обработчика маршрута, клиентский запрос останется зависшим.

  1. 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 »