Restful 控制器
熟悉后端开发的,尤其是熟悉Spring
/Nest.js
的,应该对控制器这个概念不陌生。
在unioc
中,控制器是用来创建路由的,并且可以包含多个路由。
创建控制器
ts
import { Get, RestController } from 'unioc/web'
@RestController()
export class AppController {
@Get('/')
async index() {
return 'Hello World'
}
}
然后,在你的应用主入口中引用这个控制器:
ts
import { ExpressApp } from 'unioc/web-express'
// 引入控制器
import './app.controller'
async function bootstrap(): Promise<void> {
// 下面是你的App启动逻辑,比如你想创建一个Express应用
const app = new ExpressApp()
// 启动应用
await app.run(3000)
}
bootstrap()
上面是一个创建Express应用的示例,你也可以创建Koa应用,然后仅需要一个简单的导入语句引入到主入口,即可以被unioc
自动发现,并根据你的控制器自动创建路由。
与Vite
结合使用
unioc
与Vite
结合使用时,可以使用import.meta.glob
会非常方便,相当于变相地实现Spring
自动扫包@ComponentScan
类似的特性。
它是仅在Vite
中可用的特性,可以传入一个glob
路径,就无需手动引入控制器了。
ts
/// <reference types="vite/client" />
import { ExpressApp } from 'unioc/web-express'
// 这里的意思就是把 ./controllers 目录下的所有ts文件都自动引入进来,
// 这样就不用一个个import了,非常非常方便 ✨
import.meta.glob('./controllers/*.ts', { eager: true })
async function bootstrap(): Promise<void> {
// 下面是你的App启动逻辑,比如你想创建一个Express应用
const app = new ExpressApp()
// 启动应用
await app.run(3000)
}
bootstrap()
NOTE
import.meta.glob
文档请参考 Vite 官方文档。