Внедрение некоторых передовых методов на ранней стадии создания проекта может помочь избежать большого количества сложной работы по рефакторингу на более позднем этапе.Эта статья обобщает некоторые передовые методы использования Node JS для создания веб-сервисов и включает конкретные этапы работы.
1. Используйте скаффолдинг инициализации
Так называемый скаффолдинг означает, что при инициализации базы кода скаффолдинг может помочь автоматически сгенерировать некоторый код и структуру проекта, а также внедрить некоторые фреймворки. Для проекта NodeJS нам не нужно шаг за шагом устанавливать некоторые зависимости от инициализации npm init.
Экспресс-команды
Express — самый популярный веб-фреймворк NodeJS. Установите глобально экспресс-генератор для инициализации экспресс-проекта.
-
Глобальная команда установки:
npm install express-generator -g
-
Создайте новый с именемhello-expressпроект:
express hello-express
Использование строительных лесов Swagger
При разработке веб-API с помощью NodeJS настоятельно рекомендуется использоватьSwaggerСоздавайте API и управляйте ими, а также предоставляйте услуги по документации API. Глобальная установка команды swagger также может инициализировать проект swagger. Команда swagger позволяет редактировать определение API и отлаживать API прямо в браузере в режиме реального времени.
Инициализировать проект чванства
- Команда установки:
npm install swagger -g
- Создайте новый проект API Swagger:
swagger project create hello-swagger
, в этом процессе вас спросят, какой веб-сервер использовать, и экспресс-инфраструктура может быть автоматически введена при выборе экспресс - Структура проекта:
.
├── README.md
├── api
│ ├── controllers
│ │ ├── README.md
│ │ └── hello_world.js
│ ├── helpers
│ │ └── README.md
│ ├── mocks
│ │ └── README.md
│ └── swagger
│ └── swagger.yaml
├── app.js
├── config
│ ├── README.md
│ └── default.yaml
├── package-lock.json
├── package.json
└── test
└── api
├── controllers
│ ├── README.md
│ └── hello_world.js
└── helpers
└── README.md
Живое редактирование и проверка грамматики
- Начать онлайн-редактирование:
swagger project edit
, В это время будет открыт системный браузер, и документ swagger можно будет редактировать непосредственно в браузере, и будет выполняться проверка синтаксиса в реальном времени. В то же время изменения редактирования в браузере будут записаны обратно к коду.
API онлайн-отладки
Правая часть приведенного выше рисунка аналогичнаpostman
Инструмент отладки API.
2. Служба документов Swagger
Swagger — один из самых популярных инструментов построения и управления API, имеет соответствующие библиотеки на разных языках и фреймворках, в то же время установлено расширение swagger-ui для управления документами API и онлайн-отладки. следуетСтандарт OpenAPI, OpenAPI определяет набор спецификаций API, таких как маршрутизация, определение параметров и проверка.
- Документ спецификации OpenAPI:swagger.IO/конкретная ATI…
- Предварительная версия онлайн-редактора API:editor.swagger.io
Публикация документации по чванству
Приведенная выше команда swagger подходит для локального редактирования и отладки. Когда служба документов публикуется в производственной среде, она подходит для внедрения промежуточного программного обеспечения пользовательского интерфейса swagger.
app.use(SwaggerUi(swaggerExpress.runner.swagger));
доступhttp://localhost:10010/docs/#/Вы можете просмотреть документацию по API:
-
онлайн просмотр:petstore.swagger.io/
-
Полный код выглядит следующим образом:
SwaggerExpress.create(config, function (err, swaggerExpress) {
if (err) {
throw err;
}
// install middleware
app.use(SwaggerUi(swaggerExpress.runner.swagger));
swaggerExpress.register(app);
const port = 10010;
app.listen(port);
if (swaggerExpress.runner.swagger.paths['/hello']) {
console.log('try this:\ncurl http://127.0.0.1:' + port + '/hello?name=Scott');
}
});
3. Включите синтаксис ES6 JS
ECMAScript — это языковой стандарт для JS, а ES6 — новый стандарт синтаксиса JS. Использование синтаксиса ES6 без другой настройки приведет к следующей ошибке. Нам нужно ввести babel для преобразования синтаксиса.
import SwaggerExpress from 'swagger-express-mw';
^^^^^^^^^^^^^^
SyntaxError: Unexpected identifier
at Module._compile (internal/modules/cjs/loader.js:760:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:827:10)
что такое бабель
Babel — это компилятор JavaScript, набор инструментов, в основном используемый для преобразования кода версии ECMAScript 2015+ в обратно совместимый синтаксис JavaScript, чтобы его можно было запускать в текущих и более старых версиях браузеров или других средах. Для получения дополнительной документации см.:www.babeljs.cn/docs/
Как настроить?
- Установите зависимости:
npm install -D @babel/core @babel/cli @babel/preset-env @babel/node
- Создайте файл .babelrc в корневом каталоге со следующим содержимым
{
"presets": ["@babel/preset-env"]
}
- Используйте команду babel-node вместо node
"scripts": {
"start": "npm run prod",
"server": "node ./app.js" // -> "babel-node ./app.js"
}
Что делать с существующими проектами, отличными от ES6?
Установите модуль npmcjs-to-es6
Можно выполнить несколько простых преобразований синтаксиса ES6:
npm install -g cjs-to-es6
использованная литература
- www.babeljs.cn/docs/
- Как включить синтаксис ES6 (и выше) с помощью Node и Express:medium.free код camp.org/how-to-well папа…
4. Отслеживайте изменения файлов и автоматически перезапускайте службу
Каждый раз, когда мы изменяем код, нам нужно перезапустить Express, чтобы увидеть эффект.nodemon
Это может помочь нам автоматически перезапустить службу после изменения указанного файла для повышения эффективности разработки.
- Установите нодмон:
npm i -D nodemon
- Добавьте файл конфигурации nodemon.json в корневой каталог:
{
"exec": "npm run dev",
"watch": ["src/*", "public/*"],
"ext": "js, html, css, json"
}
- Дополнительные настройки см. в документации:GitHub.com/Remy/нет демо…
5. Используйте ES Lint для сканирования в стиле кода
ES Lint — это инструмент сканирования стиля кода, особенно в командной разработке, он может помочь нам стандартизировать наш стиль кода и обеспечить интеграцию с IDE для исправления ошибок кода.
- установить эслинт
npm i -D eslint
- Справочная документация:ESL int.org/docs/user —…
6. Инициировать указанное действие при отправке кода
Часто бывают сценарии, когда непрерывная интеграция требует от нас прохождения тестов локально перед фиксацией кода. В это время мы можем зарегистрировать «крючок» для локального запуска теста перед отправкой кода.Если тест не пройден, отправка не допускается. затем используйтеhusky
Это требование может быть:
- хаски документация:GitHub.com/та же партия о/ху…
Пример 1: Запуск тестов перед git push
"husky": {
"hooks": {
"pre-push": "npm run coverage && npm run pact:test"
}
},
Пример 2. Запуск проверки стиля кода и автокоррекция перед git commit
"husky": {
"hooks": {
"pre-commit": "npm lint"
}
},
7. Включите сжатие Gzip, чтобы повысить скорость отклика службы.
Включение сжатия gzip может значительно повысить скорость доступа HTTP-сервисов, установитьcompression
Промежуточное программное обеспечение может быть включено очень удобно.
import compression from 'compression';
...
app.use(compression());