主程序

每个程序都会有一个主程序对象,每种运行环境都会至少有一个对应的主程序类,派生自 Startup

你可以在这个主程序对象添加插件和中间件

文档中的 startup 均表示主程序实例对象,但并不特指运行环境

为了让 halsp 能够在各类生产环境中使用,Startup 类设计的较为开放,在 ts 中是个抽象类

因此该类不能直接使用,需要定义派生类,每种运行环境都有对应的 Startup 派生类

运行环境

Halsp 提供了多种运行环境

目前已支持的运行环境参考 运行环境介绍

startup.ts

为了能够使用 @halsp/cli 便捷调试,在 src 下需要有 startup.ts 文件,导出一个默认回调函数,内容如

// startup.ts
import "@halsp/inject";
import "@halsp/router";

export default function <T extends Startup>(startup: T, mode?: string) {
  return startup
    .use(async (ctx, next) => {
      ctx.res.setHeader("mode", mode ?? "");
      await next();
    })
    .useInject()
    .useRouter();
}

mode 参数值为 @halsp/clibuildstart 命令传入的 --mode 参数,如 developmentproduction

单元测试

@halsp/testing 提供了 TestStartup ,TestNativeStartup 等类 ,方便用于单元测试

TestStartup 类没有任何运行环境

TestNativeStartup 类是原生 NodeJS 运行环境

更多内容转至 单元测试