iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
Modern Web

Fastify 101系列 第 4

[Fastify] Day04 - Fastify-CLI

  • 分享至 

  • xImage
  •  

大家好,我是 Yubin

本篇介紹利用 Fastify 官方團隊的 CLI 工具: Fastify-CLI 來快速建立 Fastify 專案

安裝

npm i -g fastify-cli

加上 -g 的參數,以全域的方式安裝 fastify-cli

建立專案

假設要建立的專案名為 my-app,開啟 terminal 敲入以下指令

fastify generate my-app --lang=typescript

fastify-cli 會建立好專案目錄及基本的檔案,--lang=typescript 代表使用的是 TypeScript 的專案樣板。(開發 Fastify 的應用程式當然要用 TypeScript)

產生的專案檔案如下

.
├── package.json
├── package-lock.json
├── README.md
├── src
│   ├── app.ts
│   ├── plugins
│   │   ├── README.md
│   │   ├── sensible.ts
│   │   └── support.ts
│   └── routes
│       ├── example
│       │   └── index.ts
│       ├── README.md
│       └── root.ts
├── test
│   ├── helper.ts
│   ├── plugins
│   │   └── support.test.ts
│   ├── routes
│   │   ├── example.test.ts
│   │   └── root.test.ts
│   └── tsconfig.json
└── tsconfig.json

src/app.ts 是整個專案的進入點。

routes/plugins/ 目錄,分別放置 route 及 plugin 的定義,預設會透過 @fastify/autoload 這個工具,把兩個目錄中的所有檔案註冊進 server 中。

test/ 目錄,放置整個專案的測試檔,測試框架使用 tap

接著進入該目錄,安裝相依套件

cd my-app
npm i

該專案預先建立了一些 scripts 方便開發者使用

  • npm start,編譯當前 .ts 檔案,並透過 node 執行編譯出來的 dist/app.js
  • npm run dev,開發模式,會偵測檔案的變更,自動觸發編譯重新執行
  • npm run test,執行所有的測試

執行專案

使用 npm start

會看到有一個預設的 log: Server listening at http://127.0.0.1:3000

https://ithelp.ithome.com.tw/upload/images/20220919/20151148rEGlwaOXxv.jpg

Fastify 預設會把 port 開在 3000 port,且只會聽來自 127.0.0.1 的請求。

可以打開瀏覽器,瀏覽 localhost:3000

https://ithelp.ithome.com.tw/upload/images/20220919/20151148zNa3v1FhqK.jpg

新增 route

可以參考 routes/example/index.ts 的範例

新增一個 routes/hello.ts

import { FastifyPluginAsync } from 'fastify'

const hello: FastifyPluginAsync = async (fastify, opts): Promise<void> => {
  fastify.get('/hello', async function (request, reply) {
    return { message: 'Hello World' }
  })
}

export default hello

執行 npm startnpm run dev,打開瀏覽器瀏覽 localhost:3000/hello

https://ithelp.ithome.com.tw/upload/images/20220919/20151148GRK1twH2Hn.jpg

以上為透過 fastify-cli 快速建立專案的方法。

好處是可以快速獲得一個結構完整的專案,但很多東西由於不是自己控制的 (走預設值),或 fastify-cli 把一些實作包起來了 (魔法),不熟悉的朋友可能需要多花一些時間看文件。

以上完整專案可以參考這邊


上一篇
[Fastify] Day03 - Hello World
下一篇
[Fastify] Day05 - HTTP Header
系列文
Fastify 10130
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言