当前位置: 首页 > news >正文

抖音小程序开发: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.lqws.cn/news/485533.html

相关文章:

  • 2140、解决智力问题
  • Origin:雷达图如何显示坐标轴数字
  • C++ -- AVL树的插入和旋转
  • 责任链模式
  • SQL Server基础语句4:数据定义
  • C++ 特有模式深度解析:Pimpl惯用法与CRTP
  • 0-机器学习简介
  • python高校教务管理系统
  • Hologres的Table Group和Shard简介
  • LangChain赋能RAG:从构建到评估优化的一体化实战指南
  • CSS 调整文字方向
  • 在高数中 导数 微分 不定积分 定积分 的意义以及联系
  • 【数据结构】_二叉树部分特征统计
  • 【期末速成】编译原理
  • 微处理器原理与应用篇---常见基础知识(2)
  • (C++)素数的判断(C++教学)(C语言)
  • LLM大模型存储记忆功能:技术原理与应用实践
  • 445场周赛
  • 线程池异步处理
  • 使用模板创建uniapp提示未关联uniCloud问题
  • 云侧工程云函数开发
  • AIGC技术的本质:统计学驱动的智能革命
  • react-route-dom@6
  • 深入剖析Flink内存管理:架构、调优与实战指南
  • SQL Server 基础语句3: 数据操作(插入、删除、更新表)与数据类型
  • 2025-06-22 思考-人的意识与不断走向死亡的过程
  • 如何仅用AI开发完整的小程序<6>—让AI对视觉效果进行升级
  • Linux 文件 I/O 与标准 I/O 缓冲机制详解
  • 21.安卓逆向2-frida hook技术-HookOkHttp的拦截器
  • 前端手写题(一)