


Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!
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!

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

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Cara memadam nod dengan nvm: 1. Muat turun "nvm-setup.zip" dan pasangkannya pada pemacu C 2. Konfigurasikan pembolehubah persekitaran dan semak nombor versi melalui arahan "nvm -v" 3. Gunakan "nvm arahan install" Pasang nod; 4. Padamkan nod yang dipasang melalui arahan "nvm uninstall".

Bagaimana untuk mengendalikan muat naik fail? Artikel berikut akan memperkenalkan kepada anda cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod saya harap ia akan membantu anda!

Artikel ini akan berkongsi dengan anda alat pengurusan proses Node "pm2", dan bercakap tentang mengapa pm2 diperlukan, cara memasang dan menggunakan pm2, saya harap ia akan membantu semua orang!

Penjelasan dan Panduan Pemasangan Terperinci untuk Pinetwork Nodes Artikel ini akan memperkenalkan ekosistem pinetwork secara terperinci - nod pi, peranan utama dalam ekosistem pinetwork, dan menyediakan langkah -langkah lengkap untuk pemasangan dan konfigurasi. Selepas pelancaran Rangkaian Ujian Blockchain Pinetwork, nod PI telah menjadi bahagian penting dari banyak perintis yang aktif mengambil bahagian dalam ujian, bersiap sedia untuk pelepasan rangkaian utama yang akan datang. Jika anda tidak tahu kerja pinet, sila rujuk apa itu picoin? Berapakah harga untuk penyenaraian? Penggunaan PI, perlombongan dan analisis keselamatan. Apa itu Pinetwork? Projek Pinetwork bermula pada tahun 2019 dan memiliki syiling pi cryptocurrency eksklusifnya. Projek ini bertujuan untuk mewujudkan satu yang semua orang boleh mengambil bahagian

Bagaimana untuk membungkus fail boleh laku nodejs dengan pkg? Artikel berikut akan memperkenalkan kepada anda cara menggunakan pkg untuk membungkus projek Node ke dalam fail boleh laku. Saya harap ia akan membantu anda!

npm node gyp gagal kerana versi "node-gyp.js" dan "Node.js" tidak sepadan Penyelesaiannya: 1. Kosongkan cache nod melalui "npm cache clean -f" 2. Melalui "npm install -. g n" Pasang modul n; 3. Pasang versi "nod v12.21.0" melalui arahan "n v12.21.0".

Pengesahan adalah salah satu bahagian terpenting dalam mana-mana aplikasi web. Tutorial ini membincangkan sistem pengesahan berasaskan token dan cara ia berbeza daripada sistem log masuk tradisional. Pada penghujung tutorial ini, anda akan melihat demo berfungsi sepenuhnya yang ditulis dalam Angular dan Node.js. Sistem Pengesahan Tradisional Sebelum beralih kepada sistem pengesahan berasaskan token, mari kita lihat sistem pengesahan tradisional. Pengguna memberikan nama pengguna dan kata laluan mereka dalam borang log masuk dan klik Log Masuk. Selepas membuat permintaan, sahkan pengguna di bahagian belakang dengan menanyakan pangkalan data. Jika permintaan itu sah, sesi dibuat menggunakan maklumat pengguna yang diperoleh daripada pangkalan data dan maklumat sesi dikembalikan dalam pengepala respons supaya ID sesi disimpan dalam penyemak imbas. Menyediakan akses kepada aplikasi tertakluk kepada

Apakah sistem log masuk tunggal? Bagaimana untuk melaksanakannya menggunakan nodejs? Artikel berikut akan memperkenalkan kepada anda cara menggunakan nod untuk melaksanakan sistem log masuk tunggal. Saya harap ia akan membantu anda!
