App

App 是 Esmx 框架的应用抽象,提供了统一的接口来管理应用的生命周期、静态资源和服务端渲染。

entry.node.ts
1export default {
2  // 开发环境配置
3  async devApp(esmx) {
4    return import('@esmx/rspack').then((m) =>
5      m.createRspackHtmlApp(esmx, {
6        config(rc) {
7          // 自定义 Rspack 配置
8        }
9      })
10    );
11  }
12}

类型定义

App

1interface App {
2  middleware: Middleware;
3  render: (options?: RenderContextOptions) => Promise<RenderContext>;
4  build?: () => Promise<boolean>;
5  destroy?: () => Promise<boolean>;
6}

middleware

  • 类型: Middleware

静态资源处理中间件。

开发环境:

  • 处理源码的静态资源请求
  • 支持实时编译和热更新
  • 使用 no-cache 缓存策略

生产环境:

  • 处理构建后的静态资源
  • 支持不可变文件的长期缓存(.final.xxx)
  • 优化的资源加载策略
1server.use(esmx.middleware);

render

  • 类型: (options?: RenderContextOptions) => Promise<RenderContext>

服务端渲染函数。根据运行环境提供不同实现:

  • 生产环境(start):加载构建后的服务端入口文件(entry.server)执行渲染
  • 开发环境(dev):加载源码中的服务端入口文件执行渲染
1const rc = await esmx.render({
2  params: { url: '/page' }
3});
4res.end(rc.html);

build

  • 类型: () => Promise<boolean>

生产环境构建函数。用于资源打包和优化。构建成功返回 true,失败返回 false。

destroy

  • 类型: () => Promise<boolean>

资源清理函数。用于关闭服务器、断开连接等。清理成功返回 true,失败返回 false。