


Artikel ini akan bercakap tentang cara rangka kerja nod Nest.js menyepadukan Express dengan cara yang longgar, saya harap ia akan membantu anda.
Nodejs menyediakan modul http untuk mendengar port, memproses permintaan http dan membalas respons, yang merupakan perkara utama yang dilakukannya.
Walau bagaimanapun, api modul http terlalu primitif, dan menyusahkan untuk memproses respons permintaan secara langsung berdasarkannya, jadi kami akan merangkumnya dengan perpustakaan seperti ekspres.
Apa yang dilakukan oleh lapisan ini ialah menambahkan banyak kaedah pemprosesan permintaan dan tindak balas kepada permintaan dan tindak balas untuk memenuhi keperluan pelbagai senario, dan mengendalikan penghalaan, dan juga menyediakan rantaian panggilan perisian tengah Untuk memudahkan penggunaan semula beberapa kod, rantai panggilan middleware ini dipanggil model bawang.
Tetapi lapisan ini tidak menyelesaikan masalah seni bina: apa yang perlu dilakukan apabila terdapat terlalu banyak modul dan bagaimana untuk menguruskannya? Bagaimana untuk membahagikan Model, Pandangan dan Pengawal? dll.
Jadi, apabila menggunakan Node.js untuk perkhidmatan back-end, kami akan memasukkan lapisan lain untuk menyelesaikan masalah seni bina Rangka kerja pada lapisan ini termasuk eggjs (semut), midwayjs (Taobao), nestjs (asing). ).
nestjs ialah salah satu yang terbaik:
Lapisan ini Bahagian bawah lapisan adalah ekspres, koa, dll. Ia hanya menyelesaikan masalah seni bina tambahan berdasarkan rangka kerja http tersebut.
Dan nestjs melakukan satu perkara dengan baik. Ia tidak bergantung pada mana-mana platform http dan boleh ditukar secara fleksibel.
Jadi, bagaimanakah nestjs mencapai penukaran platform asas?
Fikirkan tentang bagaimana tindak balas menyebabkan vdom kepada kanvas, dom dan asli?
Tentukan antara muka bersatu, dan logik pemaparan pelbagai platform melaksanakan antara muka ini. Mod ini dipanggil mod penyesuai.
Mod penyesuai bermaksud bahawa apabila menggunakan fungsi yang dilaksanakan oleh pihak ketiga, ia tidak bergantung secara langsung padanya, tetapi mentakrifkan lapisan antara muka untuk membolehkan pihak ketiga menyesuaikan diri dengan lapisan antara muka ini . Dengan cara ini, sebarang penyelesaian yang menyesuaikan diri dengan lapisan antara muka ini boleh disepadukan dan penyelesaian boleh ditukar secara fleksibel.
Nest.js menyediakan lapisan antara muka (HttpServer) kepada platform http asas dan mentakrifkan sekumpulan kaedah:
Oleh kerana antara muka daripada ts mesti melaksanakan semua kaedah, untuk memudahkannya, ia mewarisi kelas abstrak AbstractHttpAdapter dan mentakrifkan kaedah yang perlu dilaksanakan sebagai abstrak.
Kemudian express atau platform lain seperti fastify hanya perlu mewarisi kelas penyesuai dan melaksanakan kaedah abstraknya untuk menyambung ke Nest.js:
Sebagai contoh , ExpressAdapter:
atau FastifyAdapter:
Logik ini diletakkan dalam platform-express dan platform-fastify masing-masing Dalam pakej:
Nest.js Baris pertama kod adalah untuk memanggil create:
create akan memilih Gunakan httpAdapter untuk mencipta perkhidmatan:
Lalainya ialah ekspres:
Dengan cara ini, permintaan dan respons kaedah dipanggil kemudian Pada akhirnya, semuanya nyata.
Sebagai contoh, dalam pengawal, anda boleh menggunakan penghias @Request untuk menyuntik objek reqeust, dan kemudian anda boleh memanggil pelbagai kaedah reqeust.
import { Controller, Get, Request } from '@nestjs/common'; @Controller('cats') export class CatsController { @Get() findAll(@@Request() request: Request): string { return 'This action returns all cats'; } }
Jika anda ingin memanggil beberapa kaedah khusus platform di luar antara muka, Nest.js turut menyokongnya, kemudian gunakan @Req sebaliknya untuk menyuntik:
import { Controller, Get, Req } from '@nestjs/common'; @Controller('cats') export class CatsController { @Get() findAll(@@Req() request: Request): string { return 'This action returns all cats'; } }
Suntikan seperti ini Ia adalah objek permintaan asli bagi platform tertentu seperti ekspres, dan semua kaedahnya boleh digunakan secara langsung.
Selain itu, jika anda benar-benar mahu menggunakan API khusus platform Express, anda boleh menentukan parameter jenis yang sepadan apabila NestFactory.create, supaya anda boleh melakukan pembayang dan semakan jenis yang sepadan:
Walau bagaimanapun, ini akan digabungkan dengan platform tertentu Melainkan anda pasti bahawa anda tidak akan menukar platform, adalah tidak disyorkan untuk melakukan ini.
Platform http melakukan ini, dan begitu juga, platform websocket melakukan perkara yang sama:
mentakrifkan antara muka bersatu yang menghubungkan socketio dan websocket masing-masing melalui penyesuai, yang boleh ditukar secara fleksibel:
Ilustrasi Nest.js pemprosesan http dan platform soket web:
Ringkasan
Node.js menyediakan modul http untuk memantau port dan memproses respons permintaan, tetapi APInya terlalu primitif, jadi kami akan memasukkan satu lapisan dan menyediakan lebih banyak permintaan dan tindak balas API pada lapisan ekspres, tetapi Lapisan ini tidak menyelesaikan masalah seni bina , IOC dan seni bina lain, lapisan lain perlu disertakan, menggunakan rangka kerja bahagian belakang peringkat lebih tinggi seperti Egg.js, Midway.js dan Nest.js, antaranya Nest.js adalah yang terbaik.
Nest.js telah membuat reka bentuk khas untuk disepadukan dengan platform http asas Ia menggunakan mod penyesuai untuk menyediakan lapisan antara muka untuk platform asas untuk disesuaikan, supaya platform http yang berbeza boleh ditukar secara fleksibel. .
Tetapi ia juga menyokong penggunaan API khusus platform Contohnya, anda boleh menggunakan @Req untuk menyuntik objek permintaan asas dalam pengawal, dan anda juga boleh memasukkan parameter jenis platform yang sepadan apabila. mencipta bekas.
Nest.js menggunakan Express secara lalai, tetapi tidak betul sepenuhnya untuk mengatakan bahawa Express digunakan, kerana anda boleh bertukar kepada orang lain secara fleksibel. Inilah keindahan corak penyesuai.
Untuk lebih banyak pengetahuan berkaitan nod, sila lawati: tutorial nodejs!
Atas ialah kandungan terperinci Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

node、nvm与npm的区别:1、nodejs是项目开发时所需要的代码库,nvm是nodejs版本管理工具,npm是nodejs包管理工具;2、nodejs能够使得javascript能够脱离浏览器运行,nvm能够管理nodejs和npm的版本,npm能够管理nodejs的第三方插件。

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

node导出模块的两种方式:1、利用exports,该方法可以通过添加属性的方式导出,并且可以导出多个成员;2、利用“module.exports”,该方法可以直接通过为“module.exports”赋值的方式导出模块,只能导出单个成员。

安装node时会自动安装npm;npm是nodejs平台默认的包管理工具,新版本的nodejs已经集成了npm,所以npm会随同nodejs一起安装,安装完成后可以利用“npm -v”命令查看是否安装成功。

node中没有包含dom和bom;bom是指浏览器对象模型,bom是指文档对象模型,而node中采用ecmascript进行编码,并且没有浏览器也没有文档,是JavaScript运行在后端的环境平台,因此node中没有包含dom和bom。

本篇文章带大家聊聊Node.js中的path模块,介绍一下path的常见使用场景、执行机制,以及常用工具函数,希望对大家有所帮助!


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini