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
静态资源处理中间件。
开发环境:
- 处理源码的静态资源请求
- 支持实时编译和热更新
- 使用 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。