首页
/ Hypernova客户端规范详解:从请求构建到生命周期管理

Hypernova客户端规范详解:从请求构建到生命周期管理

2025-07-07 08:11:02作者:龚格成

什么是Hypernova客户端

Hypernova是一个服务端渲染解决方案,它允许开发者在Node.js服务器上渲染JavaScript组件。客户端规范定义了如何与Hypernova服务进行交互,包括请求构建、错误处理和生命周期管理等关键环节。

核心请求流程

1. 视图数据准备阶段

首先,客户端需要为每个视图调用getViewData(name, data)方法:

  • 这个方法接收视图名称和初始数据
  • 返回值将作为Jobs对象中对应视图的data字段值
  • 这一步允许在发送请求前对视图数据进行预处理或转换

2. 请求准备阶段

接下来调用prepareRequest(currentJobs, originalJobs)方法:

  • 这是一个reducer类型的函数
  • 接收当前Jobs对象和原始Jobs对象
  • 返回值将成为新的Jobs对象
  • 可以在此阶段对请求数据进行聚合或过滤

3. 请求发送决策

调用shouldSendRequest(jobs)方法决定是否发送请求:

  • 如果返回false,则创建响应对象
  • 响应对象的html属性使用客户端渲染的备用输出
  • error属性设为null
  • 这个机制可以用于实现请求缓存或条件渲染

4. 请求发送阶段

调用willSendRequest(jobs)方法:

  • 这是一个事件类型的函数
  • 在HTTP POST请求发送前被调用
  • 可以在此处添加日志记录或性能监控

错误处理机制

在任何阶段发生错误时:

  1. 创建响应对象
  2. error属性设置为抛出的错误
  3. html属性使用客户端渲染的备用输出
  4. 调用onError(error, jobs)进行错误处理

响应处理流程

当从服务器收到响应后:

  1. 遍历响应,对每个包含错误的job调用onError(error, job)
  2. 确保每个job都有html字段且为字符串类型
  3. 如果没有HTML则使用客户端渲染的备用输出
  4. 调用onSuccess(response, jobs)处理成功响应
  5. 调用afterResponse(currentResponse, originalResponse)进行响应后处理

URL构建与请求格式

URL构建规则

Hypernova服务的URL由以下部分组成:

  • 主机地址(HOST):运行Hypernova服务的主机,本地测试通常为localhost
  • 端口号(PORT):Hypernova服务配置的端口
  • 路径:固定为/batch

完整URL示例:http://localhost:3030/batch

请求体格式

POST请求体应包含Jobs对象,格式如下:

{
  "组件名称": {
    "name": "组件名称",
    "data": {
      // 组件属性数据
      "prop1": true,
      "prop2": ["值1", "值2"]
    }
  }
}

插件生命周期API详解

数据转换API

getViewData(viewName: string, data: any): any

  • 允许修改视图接收的数据
  • 在请求发送前对特定视图数据进行转换

请求处理API

prepareRequest(currentJobs: Jobs, originalJobs: Jobs): Jobs

  • 请求准备阶段的reducer函数
  • 可以对Jobs对象进行整体修改

响应处理API

afterResponse(currentResponse: any, originalResponse: Response): any

  • 响应处理阶段的reducer函数
  • 允许对原始响应进行转换后再使用

事件回调API

onSuccess(response: any, jobs: Jobs): void

  • 请求成功时触发
  • 适合用于性能监控或成功日志记录

onError(err: Error, jobs: Jobs): void

  • 任何错误发生时触发
  • 应该实现健壮的错误处理逻辑

最佳实践建议

  1. getViewData中实现数据标准化,确保不同环境下的数据一致性
  2. 利用prepareRequest实现请求数据的压缩或敏感信息过滤
  3. shouldSendRequest中实现请求缓存,避免不必要的服务端渲染
  4. afterResponse中添加响应数据的验证逻辑
  5. 在错误处理中确保总有可用的客户端渲染备用方案

通过遵循这些规范,开发者可以构建出健壮的Hypernova客户端,实现高效可靠的服务端渲染流程。