Нет ни конца, ни начала, только бесконечная страсть к жизни.
- Публичный аккаунт WeChat"Полный стек JavaScript》
- Наггетс»Мастер единства》
- Видеопояснение: Билибили»Мастер единства》
Контент постоянно обновляется
вводить
Зачем изучать Nestjs
Я не знаю, слышали ли выJava
Несколько известных фреймворков на языке — SpringBoot, SpringMVC. Нельзя отрицать, что дизайнерские идеи этих фреймворков лидируют в области внутренних сервисов. какJavascript
Для тех из нас, кто в основном разрабатывает языки, мы также хотим иметь такие отличные и прогрессивные серверные фреймворки, хотя естьExpress
,Koa
,Egg
Другие серверные фреймворки, основанные на Nodejs, но ни один из них не является моим любимым, потому что мое программирование начального уровня заключается в использовании трех основных фреймворков Java.SSH.MVC
Это может быть идея разработки, которую может принять большинство разработчиков.Позвольте мне объяснить здесь, M (модель модели — это уровень данных), V (представление просмотра, теперь в основном отдельные проекты от внешнего и внутреннего интерфейса, а серверная часть предоставляет только интерфейс сервисы), C (Контроллер) Контроллер, который управляет распределением маршрутизации из внешних запросов и т. д.). Понимание этих трех пунктов является лишь основой.По мере того, как бизнес становится все более и более сложным, нам необходимо управлять все большим количеством данных, все более и более сложными операциями с базами данных и все более и более высокими требованиями к кэшированию производительности, мы можем стать беспомощными. Я думаю, как изящно управлять модулями проекта становится особенно важным.Nestjs
Именно такая структура помогает нам лучше развиваться. Давайте начнем учиться!
Основная идея Nestjs
Nest (NestJS) — серверный фреймворк на основе Nodejs, рекомендуется использоватьTypescriptРазработка (хотя разработка JavaScript также поддерживается). Благодаря этому фреймворку обучения мы можем не только открыть переднюю и внутреннюю разработку и супервайзеров, но и научиться, напримерOOP(Объектно-ориентированное программирование),FP(функциональное программирование),FRP(Функциональное реактивное программирование) идеи, помогают высокой зарплате.
Выбор Nestjs по умолчаниюExpress
В качестве базовой структуры службы вы также можете выбрать конфигурациюFastify
.
Установить
считаю использованнымVue
,React
илиAngular
Все наши ученики знакомы с инструментом для инициализации проектов. Nestjs также предоставляет инструмент для создания каркасов для всех. С помощью этого инструмента мы можем быстрее создавать проекты Nestjs. Давайте установим его.
npm i -g @nestjs/cli
Чтобы соответствовать версии, мы единообразно формулируем номер версии как:@6.14.0, команда установки
npm i -g @nestjs/cli@6.14.0
После завершения установки мы можем использовать команду справки, чтобы определить, успешно ли установлен инструмент создания лесов.Команда очень проста, как показано ниже.
nest -h
Если мы видим что-то вроде следующего, установка прошла успешно
Usage: nest <command> [options]
Options:
-v, --version Output the current version.
-h, --help Output usage information.
Commands:
new|n [options] [name] Generate Nest application.
build [options] [app] Build Nest application.
start [options] [app] Run Nest application.
generate|g [options] <schematic> [name] [path] Generate a Nest element.
Available schematics:
┌───────────────┬─────────────┐
│ name │ alias │
│ application │ application │
│ angular-app │ ng-app │
│ class │ cl │
│ configuration │ config │
│ controller │ co │
│ decorator │ d │
│ filter │ f │
│ gateway │ ga │
│ guard │ gu │
│ interceptor │ in │
│ interface │ interface │
│ middleware │ mi │
│ module │ mo │
│ pipe │ pi │
│ provider │ pr │
│ resolver │ r │
│ service │ s │
│ library │ lib │
│ sub-app │ app │
└───────────────┴─────────────┘
info|i Display Nest project details.
update|u [options] Update Nest dependencies.
add [options] <library> Adds support for an external library to your project.
На этом этапе вы не можете дождаться инициализации проекта для практики? Итак, давайте создадим проект
nest new nest-demo
Теперь просто подождите~ После завершения инициализации и установки запустите проект.
npm run start
Затем откройте браузер и введитеhttp://localhost:300, вы можете увидеть представленную нам страницу. Я закончил, а ты?
девять основных концепций
Посмотрев выступления и курсы многих людей, я обнаружил очень интересное правило: я хочу объяснять непонятные понятия, но аудитория действительно не может их понять. Простые и ясные понятия не хотят, чтобы слушатели чувствовали себя легко. публика была так же сбита с толку. Я не хочу этого делать, я думаю, что мой курс может начинаться с практики, постепенно углубляться и, наконец, объяснять принцип проектирования и реализацию фреймворка, но даже если я хочу сказать это ясно, мы не можем избежать многих понятий. Вместо того, чтобы запутываться с этими концепциями в нашей дальнейшей работе и исследовании, нам лучше избегать краткосрочной боли, чем краткосрочной боли, начиная с ключевых моментов.
Девять основных концепций проходят через разработку Nestjs, и только если вы глубоко понимаете эти основные концепции, вы можете создать отличный проект Nestjs, точно так же, как вопросы на собеседовании по Java в первые годы.JSP中九大内置对象
.
- Controllers
- Providers
- Modules
- Middleware
- Exception Filters
- Pipes
- Guards
- Interceptors
- Custom decorators
Controllers
Дословный перевод с английского: контроллер, контроль? Контролировать что?
Клиент подобен невежественному маленькому мальчику.Когда он увидит девушку, которая ему нравится, он выразит свою благодарность.Подарить ли вам карточку плохого мальчика или хорошего человека или относиться к нему с любовью, контроль находится в руках девушки . Запрос клиента, наконец, передается функции или модулю для обработки, которую необходимо предварительно обработать, и вызывается модуль, непосредственно обрабатывающий запрос клиента (маршрутизация, метод и т. д.).контроллер.@Controller
Providers
Английский дословный перевод: провайдер, обеспечить? Что предложить?
сцена первая:
Я: Дорогая, я хочу съесть шашлык.
Подруга: Так холодно, я не хочу этого делать.
Я: Я случайно увидел, что внизу открылся магазин.Моховое барбекю, попробовать.
Сценарий второй:
Я: Уважаемый, у нас в доме идет ремонт, вы можете быть главным дизайнером?
Жена: Я дизайнер пользовательского интерфейса! Это не дизайн интерьера, но у моего друга есть компания, которая занимается великолепным дизайном, не так ли?
Я: Хорошо, я буду изучать дизайн интерьера, а потом пойду работать к твоему другу.
Что мы можем увидеть из приведенных выше двух сценариев?подруга меня не любитНезависимо от того, что вы ищете, вы можете найти бизнес, который предоставляет услуги.провайдерДавайте предварительно определим некоторые сервисы для нашего последующего процесса разработки.@Injectable()
Украшенный класс.
Modules
Английский дословный перевод: модуль, когда модуль?
Из чего состоит джентльмен? мы можем думать оВерность, сыновняя почтительность, доброжелательность и праведность, Все эти четыре характеристики являются превосходными качествами, если их разобрать по отдельности, и вместе они становятся респектабельным джентльменом. Все модули, функции, сервисы и т. д. Nestjs — отличные люди, и они загружаются вместе, чтобы сформировать отличную сервисную архитектуру.@Module()
Украшенные классы для организации структуры приложения.
Middleware
Английский дословный перевод: серединадешевыйКусок, чья середина?
Посередине это середина клиента и обработки маршрутизации.Как мы упоминали ранее, маршрутизация передаетсяконтроллерОбработка, если мы хотим, чтобы запрос был обработан до того, как он достигнет контроллера или до того, как ответ будет отправлен клиентуrequest
иresponse
Выполнив некоторую обработку, вы можете использовать промежуточное программное обеспечение.В процессе определения промежуточного программного обеспечения есть очень важная функция -next()
, который определяет систему цикла запрос-ответ. упомянуть, вы знаетеKoa
луковая модель?
Немного утомительно все время говорить по-китайски, давайте вставим описание промежуточного ПО, данное официальным экспрессом.
Middleware functions can perform the following tasks:
- execute any code.
- make changes to the request and the response objects.
- end the request-response cycle.
- call the next middleware function in the stack.
- if the current middleware function does not end the request-response cycle, it must call
next()
to pass control to the next middleware function. Otherwise, the request will be left hanging.
Exception filters
Английский дословный перевод: фильтр исключений, кто фильтрует?
Когда в вашем проекте возникает исключение, но оно не обрабатывается в коде, исключение переходит на встроенный уровень обработки исключений Nestjs.Предварительно определив фильтры обработки исключений, мы можем реагировать на исключение более дружелюбно к внешнему интерфейсу. .
Pipes
Дословный перевод на английский язык: Есть ли разница между трубой и водопроводной трубой?
Студенты, которые использовали систему Linux, знаете ли вы маленькую команду bash?вертикальная полоса, У вас есть впечатление об этой команде?
ls | grep '*.js'
Перечислите файлы и папки в текущем каталоге, а затем отфильтруйте полученные результаты.Правило фильтрации должно удовлетворять суффиксу имени файла.js
документ. Благодаря этой операции мы можем почувствовать роль конвейера, и ее роль можно свести к следующим двум пунктам.
- конвертировать: преобразование ввода в желаемый результат
- проверять: проверить, удовлетворяет ли входное содержимое предопределенным правилам. Если проверка пройдена, он попадет в последующую операцию, в противном случае будет выдано исключение.
filter
иPipes
Этапы использования аналогичны, все до обработки запроса, но их обязанности очень разные, и их обязанности перечислены ниже.Мы представим подробные сценарии использования позже. трубы используются@Injectable()
украшенный и реализованныйPipeTransform
Класс интерфейса.
Guards
Английский дословный перевод: Охрана, охрана, кто?
Зачем нашим домам нужны ключи? Потому что мы не позволяем посторонним входить в нашу комнату. Некоторая обработка запросов в приложении не полностью открыта для всех пользователей, которые приходят с запросом.Только люди с указанными идентификаторами могут запрашивать определенные интерфейсы.Функциональный модуль, отвечающий за эту ответственность, называетсясторожить. Охранник используется@Injectable()
украшенный и реализованныйCanActivate
Класс интерфейса. небольшой намек
Guards are executed after each middleware, but before any interceptor or pipe.
Interceptors
Английский дословный перевод: Перехватчик, кто перехватывает? Зачем перехватывать, что делать, если перехватили?
Для сборочной линии, если процесс необходимо временно добавить в середине, его можно добавить и убрать одновременно.Мы обнаружили, что в настоящее время этот процесс является лишь временным добавлением и не относится к шагу в полная среда этой сборочной линии.Поэтому в этом процессе мы можем добавить, что он считается посторонним, и это не влияет на нашу существующую работу сборочной линии, но вместе с тем продукты, которые мы сейчас производим на сборочной линии, имеют тенденцию быть более индивидуальным. Мы врезаем этот процесс в существующую сборочную линию и называем эту практикулицом к лицу, конечно в мире программирования он известная идеяAspect Oriented Programming
(АОП) идея, т.е.Аспектно-ориентированное программирование, он имеет следующие преимущества
- Добавить дополнительную логику до/после выполнения существующей функции
- Преобразует значение, возвращаемое функцией, которое концептуально совпадает с
Pipes
похожий - Преобразует исключения, возникающие при запуске функции
- Вы можете наследовать поведение базовой функции и более элегантно комбинировать функции.
- переписать функцию
перехватчикиспользуется@Injectable()
украшенный и реализованныйNestInterceptor
Класс интерфейса.
Custom decorators
Английский дословный перевод: пользовательский декоратор
До этого было введено множество декораторов, таких как:@Injectable()
,@Module()
,@Controller
и т. д., и запросить соответствующие декораторы:@Get()
,@Post()
,@Param
Ждать.