原生小程序开发|小程序卡片(Widget) 开发指南

news2024/10/8 18:20:16

开发

Widget 代表应用的一个小程序卡片,负责小程序卡片的展示和交互。

小程序卡片(Widget) 的开发在智能小程序的基础上增加一个目录即可,用于存放小程序卡片(Widget)的代码。并在 project.tuya.json 中增加一个声明。

 

创建小程序卡片(Widget)项目

在 Tuya MiniApp Tools 中, 新建项目并选择小程序卡片(Widget)对应模板即可自动创建小程序卡片(Widget)项目。

工程配置

1. project.tuya.json 中声明小程序卡片(Widget)开发目录
{
  "projectname": "widget-demo",
  "i18n": true,
+ "miniprogramRoot": "app/",  ## 小程序源码
+ "widgetRoot": "widget/",    ## 小程序卡片(Widget)源码
  "baseversion": "2.10.12",
  "compileType": "widget",
  "dependencies": {
    "BaseKit": "3.0.0",
    "MiniKit": "3.0.0",
    "BizKit": "3.0.1"
  }
}

注:小程序文件迁移到 app 目录下。

  • 在小程序项目内新增 widget 目录, 项目整体目录结构如下:
├── package.json
├── project.tuya.json
├── app
│     ├── app.js
│     ├── app.json
│     ├── app.tyss
│     ├── assets
│     ├── i18n
│     ├── components
│     ├── pages
│     │     └── home
│     │         ├── index.json
│     │         ├── index.tyss
│     │         ├── index.tyml
│     │         ├── index.js,ts
│     │         └── index.rjs
│     └── theme.json
├── widget
│     ├── assets
│     ├── cards
│     │   └── weather
│     │       ├── index.json
│     │       ├── index.tyss
│     │       ├── index.tyml
│     │       ├── index.js,ts
│     │       └── index.rjs
└─────└── widget.json

2. widget.json 文件描述当前小程序卡片(Widget)的信息

填写的小程序卡片路径"cards/weather/index"需要填写在开发者平台小程序卡片路径一栏。

{
  widgets: ['cards/weather/index', '...'];
}

可声明多个小程序卡片(Widget).

 

3. 创建小程序卡片(Widget)页面文件

每个小程序卡片(Widget)对应一个子目录,一般有多少个小程序卡片(Widget),就有多少个子目录。

每个小程序卡片(Widget)一般包含四个文件。

  • [WidgetPath].ts:注册小程序卡片(Widget)
  • [WidgetPath].tyml:小程序卡片(Widget)结构
  • [WidgetPath].tyss:小程序卡片(Widget)样式
  • [WidgetPath].json:小程序卡片(Widget)配置
  • [WidgetPath].rjs:小程序卡片(Widget)渲染脚本文件(可选)
widget
├── cards
│   └── home
│       ├── index.json
│       ├── index.tyss
│       ├── index.tyml
│       ├── index.ts
│       └── index.rjs
└── widget.json

小程序卡片(Widget)项目配置

  • size: 小程序卡片(Widget)的尺寸大小, size 的值支持: tiny, small, middle, large 和 自定义的高/宽比数值(宽以页面宽为准)。size 必填, 不支持动态尺寸。

  • isDisablePadding: 是否显示间距和圆角, 布尔类型。

{
  "size": "middle",
  // "size": "middle"
  // "size": "large"
  // "size": 0.75
  "isDisablePadding": true
}

小程序卡片(Widget)组件

小程序卡片(Widget)不同于小程序页面,仅支持有限的组件,用于绘制小程序卡片(Widget) 的 UI 界面。现支持的内置组件如下:

名称功能说明
view布局容器
button按钮
text文本
image图像容器
swiper滑块视图容器
swiper-item滑块视图容器子项
canvas画布 (使用 rjs 渲染脚本 绘制图表)
movable-area可移动区域
movable-view可移动的视图容器,在页面中可以拖拽滑动。movable-view 必须在 movable-area 组件中,并且必须是直接子节点,否则不能移动。
switch开关选择器。
slider滑动选择器。

小程序卡片(Widget)API

小程序卡片(Widget)的 API 是通过 kit 插件注入的, 小程序卡片(Widget)的 kit 插件与所属小程序保持一致, 都是在 project.tuya.json 中声明需要的 kit, 如下:

{
  "dependencies": {
    "BaseKit": "3.0.0",
    "MiniKit": "3.0.0",
    "BizKit": "3.0.1"
  }
}

👉 立即免费领取开发资源,体验涂鸦 MiniApp 小程序开发。   

注册小程序卡片(Widget)

Widget 函数,是一个构造函数,用来指定小程序卡片的初始数据、生命周期回调、事件处理函数等。小程序卡片必须使用 Widget() 函数 注册且只注册一次。

小程序卡片(Widget)的注册方式与小程序页面选项基本一致,具体可查看 Widget() 函数使用。

Widget({
 data: { text: '初始化数据'},
 onLoad(query){
  console.log(query); // 可以在 onLoad 的参数中获取打开当前 Widget 路径中的参数
 }, // Widget 加载
 onShow(){}, // 容器可见时触发
 onReady(options){ // Widget 初次渲染完成
   this.setData({ text: "更新数据" })
 },
 onHide(){}, // 容器隐藏时触发
 onRefresh(){} // Widget 重新加载更新, 常用于App下拉刷新场景
 onPageScroll(){} // Widget 卡片内滚动触发
 onUnload(){}, // 容器卸载时触发
 onThemeChange(){} //监听主题变化
   ...
 // 其它方法
})

Tips:

  1. 小程序卡片(Widget)之间的间距为 12px。
  2. 小程序卡片(Widget)各个圆角为 16px。

 

小程序卡片(Widget)支持动态高度

  • 小程序卡片(Widget) API ty.setWidgetHeight: 动态设置小程序卡片(Widget)的高度

参数(Object object)

属性类型默认值必填说明
heightnumber设置的高度, 单位: px
completefunction接口调用结束的回调函数(调用成功、失败都会执行)
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
  • 小程序卡片(Widget) 实例方法 getWidgetInfo: 获取小程序卡片(Widget)的宽高信息
  • 小程序卡片(Widget) 实例方法 rpxToPx: 将rpx值转为px值, 参数为数值型
  • 小程序卡片(Widget) 生命周期 onResize: 监听小程序卡片(Widget)动态高度变化, 回调参数为当前小程序卡片(Widget)宽高

使用示例

Widget({
  data: {},
  onResize(query) {
    console.log('onResize', query); // query: {height, width} 单位:px
  },
  changeHeight(e) {
    const widgetInfo = this.getWidgetInfo(); // widgetInfo: {height, width} 单位:px
    const addHeight = this.rpxToPx(100); // rpx值转为px
 
    const allHeight = widgetInfo.height + addHeight;
    ty.setWidgetHeight({
      height: allHeight, // 高度单位:px
      success: (res) => {
        console.log('Widget height set successfully', res);
      },
      fail: (err) => {
        console.log('Widget height setting failed', err);
      }
    });
  },
})

平台配置

开发完成的小程序卡片需要在小程序开发者平台和 涂鸦开发者平台 上配置相关信息。

小程序开发者平台

在 小程序开发者平台选择您自己的小程序,点击基础设置的小程序卡片信息设置的新增设置。

填写您的小程序卡片信息。

涂鸦开发者平台

在涂鸦开发者平台 app 开发选择您自己的 app。点击详细配置。

进入 app 配置页面,在首页和页面中增加自定义卡片,内容就是您开发的小程序卡片。

个性化工具升级,支持 OEM App 微定制

在个性化工具中,支持将自定义的产品页面和功能模块嵌入到 App 中,让您打造出满足您业务场景的专属智能应用。

核心功能:

  • 首页和 我的 页面中增加自定义卡片

    模板 v5.8.0 更新说明

  • App 底部 tab 添加自定义页面

    模板 v5.8.0 更新说明

  • 设置列表支持配置自定义页面

OEM App 微定制方案有以下优势:

  • 成本低:不影响 App 基线升级,无需担心定制后每次升级还需再进行定制开发而产生更多费用和消耗更多时间。
  • 更快速:使用小程序框架开发,开发周期更快。
  • 更灵活:定制部分后续如有调整,无需依赖 App 的发布,从而快速响应业务节奏。

智能小程序管理

一般而言,您可以通过 小程序市场 购买和添加小程序,也可以与三方开发者联系,获取小程序。此外,您也可以自行开发小程序。

  • 在 我的小程序 页,您可以管理以上所有来源的小程序。

  • 在 App 投放 页,您可以将您的小程序投放到 智能页面 和 首页组件

    模板 v5.8.0 更新说明

部分小程序购买仅适用指定的 App,您可能需要为每个 App 单独购买小程序。

👉 立即免费领取开发资源,体验涂鸦 MiniApp 小程序开发。    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2196934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

九、Drf序列化器

九、序列化器 9.1序列化 从数据库取QuerySet或数据对象转换成JSON 9.1.1序列化器的简易使用 #新建一张部门表 class Depart(models.Model):title=models.CharField(verbose_name=部门,max_length=32)order=models.IntegerField(verbose_name=顺序)count=models.IntegerFiel…

vscode中安装python的包

首先需要调出命令行。然后运行代码,找到你所需要的环境。 PS C:\Users\Administrator\AppData\Local\ESRI\conda\envs\arcgispro-env> conda env list # conda environments: #C:\ProgramData\Anaconda3 base * C:\Users\Administrator\.con…

【无人机设计与控制】无人机三维路径规划,对比蚁群算法,ACO_Astar_RRT算法

摘要 本文探讨了三种不同的无人机三维路径规划算法,即蚁群算法(ACO)、A算法(Astar)以及快速随机树算法(RRT)。通过仿真实验对比了各算法在不同环境下的性能,包括路径长度、计算效率…

软考越来越难了,2024年软考究竟还值不值得考?

最近不少同学沟通,聊到软考现在越来越难了,考了两三次都没过,也有不少新同学咨询软考考试的一些福利政策,投入大量的物力,财力,精力,那么到底软考值不值得考呢? 01 / 关于软考 软考…

【FlagScale】异构算力混合训练方案

背景以及必要性 算力需求的高峰:随着人工智能(AI)和生成内容(AIGC)的发展,对计算资源的需求急剧增加。尤其是参数规模达到数百亿的大模型训练,需要大量的计算资源。 算力市场供应紧张&#xff…

一键拯救废片!3个在线教程,实现光线重塑、表情迁移、模糊图像修复

每逢国庆「黄金周」,都是旅游业的高光时刻。根据研判,今年国庆假期全社会跨区域人员流动量将达到 19.4 亿人次,平均每天 2.77 亿人次。 与旅游业同步增长的还有摄影行业,旅拍带动的妆造、服饰租赁等相关环节发展火热,…

Linux安装Redis7.40

一、环境检查 1.1 查看是否已经安装了Redis应用 ps -ef |grep redis或者 whereis redis1.2 若已经安装了redis应用或者有遗留的Redis文件,进行移除或者启动即可。 二、下载&安装 2.1 找到对应的安装包资源,使用wget命令下载,这里安装…

小众交友软件有哪些?小众交友APP排行榜前十名推荐

在网络的广袤天地中,小众交友软件如隐藏的宝藏,散发着独特魅力。它们为人们提供别样的社交舞台,让孤独的灵魂有处可栖。今天,就让我们一同探寻那些小众交友软件的奇妙世界。 1. 咕哇找搭子小程序:这是一个实名制的找搭…

想要加密电脑?盘点2024年企业常用的10款电脑文件加密软件

在企业数据安全的时代背景下,文件加密已经成为保护企业核心信息、应对网络安全威胁的关键举措。无论是保护机密的商业数据,还是遵守数据隐私合规性要求,企业对文件加密软件的需求日益增长。本文将盘点2024年企业常用的10款电脑文件加密软件&a…

【Java 问题】基础——序列化

接上文 序列化 45.什么是序列化?什么是反序列化?46.说说有几种序列化方式? 45.什么是序列化?什么是反序列化? 什么是序列化,序列化就是把Java对象转为二进制流,方便存储和传输。 所以反序列化…

SOA是什么

SOA SOA 即 Service-Oriented Architecture(面向服务的架构)。 一、定义 SOA 是一种软件设计方法和架构理念,它将应用程序的不同功能单元(称为服务)通过定义良好的接口和契约联系起来。这些服务可以独立部署、独立运…

【JavaEE初阶】深入理解不同锁的意义,synchronized的加锁过程理解以及CAS的原子性实现(面试经典题);

前言 🌟🌟本期讲解关于锁的相关知识了解,这里涉及到高频面试题哦~~~ 🌈上期博客在这里:【JavaEE初阶】深入理解线程池的概念以及Java标准库提供的方法参数分析-CSDN博客 🌈感兴趣的小伙伴看一看小编主页&am…

(笔记)第三期书生·浦语大模型实战营(十一卷王场)–书生基础岛第6关---OpenCompass 评测 InternLM-1.8B 实践

学员闯关手册:https://aicarrier.feishu.cn/wiki/ZcgkwqteZi9s4ZkYr0Gcayg1n1g?open_in_browsertrue 课程视频:https://www.bilibili.com/video/BV1RM4m1279j/ 课程文档: https://github.com/InternLM/Tutorial/blob/camp3/docs/L1/OpenComp…

嵌入式设备硬件和软件安全设计

1. 引言 哪个领域的网络安全实施记录最差? 既不是 PKI/数字证书,也不是 密钥管理,也不是 OAuth。很可能是嵌入式设备和物联网 领域。 总的来说,这似乎是一个梦想,但如果可设计出“设计安全”的系统,而不…

转行大模型开发,能不能挽救职业生涯?

大模型算是当之无愧最火的一个方向了,算是新时代的风口。有小伙伴觉得,既然是新领域、新方向,那么,人才需求肯定比较大,相应的人才缺乏,竞争也会更少,那转行去做大模型是不是一个更好的选择呢&a…

硬盘数据恢复的方法有哪几种?9种妙招速览

在当今数字化时代,硬盘数据的安全至关重要。然而,数据丢失的情况时有发生,掌握硬盘数据恢复方法显得尤为重要。本文将详细介绍几种有效的硬盘数据恢复方法,帮助用户在遇到数据丢失问题时,能够迅速采取措施,…

Visual studio2019+PCL1.11.1+win10

目录 一.软件下载1.visual studio2019下载2.PCL下载二.安装步骤1.安装PCL1.11.0步骤2.解压pcl-1.11.0-pdb-msvc2019-win64.zip3.安装OpenNI-Windows-x64-2.2.msi4. 设置环境变量5.visual studio2019配置6.双击新添加的属性表—VC++目录—包含目录,添加7个include路径7.测试代码…

幸运7游戏模拟 python

题目: 幸运"7"游戏,用计算机模拟掷骰子的过程,测算两个骰子点数之和为7的概率。 游戏规则是你丢两个骰子,如果其点数之和为7你就赢4元,不是7你就输1元。 假设你刚开始有10元,当全部输掉为0元的时候游戏结…

阿里云云虚拟主机SSL证书安装指南

在安装SSL证书的过程中,您需要确保已经正确获取了SSL证书文件,并且能够访问阿里云云虚拟主机的管理页面。以下是详细的步骤说明: 第一步:准备SSL证书 申请SSL证书:访问华测ctimall网站(https://www.ctimal…

Cloud-Edge-Terminal Collaborative AIGC for Autonomous Driving

摘要 在动态自动驾驶环境中,人工智能生成内容(AIGC)技术可以通过利用模型的生成和预测能力来补充车辆感知和决策,并有可能增强运动规划,轨迹预测和交通模拟。本文提出了一种云-边缘-终端协同架构,以支持AI…