前言在小程序开发中经常会遇到页面多处重复展示相同结构的 UI比如列表卡片、信息条目。如果重复写多份相同 wxml 代码代码冗余、后期维护麻烦。小程序提供template模板可以把重复 UI 结构封装一处定义多处复用。本篇是课堂案例 3.9基础需求封装学生、教师模板拓展作业新增奥运冠军模板展示冠军姓名与参赛项目完整演示模板定义、导入、传参、动态渲染。官方文档参考模板片段 | 微信开放文档项目预览效果页面标题模板的定义和引用 依次渲染3 条学生信息卡片3 条教师信息卡片3 条奥运冠军信息卡片作业新增部分 每一条信息之间使用分割线隔开结构统一数据各自独立。项目目录结构模板├─ template│ └─ template.wxml # 存放student、teacher、champion三个模板定义├─ pages│ └─ index│ ├─ index.js│ ├─ index.wxml│ ├─ index.wxss│ └─ index.json├─ app.js├─ app.json└─ app.wxss一、模板定义 template/template.wxml使用template name模板名封装 UI 结构name 是模板唯一标识后续引用时靠这个名字匹配。!--template.wxml--template namestudentview姓名{{name}}/viewview年龄{{age}}/viewview所学专业{{major}}/view/templatetemplate nameteacherview姓名{{name}}/viewview年龄{{age}}/viewview讲授课程{{course}}/view/template!--作业拓展奥运冠军模板--template namechampionview奥运冠军姓名{{name}}/viewview项目{{sport}}/view/template重点模板内部只能使用传入的数据不能直接读取页面 Page 的 data。二、页面视图 pages/index/index.wxmlimport src相对路径/导入外部 wxml 模板文件只引入 template 片段template is模板名 data{{...对象}}/使用模板...为对象展开语法is属性既可以写固定字符串也可以绑定变量动态切换模板!--index.wxml--view classboxview classtitle模板的定义和引用/view!--导入外部模板文件重点pages/index下向上两层找到template文件夹--import src../../template/template.wxml /!--动态指定模板--template is{{temp01}} data{{...student01}} /view------------------------------/viewtemplate isstudent data{{...student02}} /view------------------------------/view!--直接字面量传参不借助data对象--template isstudent data{{name:杨同学, age:21, major:人工智能}} /view------------------------------/viewtemplate is{{temp02}} data{{...teacher01}} /view------------------------------/viewtemplate isteacher data{{...teacher02}} /view------------------------------/viewtemplate isteacher data{{name:薛老师, age:38, course:线性代数}} /view------------------------------/view!--作业新增奥运冠军模板渲染--template ischampion data{{...champion01}} /view------------------------------/viewtemplate ischampion data{{...champion02}} /view------------------------------/viewtemplate ischampion data{{...champion03}} //view⚠️踩坑重点import路径index.wxml 在pages/index/需要../../回到项目根目录很多同学直接写/template/template.wxml会出现Template not found模板找不到警告。三、页面逻辑 pages/index/index.jsPage 的 data 存放所有需要渲染的数据对象通过...展开传递给模板。// index.jsPage({data: {temp01: student,temp02: teacher,student01: {name: 张同学,age: 19,major: 软件工程},student02: {name: 李同学,age: 20,major: 计算机科学与技术},teacher01: {name: 王老师,age: 40,course: 智能终端开发技术},teacher02: {name: 刘老师,age: 42,course: 物联网识别技术},//作业奥运冠军数据champion01:{name:许海峰,sport:男子自选手枪慢射},champion02:{name:刘翔,sport:男子110米栏},champion03:{name:全红婵,sport:女子10米跳台}}})四、样式文件pages/index/index.wxss/**index.wxss**/page {height: 100vh;display: flex;flex-direction: column;}app.wxss全局样式/**app.wxss**/.box {margin: 20rpx;padding: 20rpx;border: 2rpx solid silver;}.title {font-size: 40rpx;font-weight: bold;text-align: center;margin-bottom: 30rpx;color: red;}view {font-size: 30rpx;}五、app.json 项目配置关闭 Skyline防止页面空白{pages: [pages/index/index],window: {navigationBarTitleText: 模板,navigationBarBackgroundColor: #ffffff,navigationBarTextStyle:black},sitemapLocation: sitemap.json}六、核心知识点总结template 定义template namexxxname 是模板唯一标识一个 wxml 文件内可以定义多个模板。import 导入只导入目标文件里的 template 模板不会递归导入其他 import。模板引用is指定使用哪一个模板可以写固定字符串也可以绑定变量动态切换模板。data{{...obj}}对象展开语法把 obj 里面的属性直接传递给模板模板内直接使用{{name}}取值。模板作用域模板是孤立作用域模板里面不能直接访问页面 data所有数据必须通过data属性传入。import 和 include 的区别import只引入template模板片段适合 UI 卡片复用。include直接拷贝整个文件的 wxml 代码排除 template/wxs适合公共页头页脚。七、高频踩坑排错Template xxx not found最常见import路径错误。index 在 pages/index要用../../template/template.wxml不要直接写/template/template.wxml。同时检查模板 name 拼写大小写不能错。模板内文字空白没有数据 忘记写...展开对象写成data{{student01}}模板拿不到字段必须写data{{...student01}}。页面空白 app.json 中删除 skyline 相关配置使用传统 webview 渲染清理缓存后重新编译。基础库内部报错 Cannot read property __subPageFrameEndTime__ of null 属于微信开发者工具灰度基础库 3.17.3 内部 bug不是你的代码问题切换基础库到稳定版本 3.11.3 即可消除。八、模板的使用场景适合页面中大量重复结构的 UI列表条目、信息卡片、商品卡片、用户信息卡片。把重复 UI 抽成模板一处修改所有引用位置同步更新减少重复代码提升可维护性。完整代码复制后修改 import 路径、清缓存即可正常运行满足课堂作业要求。
企业数字化 ERP 产品动态
相关推荐
影刀解决填写输入框时页面全选的问题 官方给的解决方法:
填写输入框 - 影刀帮助中心 从其他地方找到的解决方法: 执行JS的方法我比较推荐,这样可以彻底避免页面元素定位不准,导致全选的问题。 · 2026/9/24 3:52:58
Surface Go 2 装 FydeOS 优化指南:触控、手写笔与续航调优 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 3:52:40
DeepSeek私有化部署指南:医院病历分析系统从选型到落地 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 3:52:40
WorkBuddy能给企业带来什么?从AI工具到业务智能体 很多公司现在已经在用 AI 了。但你去问员工“平时怎么用”,答案通常都差不多。写个方案的时候让 AI 帮忙改一下,开完会把录音或者文字丢进去整理纪要,销售写客户邮件时让 AI 润色几句。财务手里有一张乱七八糟的 Excel,也可能先让… · 2026/9/24 4:28:22
Storm 与机器学习:在线模型更新、实时预测与特征工程管道 Storm 与机器学习:在线模型更新、实时预测与特征工程管道本文探讨了如何利用 Apache Storm 构建机器学习在线模型更新、实时预测与特征工程管道。从基础架构到具体实现,详细介绍了 Storm 与机器学习系统的集成方案,包括在线模型更新机制、实时… · 2026/9/24 4:28:10
定制柜背板 5 毫米、9 毫米、18 毫米,各用在哪 背板用 5 毫米、9 毫米还是 18 毫米,先看柜子挂在哪个房间、柜深多少、跨度多长,不是越厚越合适。这是做海口全屋定制时容易被一句话带过去的构件,也容易被"加厚就是升级"的直觉带偏。欧派大家居在海口是有实体门店的连锁体系&… · 2026/9/24 4:28:04
nginx-ui MCP 配置管理工具详解:让 AI Agent 安全读写 Nginx 配置文件 后端前端运维MCP 服务 【免费下载链接】nginx-ui Yet another WebUI for Nginx 项目地址: https://gitcode.com/gh_mirrors/ngi/nginx-ui 点击查看 免费下载 导读
本文聚焦 nginx-ui 内置的 MCP(Model Context Protocol)配置管理模块&#… · 2026/9/24 4:28:04
# 从单智能体到多智能体:这是为什么 搜索“site:ijcai.org 2026 large language model multi-agent”,DuckDuckGo 返回 2024 年的综述和 2025 年的 L2M2 框架论文。这个结果并不意外——LLM 多智能体系统从提出到工程落地,一直是 IJCAI 最拥挤的赛道之一。与其追逐新名词,不如拆… · 2026/9/24 4:27:58
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44