TinyBase Svelte 实战:用 `<ValuesInHtmlTable />` 把 Store 的 Values 渲染成 HTML 表格
数据库后端前端【免费下载链接】tinybaseA reactive data store sync engine.项目地址https://gitcode.com/gh_mirrors/ti/tinybase点击查看免费下载本文是 TinyBase 官方 Svelte UI 组件系列演示的第一篇聚焦ui-svelte-dom模块中的ValuesInHtmlTable /组件。我们将从一个含用户名、邮箱等混合类型键值数据的 Store 出发完整演示「创建 Store → 填充 Values → 通过 Provider 注入 → 渲染 HTML 表格」的全流程并深入组件源码说明表头、Id 列、可编辑模式等 props 的底层实现机制。读完本文你将能独立搭建一个可响应 Store 数据变化的 Svelte 键值表格页面。一、组件定位Values 的表格化视图TinyBase 将数据分为两类以 Id 为键的键值对集合Values以及按表、行、单元格组织的表格集合Tables。ValuesInHtmlTable /负责把前者渲染成标准的 HTMLtable每一行对应一个 Value行首是 Value 的 Id行内是 Value 的值。它属于tinybase/ui-svelte-dom模块——该模块专门提供「把 TinyBase 数据结构渲染为原生 HTML 表格」的组件家族还包括TableInHtmlTable /、SortedTableInHtmlTable /、SliceInHtmlTable /、RelationshipInHtmlTable /等导出列表见 src/ui-svelte-dom/index.ts。与 React/Solid 版本的组件同名且行为一致只是绑定了 Svelte 的响应式运行时。二、项目骨架导入映射与入口文件2.1 使用 Import Map 免构建加载演示采用 CDN 原生 Import Map 的方式无需打包器即可运行script typeimportmap { imports: { tinybase: https://esm.sh/tinybase, tinybase/ui-svelte: https://esm.sh/tinybase/ui-svelte, tinybase/ui-svelte-dom: https://esm.sh/tinybase/ui-svelte-dom, svelte: https://esm.sh/svelte } } /script四个入口分别对应核心库createStore等 API、Svelte 绑定层Provider等组件、DOM 表格组件层ValuesInHtmlTable等以及 Svelte 运行时本身。若在本地工程中使用则直接npm install tinybase后按tinybase/ui-svelte、tinybase/ui-svelte-dom子路径导入即可。2.2 创建 Store 并填充示例 Values主入口文件创建 Store链式写入四个混合类型的 Values再挂载 Svelte 组件import {createStore} from tinybase; import {mount} from svelte; import App from ./App.svelte; const store createStore() .setValue(username, John Appleseed) .setValue(email address, john.appleseedexample.com) .setValue(dark mode, true) .setValue(font size, 14); mount(App, {target: document.body, props: {store}});createStore()来自核心库tinybase源码见 src/store/index.tssetValue可链式调用这里刻意混合了字符串、布尔、数字三种类型用来展示表格对异构值的通用渲染能力。mount是 Svelte 5 的挂载 API通过props把 store 传给组件。三、App.svelteProvider 提供数据组件自动取数script import {Provider} from tinybase/ui-svelte; import {ValuesInHtmlTable} from tinybase/ui-svelte-dom; let {store} $props(); /script Provider {store} ValuesInHtmlTable / ValuesInHtmlTable headerRow{false} idColumn{false} / /Provider这里展示了两层关键机制Provider 注入Provider {store}通过 Svelte 的 Context 把 store 注入组件树。查看 src/ui-svelte/Provider.svelte 可以看到它把 store及可选的 metrics、indexes、queries、checkpoints、persister 等写入setContext(TINYBASE_CONTEXT_KEY, ctx)供后代组件读取同时支持storesById注册多个命名 Store。免 props 取数ValuesInHtmlTable /内部通过getValueIds(() store)从 Context 解析 Store见 src/ui-svelte/functions.svelte.ts 中resolveStore与getValueIds因此无需显式传store。若想显式指定也可传入storeprop。第二个ValuesInHtmlTable /通过headerRow{false}隐藏表头、idColumn{false}隐藏 Id 列是本文档演示的第一个差异化用法。四、渲染结果与 DOM 结构开启默认配置时第一个表格输出如下结构Id 列与 Value 列table theadtrthId/ththValue/th/tr/thead tbody trth titleusernameusername/thtdJohn Appleseed/td/tr !-- ...其余三行... -- /tbody /table对照 src/ui-svelte-dom/ValuesInHtmlTable.svelte 源码表头在headerRow ! false时渲染固定输出Id与Value两个thValue文案来自 src/common/strings.ts 中的常量VALUE每行先渲染th title{valueId}{valueId}/th作为 Id 列title属性提供悬停提示再渲染td包住真正的值组件值组件默认为ui-svelte层的ValueView /src/ui-svelte/ValueView.svelte它通过getValue(...)订阅 Store 的addValueListener任何setValue改动都会触发该行重新渲染。单元测试快照印证了这一结构见 test/unit/core/ui-svelte/snapshots/ui-svelte-dom.test.ts.snap 中ValuesInHtmlTable basic与 idColumn两条记录Playwright 端到端测试则验证了「第一张表有 Id 列、第二张表没有」的页面行为test/e2e/demos/ui-components-svelte.test.ts。五、props 全解从默认值到高级用法组件类型定义见 src/types/ui-svelte-dom/index.d.ts 的ValuesInHtmlTableProps与HtmlTablePropsProp类型默认值作用storeStoreOrStoreId取 Context 中 Provider 注入的 Store指定数据源可传 Store 实例或已注册的 Store IdheaderRowbooleantrue是否渲染thead表头行false时整行省略idColumnbooleantrue是否渲染 Id 列false时省略thId 单元格源码中以isFalse(idColumn)严格判断editablebooleanfalse是否启用编辑模式见下文valueComponentComponentValueViewPropsValueView或编辑模式下的EditableValueView自定义渲染每个 Value 的组件getValueComponentProps(valueId: Id) {[prop: string]: any}无为自定义 value 组件计算额外 propsextraCellsBefore/extraCellsAfterExtraValueCell[][]在每行 Id 列之前/之后插入附加单元格classNamestring无应用到table的 CSS 类名关于editable置为true时值单元格改用EditableValueView /src/ui-svelte-dom/EditableValueView.svelte。它内部由通用编辑组件EditableThingsrc/ui-svelte-dom/common/EditableThing.svelte驱动根据值的实际类型渲染对应控件字符串用文本框、数字用typenumber输入框、布尔用复选框、对象/数组用 JSON 文本编辑并在无 schema 约束时允许通过类型按钮在 string / number / boolean / object / array 间切换有 schema 时该按钮被禁用。快照ValuesInHtmlTable editable展示了编辑模式下的 DOM。同模块的EditableValueView /也单独导出可直接复用src/ui-svelte-dom/index.ts。关于extraCellsBefore/extraCellsAfter每个元素形如{label, component}组件会接收{valueId, store}作为 props表头会通过getExtraHeaderssrc/ui-svelte-dom/common/index.ts自动生成对应的th。单元测试对store、editable、自定义valueComponent、className、idColumn五种配置均有覆盖test/unit/core/ui-svelte/ui-svelte-dom.test.ts 中describe(ValuesInHtmlTable)块可作为回归验证的参照。六、样式让朴素表格贴近设计与 React DOM 组件一致组件渲染出的 HTML 刻意保持素朴样式完全交由开发者。演示中使用了如下 LESS 关键片段body { color: #333; display: flex; font-family: Inter, sans-serif; font-size: 0.8rem; justify-content: space-around; line-height: 1.5rem; user-select: none; } table { background: white; border-collapse: collapse; box-shadow: 0 0 1rem #0004; font-size: inherit; margin: 2rem; table-layout: fixed; th, td { border-color: #eee; border-style: solid; border-width: 1px 0; overflow: hidden; padding: 0.25rem 0.5rem; text-align: left; white-space: nowrap; } }要点说明user-select: none让演示页更像应用界面table-layout: fixed配合overflow: hidden防止长字符串撑破列宽box-shadow与border-width: 1px 0实现轻量分隔线。组件只负责结构视觉完全可控——这正符合 TinyBase UI 组件「无侵入样式」的设计取向。页内同时放置默认与headerRow{false} idColumn{false}两张表格正好对比两种形态。七、小结与延伸至此我们用约 60 行代码完成了 TinyBase Svelte 的首个表格渲染用createStore().setValue(...)准备数据用Provider {store}注入 Context用ValuesInHtmlTable /输出 HTML 表格并通过headerRow/idColumn/editable/valueComponent等 props 控制形态。本文演示的完整代码即 site/demos/11_ui_components_svelte/01_ValuesInHtmlTable.md。后续教程将沿同一套件继续深入下一篇Svelte会把它换成表格Table数据渲染并演示异步加载 TSV 数据集的完整流程再往后还有排序表格、切片、关系、查询结果等进阶组件最终构成ui-svelte-dom的完整拼图。赞分享数据库后端前端【免费下载链接】tinybaseA reactive data store sync engine.项目地址https://gitcode.com/gh_mirrors/ti/tinybase点击查看免费下载相关推荐TinyBase ValuesInHtmlTable / (Solid) 实战用 ui-solid-dom 组件把 Store Values 渲染成响应式 HTML 表格TinyBase ValuesInHtmlTable / Solid 实战用 ui solid dom 组件把 Store Values 渲染成响应式 HT数据库后端前端TinyBase 实战指南使用 ValuesInHtmlTable 在 React 中渲染 Store 的 Values 数据表TinyBase 实战指南使用 ValuesInHtmlTable 在 React 中渲染 Store 的 Values 数据表 本文基于 TinyBase数据库后端前端tinybase React 实战用 SliceInHtmlTable 把 Index 的 Slice 渲染为 HTML 表格tinybase React 实战用 SliceInHtmlTable 把 Index 的 Slice 渲染为 HTML 表格 本文以 tinybase 官方数据库后端前端上一篇如何用BarrageGrab在5分钟内搭建全平台直播弹幕采集系统下一篇rust-raspberrypi-OS-tutorials 教程 03Hacky Hello World——用 QEMU 虚拟 UART 点亮内核第一个 println! 与自动化启动测试创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

论文AIGC痕迹太重怎么降?十款工具实测与五步降痕流程全解析

论文AIGC痕迹太重怎么降?十款工具实测与五步降痕流程全解析

又到了一年一度写论文的“苦难季”。不管你是本科生、研究生还是准备评职称的在职党,应该都发现了:今年和往年最大的不同,是除了查重,又多了一道“查AI”的关卡。很多学校、期刊编辑部开始明文要求提交AIGC检测报告,论…

2026/10/13 2:52:38 阅读更多 →
SPARK View:让AI辅助开发从手工作坊走向标准流水线

SPARK View:让AI辅助开发从手工作坊走向标准流水线

说实话,这两三年凡是认真把AI写代码用到生产环境的开发者,大概率都经历过我称之为“手工作坊繁荣期”的阶段:桌面上堆着十几个prompt,有的记在文档里,有的藏在聊天记录里,还有的只有某位同事自己知道&#…

2026/10/13 2:52:38 阅读更多 →
Hadoop网站日志分析实战:从MapReduce到Hive的离线批处理

Hadoop网站日志分析实战:从MapReduce到Hive的离线批处理

简介:这份资源是面向大数据与人工智能方向学习者、开发者的一份Hadoop实战项目包,聚焦网站日志的分布式处理与分析。项目以MapReduce编程模型为核心,演示从日志解析、数据清洗到统计分析、用户行为挖掘的完整链路,并延伸至用户画像…

2026/10/13 2:52:38 阅读更多 →

最新新闻

Go unsafe包深度解析:指针操作、内存布局与零拷贝实践

Go unsafe包深度解析:指针操作、内存布局与零拷贝实践

在Go社区里,unsafe包一直是个自带争议的话题。有人把它当成“禁区里的核按钮”,有人把它当成“性能优化的万能钥匙”。我自己的态度是:它更像一把手术刀——用对了能精准切到病灶,用错了就得自己承担后果。这篇文章我会从指针操作…

2026/10/13 5:07:23 阅读更多 →
OneLive实时数据聚合实战:架构选型、核心实现与踩坑排查

OneLive实时数据聚合实战:架构选型、核心实现与踩坑排查

1. 从"OneLive"这个名字说起:一个被低估的命名逻辑第一次看到"OneLive"这个标题的时候,我脑子里冒出来的第一个念头不是"这是个什么产品",而是"这个名字起得挺讲究"。做项目做久了你会发现&#xff…

2026/10/13 5:07:23 阅读更多 →
STM32+HX711智能体重秤设计:从信号采集到标定的完整方案

STM32+HX711智能体重秤设计:从信号采集到标定的完整方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 5:07:23 阅读更多 →
三维引擎中斜抛运动顶点的实时精准生成方法

三维引擎中斜抛运动顶点的实时精准生成方法

1. 项目概述:为什么斜抛运动的顶点在三维场景里不是“算出来就完事”?“三维场景中斜抛运动顶点的生成”——这标题乍看像高中物理题,但真把它放进Unity、Unreal或Three.js这类实时渲染环境里,你会发现:课本上那个“vs…

2026/10/13 5:07:23 阅读更多 →
从余弦相似度到Word2Vec:文本向量化与语义相似度实战指南

从余弦相似度到Word2Vec:文本向量化与语义相似度实战指南

1. 从字符串到向量:为什么文本必须变成数字做自然语言处理这些年,我越来越觉得,文本表示这件事就像给机器装翻译器。你给机器看"苹果"这两个字,它看到的只是两个字符编码,完全不知道这玩意儿能吃、能砸到牛顿…

2026/10/13 5:07:23 阅读更多 →
给Agent搭一个“工具站点”:技能外置让模型输出更可靠

给Agent搭一个“工具站点”:技能外置让模型输出更可靠

先说结论:我给自己的 Agent 项目搭了一个内部的“工具站点”,专门负责承载各种 skills,让模型只做决策,把具体执行全部交给这个站点来完成。实际跑下来,Agent 在流程稳定性和输出格式正确率上提升非常明显。这篇文章就…

2026/10/13 5:06:23 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →