useApi
- 用于定义一个路由函数入口, 你可以传入一个指示器以及一个回调函数handler
函数签名
declare const useApi: <C extends ContextData>(params: {
instruct?: HttpInstructReturn | HttpInstructReturn[] | undefined;
handler: HttpApiHandler<C>;
}) => HttpApiReturn<C>;
栗子🌰
```typescript import { useApi } from ‘@swordjs/sword-framework’; import { ReqQuery, ReqParams, Res } from ‘./proto’;
export const main = useApi<{ query: ReqQuery; params: ReqParams; res: Res; }>({ handler: (ctx) => { return { message: ‘hello’ }; } });
> ps: useApi的更多demo你可以在[指示器](https://www.yuque.com/mlgrgm/lrf0ra/hr8g0g)中查阅到
<a name="PZx1K"></a>
## useApp
- 用户定义sword程序的初始化函数, useApp在内部会执行几个关键流程且返回一个app对象, 在对象中我们可以调用_start_, _implementApi等函数_
<a name="a9OX2"></a>
### 函数签名
```typescript
declare type AppReturn = {
implementApi: () => Promise<void>;
server: {
start: () => void;
};
};
declare const useApp: () => Promise<AppReturn>;
栗子🌰
import { useApp } from '@swordjs/sword-framework';
const init = async () => {
const app = await useApp();
await app.implementApi();
// 启动服务器
app.server.start();
};
init();
usePipeline
- 初始化pipeline管道的函数, 在返回的对象可以实现: 添加事件回调到指定管道中
函数签名
declare const usePipeline: <T extends HttpContext<ContextData> = HttpContext<ContextData>>() => (type: PipelineTypeKeys, cb: PipelineNode<T>) => void;
栗子🌰
```typescript import { usePipeline } from ‘@swordjs/sword-framework’;
const pipeline = usePipeline()
// node1 pipeline(‘preApiCall’, (ctx) => { ctx.return = { data: { success: true } } return ctx; })
// node2 pipeline(‘preApiCall’, (ctx) => { return null; })
// node3 pipeline(‘preApiCall’, (ctx) => { return null; })
> ps: usePipeline的更多demo你可以在[中间件](https://www.yuque.com/mlgrgm/lrf0ra/rz7wx1)中查阅到
<a name="FlRp9"></a>
## usePlugin
- 使用插件, 返回的对象可以实现添加插件的功能
<a name="Ym7pX"></a>
### 函数签名
```typescript
declare const usePlugin: () => {
add: (plugin: Plugin | (() => Plugin)) => Plugin[];
};
栗子🌰
import { useApp, usePlugin } from '@swordjs/sword-framework';
const plugin = usePlugin();
plugin.add(一个插件对象);
ps: usePlugin的更多demo你可以在插件系统中查阅到
useGetApiMap
- 用于sword中运行时所需要的抽象方法, 获取当前应用程序的api map树
函数签名
declare const useGetApiMap: (params?: {
dir?: string | undefined;
apiDir?: string | undefined;
apiPath?: string | undefined;
} | undefined) => Promise<{
apiMap: Record<string, Map>;
}>;
栗子🌰
```typescript import { useGetApiMap } from ‘@swordjse/sword-framework’;
const { apiMap } = await useGetApiMap()
<a name="NYsxI"></a>
## usePlatform
- 获取当前运行时环境
<a name="XSGnt"></a>
### 函数签名
```typescript
type CommandConfig = {
platform: 'server' | 'unicloud';
};
declare const usePlatform: () => CommandConfig['platform'];
栗子🌰
const platform = usePlatform()
// platform 此时就是运行时环境, 你可以在代码中编写多平台的代码
usePlatformHook
我们在编写多平台的代码时, 会有大量的判断运行时环境, 所以这个hook将帮助你写出更优雅的代码, 我们只需要传给这个函数对应的回调, 它就可以在对应平台之上执行对应的回调
函数签名
declare const usePlatformHook: <R = any>(params: Partial<Record<"server" | "unicloud", () => R | Promise<R>>>, platform?: "server" | "unicloud") => Promise<R | undefined>;
栗子🌰
await usePlatformHook({
server: () => {
},
unicloud: () => {
}
})
ps: 我们也可以传递函数的的第二个参数, 即强指定当前运行时环境, 而不是函数默认获取