抖音小程序开发:ttml和传统html的区别

1 传统 Web 中 HTML 的角色

HyperText Markup Language:用来描述页面结构——标题、段落、图片、表单……

只负责“放什么元素、排在什么层级”,真正的行为靠 JS,视觉靠 CSS。

<!-- 传统网页:结构 + class 交给 CSS -->
<div class="header"><h1>Hello Web</h1><button id="incBtn">+</button><span id="count">0</span>
</div><script>// 纯 JS 手动取 DOM / 改文本let n = 0;document.getElementById('incBtn').onclick = () => {n++;document.getElementById('count').innerText = n;};
</script>

2 TTML 相对 HTML 的区别

能力TTML 特有举例对比
数据插值{{variable}} 直接把 JS data 渲染进模板<text>{{count}}</text>
事件声明式绑定bindtap="add" 只写函数名,不内嵌 JS<button bindtap="add">+</button>
条件 / 列表指令wx:if wx:for<view wx:for="{{list}}">{{item}}</view>
组件标签集<swiper> <scroll-view> 等对接原生能力<swiper autoplay="{{true}}">…</swiper>
安全沙箱模板层不能直接写 <script>事件必须跳到 *.js 文件
rpx 单位与屏幕宽度自适应的长度单位width: 750rpx = 全屏

本质:TTML = HTML 结构 + 小程序框架指令 + 数据/事件绑定语法,让 UI 与 JS data 形成自动同步。

对照示例:计数器

A. HTML 版(手动操作 DOM)

<button id="incBtn">+</button>
<span id="count">0</span>
<script>let n = 0;incBtn.onclick = () => { count.innerText = ++n; };
</script>

B. TTML + TTJS 版(声明式 + 双向)

<!-- counter.ttml -->
<button bindtap="add">+</button>
<text>{{count}}</text>
// counter.js
Page({data: { count: 0 },add() { this.setData({ count: this.data.count + 1 }); }
});

差别

  • TTML 无需直接改 DOM,调用 setData ➜ 框架自动把 count 更新到 {{count}} 位置。

  • 点击事件只写 bindtap=“add”,函数体放在 JS,模板更纯净。

模式需求更新流程
原生 DOM手写 document.*直接改 DOM(命令式)
小程序 TTML / React 等写模板 {{count}} + this.setData({count})框架比对数据差异自动改视图(声明式)

优点:

逻辑与视图分离,代码量大幅减少;并且这样可以在框架内部做批量更新、虚拟 DOM diff,性能可控,且不易产生 “忘了同步 UI” 的 Bug

代价:
必须走框架限定的 API(如 setData),不能直接任意操作 DOM。

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

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

相关文章

Unity2D 街机风太空射击游戏 学习记录 #12QFramework引入

概述 这是一款基于Unity引擎开发的2D街机风太空射击游戏&#xff0c;笔者并不是游戏开发人&#xff0c;作者是siki学院的凉鞋老师。 笔者只是学习项目&#xff0c;记录学习&#xff0c;同时也想帮助他人更好的学习这个项目 作者会记录学习这一期用到的知识&#xff0c;和一些…

Proteus如何创建第一个工程

视频教程&#xff1a; [最详细]Proteus新建第一个工程与快捷键设置 操作步骤 1打开Proteus后&#xff0c;左上角点击文件然后点击新建工程。 2新建工程后&#xff0c;弹出以下界面&#xff0c;选择修改自己的工程名字&#xff0c;&#xff08;工程名的后缀“.pdspsj”不要修改…

现代浏览器剪贴板操作指南 + 示例页面 navigator.clipboard 详解与实战

在 Web 开发中&#xff0c;复制文本到剪贴板是一个常见需求。多年来&#xff0c;过去我们依赖 Flash 或 document.execCommand(copy) 来实现。它曾是我们的得力助手&#xff0c;但这些方法存在兼容性差、安全性低的问题。现已经被正式标记为废弃&#xff08;Deprecated&#xf…

OpenCV-Python学习笔记

2 OpenCV中的Gui特性 2-1 图像入门 目标 学习如何读取图像、显示图像和保存图像 学习api函数&#xff1a;cv.imread()、cv.imshow()、cv.imwrite() 学习使用Matplotlib显示图像 使用OpenCV 读取图像 在OpenCV中&#xff0c;使用函数cv.imread()读取图像。 img cv.imread(le…

2025年- H87-Lc195--287.寻找重复数(技巧,二分查找OR动态规划)--Java版

1.题目描述 2.思路 3.代码实现 public class H287 {public int findDuplicate(int[] nums) {// 重复数字可能的最小值int min1;// 重复数字可能的最大值&#xff0c;数组长度为 n&#xff0c;数字范围是 [1, n-1]int maxnums.length-1;while(min<max) {// 防止溢出&#xf…

PVE使用ubuntu-cloud-24.img创建虚拟机并制作模板

前言 在使用pve时,虽然它已经可以克隆虚拟机,已经极大提升了创建虚拟机速度,但创建完成后,不可避免还是要配置下网络,因为服务器要使用静态IP,克隆出的机器需要重新设置新的IP地址,有没有连这一步都省了方法呢?有,就是Cloud-Init 创建虚拟机模板 1. 下载ubuntu-clo…

LLM增强检索---GraphRAG + LangGraph项目实战

专栏&#xff1a;大模型垂直应用技术​ ​​​​ 个人主页:云端筑梦狮 大模型应用落地亟需解决的核心问题有一个是&#xff1a;如何与私域数据交互。私域数据主要的问题是&#xff1a;需要有效地将企业数据整合进大语言模型中。由于大模型的上下文处理能力有限&#xff0c;一…

修改SSH端口实战

本次实战主要涉及SSH端口的修改和配置。首先&#xff0c;对master、slave1和slave2三台云主机的SSH配置文件进行修改&#xff0c;指定新的SSH端口&#xff0c;并重启SSH服务。接着&#xff0c;通过FinalShell工具修改连接端口&#xff0c;实现SSH连接到三台云主机。然后&#x…

PyTorch中的permute, transpose, view, reshape和flatten函数详解(已解决)

1.permute permute函数用于重新排列张量的维度。它接受一个元组作为参数&#xff0c;表示新的维度顺序。例如&#xff0c;如果我们有一个形状为(2, 3)的二维张量&#xff0c;我们可以使用permute函数将其维度重新排列为(3, 2)&#xff0c;如下所示&#xff1a; >>> …

开疆智能ModbusTCP转EtherCAT网关连接甘纳数据采集系统配置案例

本案例是通过开疆智能研发的ModbusTCP转EtherCAT网关连接ModbusTCP主站与甘纳数据采集系统的配置案例&#xff0c;具体配置如下。 配置过程 首先设置ModbusTCP主站&#xff0c;这里以信捷PLC为例 IP设定 要走Modbus-TCP协议&#xff0c;要把设备IP设在同一网段且地址不同&am…

Neo4j常用语法-path

在 Neo4j 中&#xff0c;Path&#xff08;路径&#xff09; 是连接两个或多个节点的关系序列&#xff0c;是图查询的核心概念之一。理解 Path 的用法对于复杂图分析至关重要 关键特性&#xff1a; 有向性&#xff1a;路径中的关系具有方向 可变长度&#xff1a;路径可以包含 0 …

从 Cluely 融资看“AI 协同开发”认证:软件考试应该怎么升级?

AI 工具大爆发&#xff0c;软件考试却还停在“纯手写”时代&#xff1f; 2025 年 6 月&#xff0c;一个标语写着 “Cheat on Everything”&#xff08;对&#xff0c;意思就是“什么都能开挂”&#xff09;的 AI 初创公司——Cluely&#xff0c;正式宣布获得由 a16z 领投的 1 …

商品中心—10.商品B端搜索系统的说明文档

大纲 1.商品B端搜索系统的运行流程 缓存和索引设计 2.商品B端搜索系统监听数据变更与写入ES索引 3.商品B端搜索系统的历史搜索词的实现 4.商品B端搜索系统的搜索词补全的实现 5.商品B端搜索系统的搜索接口实现 6.索引重建 1.商品B端搜索系统的运行流程 缓存和索引设计 …

HCIP-Datacom Core Technology V1.0_4 OSPF路由计算

ospf是如何计算生成这些路由呢&#xff0c; 区域内路由计算 LSA概述 同一个区域内路由器去进行一个数据库同步&#xff0c;形成一个LSDB&#xff0c;那么数据库里面所存在的LSA,是如何利用它去进行计算和生成路由的呢&#xff0c;以及这些LSA分别包含了哪些信息&#xff0c;比…

微服务拆分之术与道:从原则到实践的深度解析

引言&#xff1a;微服务的塞壬之歌 - 超越单体巨石 故事要从一家名为“巨石公司”&#xff08;Monolith Inc.&#xff09;的虚构企业说起。它的旗舰产品曾是公司的骄傲&#xff0c;但随着岁月流逝&#xff0c;这个系统逐渐演变成了一个“大泥球”&#xff08;Big Ball of Mud&a…

【新手向】GitHub Desktop 的使用说明(含 GitHub Desktop 和 Git 的功能对比)

GitHub Desktop 是 GitHub 公司推出的一款桌面应用程序&#xff0c;旨在帮助开发人员更轻松地使用 GitHub&#xff0c;以下是其简单的使用说明&#xff1a; 安装与登录 下载 GitHub Desktop |GitHub 桌面 访问GitHub Desktop 官方网站&#xff0c;根据自己的操作系统下载对应的…

Linux驱动编程 - gpio、gpiod函数

​​​​​ 目录 简介&#xff1a; 1、GPIO 子系统有两套API&#xff1a; 一、GPIO新、旧版互相兼容转换 API 1、转化函数 二、基于描述符接口(descriptor-based) &#xff08;以"gpiod_"为前缀&#xff09; 1、获取 GPIO 2.1 struct gpio_desc *gpiod_get(s…

Tensorflow推理时遇见PTX错误,安装CUDA及CuDNN, 解决问题!

问题原因&#xff1a; 使用TensorFlow一个小模型是进行推理的时候&#xff0c;报了PTX错误&#xff1a; Traceback (most recent call last): 20273 2025-06-18 10:20:38.345 INFO 1 --- [checkTask-1] c.l.a.d.a.util.AnalyzeCommonHelper : File "/home/python/commo…

C# 网络编程-关于HTTP/HTTPS的基础(一)

一、HTTP基础概念 1. 请求-响应模型 HTTP是基于客户端-服务器的无状态协议&#xff0c;流程如下&#xff1a; 客户端&#xff08;如浏览器&#xff09;发起请求。服务器接收请求并处理。服务器返回响应&#xff0c;包含状态码、Header和响应体。连接关闭&#xff0c;后续请求…

小程序右上角○关闭事件

小程序用户真实离开事件追踪&#xff1a;一场与技术细节的博弈 在数据分析的场景下&#xff0c;精准捕捉用户行为至关重要。我们遇到了这样一个需求&#xff1a;在小程序的埋点方案中&#xff0c;只记录用户真正意义上的离开&#xff0c;即通过点击小程序右上角关闭按钮触发的…