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

发布于:2025-06-23 ⋅ 阅读:(19) ⋅ 点赞:(0)

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。


网站公告

今日签到

点亮在社区的每一天
去签到