微信小程序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 相关文章推荐
js字符串转成JSON
Nov 07 Javascript
无刷新预览所选择的图片示例代码
Apr 02 Javascript
关闭时刷新父窗口两种方法
May 07 Javascript
VS2008中使用JavaScript调用WebServices
Dec 18 Javascript
jquery实现相册一下滑动两次的方法
Feb 09 Javascript
jquery滚动到顶部底部代码
Apr 20 Javascript
JavaScript实现简单的双色球(实例讲解)
Jul 31 Javascript
JavaScript阻止表单提交方法(附代码)
Aug 15 Javascript
基于js 本地存储(详解)
Aug 16 Javascript
Vue组件中slot的用法
Jan 30 Javascript
详解项目升级到vue-cli3的正确姿势
Jan 28 Javascript
vue柱状进度条图像的完美实现方案
Aug 26 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
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
php中mt_rand()随机数函数用法
2014/11/24 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
总结对比php中的多种序列化
2016/08/28 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
python黑魔法之编码转换
2016/01/25 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
Python模拟用户登录验证
2017/09/11 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
Python接口测试文件上传实例解析
2020/05/22 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
小区门卫管理制度
2014/01/29 职场文书
依法行政工作汇报
2014/10/28 职场文书
证婚人致辞精选
2015/07/28 职场文书
运动会班级口号霸气押韵
2015/12/24 职场文书
2019教师的学习计划
2019/06/25 职场文书
详解Redis复制原理
2021/06/04 Redis
MySQL 数据类型详情
2021/11/11 MySQL
关于maven依赖 ${xxx.version}报错问题
2022/01/18 Java/Android
详解Python内置模块Collections
2022/03/22 Python
i7 6700处理器相当于i5几代
2022/04/19 数码科技
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript