iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 30
0
Modern Web

讀官網文件邊走邊學nest.js系列 第 30

Day30 Fastify Adapter及30天總結與後續

使用fastify adapter

node.js圈子裡新增Fastify web framework號稱throughput benchmark最高

想大致了解Fastify可以參考reaching-ludicrous-speed-with-fastify

benchmark參考連結

nestjs default是用express作為base,nestjs在5.x版後新增Fastify Adapter

只要安裝fastify及fastify-formbody,就可以用到Fastify較快的parse json的能力

把api server跑起來看看是否可以無縫接軌

修改main.ts

// src/main.ts
const app = await NestFactory.create(AppModule, new FastifyAdapter());

  ...
  app.listen(3000);

yarn start:dev

結果Swagger Module部分就有問題,上網google一下,討論沒有很多,其中之一

Github issue-A use SwaggerModule with FastifyAdapter

因為nestjs Swagger Module使用swagger-ui-express套件

改用fastify,會有不相容問題,

另外nestjs default file upload功能也是基於express的套件(multer),

nestjs的FileInterceptor只相容multer,迄今nestjs上未出相容fastify的FileInterceptor,

即便安裝fastify-multipart,也無法依照官網的文件說明實作上傳功能

不過一般的request/response是OK的

或許v6支援會更好吧~

一般CRUD及JWT Authentication都可以正常運作


總結

只要有Angular基礎及任一web framework的開發經驗(ASP.NET MVC、Spring MVC...),按照nestjs官網及typeorm的文件,,在不了解Express下,30天內利用下班時間要實做出一個REST API Server真的不困難,在Dependency Injection概念與Angular幾乎一模一樣、大量使用語意化的Decorators(@UsePipes、@UseGuards),大幅降低入門門檻,我會在未來的小型專案上開始導入試試看,推薦給有Angular的基礎的朋友,可以試試看。

與資料庫互動部分,TypeORM也讓我覺得很直觀,裡面用的關鍵字高度與Java裡的Hiberneate相似,migration觀念也與Entityframework相似,Event Listener與Subscriber也是讓我覺得特別的feature,建立Query上還是C#的LINQ比較強大
,同時也比較不容易有'magic string'的容易打錯字的情況,如果你在node.js還沒用過ORM,TypeORM值得一試。

後續

30天期間有幾個主題沒搞很懂
30天了解概念、沒實作部分
30天內遺漏部分
30天後覺得可以多了解一點的部分
推薦的使用nestjs專案

上一篇
Day29 用nestjs建立API Microservice(下)-REDIS、NATS as Messaging System
下一篇
Day31 Cache Http Request-使用Cache Module
系列文
讀官網文件邊走邊學nest.js31

尚未有邦友留言

立即登入留言