entry-server.ts 1.1 KB

1234567891011121314151617
  1. /**
  2. * SSR 入口(只用于**对拍**,不是交付页面):给定与现网同一个 `/api/fleet` 数据,
  3. * 把工作台某页签渲染成 HTML 字符串,供 `tools/render_parity.mjs` 与重构前页面逐项比对。
  4. *
  5. * 为什么用 SSR 对拍:命令行里没有浏览器;SSR 走的正是同一套 Vue 组件与同一批渲染口径函数,
  6. * 能把"呈现一致"变成可自动判定的事实(文案/数值/类名序列/台号序列)。
  7. */
  8. import { createSSRApp } from 'vue'
  9. import { renderToString } from 'vue/server-renderer'
  10. import Workbench from './views/Workbench.vue'
  11. export async function renderTab(d: any, tab = 'overview', sub?: string | null, cms?: any, curves?: any, apis?: any): Promise<string> {
  12. // sub:页签内的**子视图**(如 vibration 的 matrix/loop/units/events/cms),对拍时两侧要给同一个
  13. // cms:cms 子视图按需异步取的数据(对拍时由对拍脚本提供,保证两侧同源)
  14. const app = createSSRApp(Workbench, { d, tab, sub: sub ?? null, cms: cms ?? null, curves: curves ?? null, apis: apis ?? null })
  15. return await renderToString(app)
  16. }