node.js圈子裡新增Fastify web framework號稱throughput benchmark最高
想大致了解Fastify可以參考reaching-ludicrous-speed-with-fastify
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值得一試。