功能说明

代码创建是指通过编写代码从零构建 Widget 的方式,适用于对展示结构、交互逻辑和样式效果有较高定制需求的场景。

该方式具备更高的灵活性与可控性,适合具备一定前端或 Widget 开发经验的用户使用。

适用场景

  • 平台提供的 Widget 模板无法满足使用需求。

  • 需要实现复杂或高度定制化的展示与交互效果。

  • 使用者具备一定的代码开发能力,能够自行完成 Widget 创建。

操作步骤

您可以参考以下生成天气预报 Widget 的步骤进行创建:

1. 新建 Widget

在 Widget 开发页面单击新建 Widget,选择代码创建

2. 填写基础信息

输入 Widget 名称:天气预报,新建标签:天气、结果展示,单击确定,进入卡片预览界面。

3. 编辑代码

单击编辑,分别在Template、Schema、Default 界面编辑代码,生成 Widget ,单击确定,完成 Widget 的编辑。

  • Template 模块:定义天气预报 Widget 中组件的布局结构,主要使用了 Card 卡片、Title 标题、Icon 图标等组件,具体编辑方法可参见 Widget 组件

    <Card size="sm">  {/* 创建小尺寸卡片容器,作为Widget的主体框架 */}
        <Col gap={2}>  {/* 垂直布局容器,子元素间距为2个单位 */}
          {/* 标题区域 */}
          <Title value="明天天气" size="md" />  {/* 显示Widget标题,中等字号 */}
          
          {/* 位置和天气状态行 */}
          <Row gap={2}>  {/* 水平布局容器,子元素间距为2个单位 */}
            <Icon name="map-pin" size="sm" color="secondary" />  {/* 位置图标,小尺寸,次要颜色 */}
            <Text value={city} size="sm" color="secondary" />  {/* 城市名称,绑定city变量 */}
            <Spacer />  {/* 弹性空白区域,将后续元素推到右侧 */}
            <Badge label={condition} color="info" />  {/* 天气状况标签,绑定condition变量 */}
          </Row>
          
          {/* 温度信息行 */}
          <Row gap={2}>  {/* 水平布局容器,子元素间距为2个单位 */}
            <Text value={`温度 ${temp}°C`} size="sm" />  {/* 当前温度,使用模板字符串绑定temp变量 */}
            <Spacer />  {/* 弹性空白区域,将后续元素推到右侧 */}
            <Caption value={`最高 ${high}°C • 最低 ${low}°C`} />  {/* 最高最低温度,小号文本 */}
          </Row>
        </Col>
        
        <Divider />  {/* 分割线,分隔不同内容区域 */}
        
        {/* 穿衣建议区域 */}
        <Col gap={1}>  {/* 垂直布局容器,较小间距 */}
          <Caption value="穿衣建议" />  {/* 区域标题 */}
          <Text value={advice} size="sm" color="secondary" />  {/* 穿衣建议内容,绑定advice变量 */}
        </Col>
    </Card>
    
  • JSON Schema 模块:配置数据格式和变量类型。

    {
      "$schema": "https://json-schema.org/draft/2020-12/schema",  // 指定JSON Schema版本规范
      "type": "object",  // 根数据类型为对象
      "properties": {  // 定义对象的属性结构
        "city": {
          "type": "string"  // 城市名称,字符串类型
        },
        "condition": {
          "type": "string"  // 天气状况,字符串类型(如:晴天、多云、雨天等)
        },
        "temp": {
          "type": "string"  // 当前温度,字符串类型(包含单位,如:25°C)
        },
        "high": {
          "type": "string"  // 最高温度,字符串类型(包含单位)
        },
        "low": {
          "type": "string"  // 最低温度,字符串类型(包含单位)
        },
        "advice": {
          "type": "string"  // 穿衣建议,字符串类型(根据温度给出的建议文本)
        }
      },
      "required": [  // 必填字段列表,所有字段都是必需的
        "city",      // 城市名称必填
        "condition", // 天气状况必填
        "temp",      // 当前温度必填
        "high",      // 最高温度必填
        "low",       // 最低温度必填
        "advice"     // 穿衣建议必填
      ],
      "additionalProperties": false  // 禁止添加未定义的额外属性,确保数据结构严格
    }
    
  • Default 模块:填充变量数据作为示例。

    {
      city: '深圳',
      condition: '阴',
      temp: '14',
      high: '18',
      low: '10',
      advice: '建议穿着毛衣或厚外套,外出时携带雨具,关注气温变化。',
    }
    
  • Widget 效果预览如下: