于10月8日至10日加入我们,在纽约市了解关于GraphQL联邦和API平台工程的最新技巧、趋势和新闻。加入我们在纽约市举办的GraphQL Summit 2024
文档
免费开始

服务器驱动UI客户端设计

使用组件注册表和设计系统和标记来简化客户端逻辑

客户端服务器驱动UI

在服务器驱动UI(SDUI)中,客户端的目标是处理像素,而不是数据。客户端应简单地接收API提供的内容并在适当的位置呈现。

采用SDUI增量方式时,通常从文本和图像等基本UI元素开始。随着将更多逻辑,例如组件布局,转移到服务器,客户端可以有一组UI组件类型映射到特定平台。这允许客户端根据其平台呈现定制内容。

💡 提示

有关SDUI的一般信息,请参阅服务器驱动UI基础

组件注册表

一旦您的API对应用程序应渲染哪些组件有更多的控制,您需要定义从类型到UI等效组件的映射(例如React、SwiftUI、Jetpack等)。此映射称为组件注册表

以下代码片段包含一个简化的React组件注册器版本。

const {data} = useQuery(FeaturedProductsCollection);
// Maps GraphQL __typename to UI component
const TYPE_COMPONENTS = {
ProductList: ListComponent,
ProductCarousel: CarouselComponent,
ProductError: ErrorComponent
};
const component = TYPE_COMPONENTS[data.featuredProducts.__typename];
if (!component) {
throw new Error('Unknown Type Returned!');
}
renderComponent(component, data);

此代码片段使用(TYPE_COMPONENTS)注册器根据API响应的__typename动态渲染适当的UI组件。生成该响应的请求可能基于客户端输入,包括头部信息、用户信息,甚至前一次服务器响应的信息。

设计系统和令牌

客户端库也可能实现设计系统。虽然选择使用哪种网格格式或间距应保留在客户端,但API应控制其他选择,例如,根据用户状态或数据,徽章是红色还是绿色。

与在请求中返回徽章颜色之类的十六进制代码相比,最好使用基于令牌的设计系统,这样您可以更容易地更改颜色选择的业务逻辑。

消费此类响应的客户端不需要知道每个徽章的用途或其颜色;它只需要渲染徽章列表。

{
"badges": [
{
"text": "Loyalty members get a discount",
"theme": "brand-color:primary"
},
{
"text": "Inventory is low, buy now!",
"theme": "brand-color:warning"
}
]
}
下一个
首页
评论文章评分

©2024Apollo Graph Inc.,即Apollo GraphQL。

隐私政策

公司