Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

青灯夜游
Lepaskan: 2022-03-04 11:06:34
ke hadapan
2632 orang telah melayarinya

Artikel ini akan bercakap tentang cara rangka kerja nod Nest.js menyepadukan Express dengan cara yang longgar, saya harap ia akan membantu anda.

Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

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.

Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

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:

Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

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:

Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

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.

Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

Kemudian express atau platform lain seperti fastify hanya perlu mewarisi kelas penyesuai dan melaksanakan kaedah abstraknya untuk menyambung ke Nest.js:

Sebagai contoh , ExpressAdapter:

Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

atau FastifyAdapter:

Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

Logik ini diletakkan dalam platform-express dan platform-fastify masing-masing Dalam pakej:

Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

Nest.js Baris pertama kod adalah untuk memanggil create:

Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

create akan memilih Gunakan httpAdapter untuk mencipta perkhidmatan:

1Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

Lalainya ialah ekspres:

1Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

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';
  }
}
Salin selepas log masuk

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';
  }
}
Salin selepas log masuk

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:

1Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

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:

1Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

Ilustrasi Nest.js pemprosesan http dan platform soket web:

1Mari kita bincangkan tentang cara rangka kerja nod Nest.js menyepadukan Express dengan gandingan longgar!

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!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan