微信小程序template模版的使用方法


Posted in Javascript onApril 13, 2019

前言

小程序开发语言虽然只能运行在微信小程序中, 但是它的设计同样遵循了主流前端框架的主要特征——组件化,在小程序中组件化的实现有两种方式: template 模版 和 Component 组件。 这两种方式分别适用于不同的场景。

  • template 模版 主要用于展示,模版中不涉及事件处理, 需要处理的事件逻辑放在调用模版的页面中。 一个 template 模版 只包含 wxml wxss 文件。
  • Component 组件 作为一个单独的功能模块,不仅可以包含页面展示还可以包含该模块的事件逻辑处理。 像一个页面一样, Component 组件 可以包含 wxml wxss js json 文件。

1. 创建 template 模版

不同于 page 和 Component 的创建, 在开发者工具中并不能快速创建一个 template 模版。所以需要单独创建 wxss wxml 文件。

微信小程序template模版的使用方法

template.wxml 文件语法

一个 template.wxml 文件中使用 <template> 标签包含一个模版, 一个 template.wxml 文件可以包含多个 <template>模版, 使用 name 属性作为模版的名称。

在模版中可以接受变量, 使用 {{}} 展示。 为变量的传递者由调用该模版的页面传递。

<template name="A">
 <text>template name: {{name}}</text>
</template>
<template name="B">
 <text>template name: {{name}} {{msg}}</text>
</template>

template.wxss 模版样式文件

模版可以拥有自己的样式文件

text{
 color: #cccccc;
}

2. 引用 template 模版

  • template 模版的引用需要使用 <import> 标签。 该标签的 src 属性为需要引用模版的路径。
  • template 模版的使用用 <template> 标签。 使用 is 属性来区别模版文件中定义的模版。
  • 使用 data 传入模版中的数据。

index.wxml

<import src="../tpls/template.wxml" />

<view>
 <template is="A" data="{{name}}"/>
 <template is="B" data="{{name, msg}}"/>
<view>

3. 引用模版样式

在 调用页面的 wxml 中引用了 template.wxml 后,模版的样式并不会引用, 需要在调用页面的 wxss 中单独引用 template.wxss 文件。

index.wxss

@import "./tpls/template.wxss"

4. 模版文件中的事件处理

在模版中定义的事件, 需要调用页面中执行。

template.wxml

<template name="A">
 <text bindtap="handleTap">template name: {{name}}</text>
</template>

index.js

Page({
 data: {},
 handleTap() {
 console.log('template 模版 click')
 }
})

5.  import 有作用域

import 有作用域的概念,即只会 import 目标文件中定义的 template,而不会 import 目标文件中 import 的 template,简言之就是 import 不具有递归的特性。

例如:C 引用 B,B 引用A,在C中可以使用B定义的 template,在B中可以使用A定义的 template ,但是C不能使用A定义的template

6. include 配合 template 模版

如同使用 <import src="xx/xx/xx.wxml"> <tempalte is="A" /> 引用和使用模版一样, 同样也可以使用 <include src="xx/xx/xx.wxml />" 来引用一个模版。

需要注意的是:

  • 使用 <include> 引用模版文件时, 并不能分别出模版文件的模版块, 所以使用 <include> 引用的模版文件中只能定义一个模版块。
  • include 可以将目标文件中除了 <template/> <wxs/> 外的整个代码引入,相当于是拷贝到 include 位置。
<!-- index.wxml -->
<include src="header.wxml"/>

<view> body </view>

<include src="footer.wxml"/>
<!-- header.wxml -->
<view> header </view>
<!-- footer.wxml -->
<view> footer </view>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript图像处理—仿射变换深度理解
Jan 16 Javascript
JavaScript 获取任一float型小数点后两位的小数
Jun 30 Javascript
js实现二代身份证号码验证详解
Nov 20 Javascript
jquery实现上下左右滑动的方法
Feb 09 Javascript
跟我学习javascript的执行上下文
Nov 18 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
Mar 01 Javascript
AngularJS 文件上传控件 ng-file-upload详解
Jan 13 Javascript
Bootstrap警告(Alerts)的实现方法
Mar 22 Javascript
用Node编写RESTful API接口的示例代码
Jul 04 Javascript
微信小程序导航栏跟随滑动效果的实现代码
May 14 Javascript
解决$store.getters调用不执行的问题
Nov 08 Javascript
基于vue实现图片验证码倒计时60s功能
Dec 10 Javascript
vue基于viewer实现的图片查看器功能
Apr 12 #Javascript
js form表单input框限制20个字符,10个汉字代码实例
Apr 12 #Javascript
详解js创建对象的几种方法及继承
Apr 12 #Javascript
详解JQuery基础动画操作
Apr 12 #jQuery
React中阻止事件冒泡的问题详析
Apr 12 #Javascript
TypeScript中的方法重载详解
Apr 12 #Javascript
vue-cli 3.x配置跨域代理的实现方法
Apr 12 #Javascript
You might like
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
php实现点击可刷新验证码
2015/11/07 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
Javascript 继承机制实例
2009/08/12 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
nodejs教程之入门
2014/11/21 NodeJs
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
python中对list去重的多种方法
2014/09/18 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
python实现xlsx文件分析详解
2018/01/02 Python
python实现微信小程序自动回复
2018/09/10 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
2020/04/15 Python
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
环保建议书600字
2014/05/14 职场文书
大学新闻系求职信
2014/06/03 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
党的群众路线教育实践活动心得体会范文
2014/11/05 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫