微信小程序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 相关文章推荐
jQuery Ajax之load()方法
Oct 12 Javascript
JS获得浏览器版本和操作系统版本的例子
May 13 Javascript
js实现发送验证码后的倒计时功能
May 28 Javascript
tuzhu_req.js 实现仿百度图片首页效果
Aug 11 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
Aug 13 Javascript
js实现购物车功能
Jun 12 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
Dec 14 Javascript
利用Node.js如何实现文件循环覆写
Apr 05 Javascript
vue-cli3 取消eslint校验代码的解决办法
Jan 16 Javascript
Node.js API详解之 module模块用法实例分析
May 13 Javascript
如何通过JS实现日历简单算法
Oct 14 Javascript
vue3.0中setup使用(两种用法)
Dec 02 Vue.js
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中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
PHP引用返回用法示例
2016/05/28 PHP
php mysql 封装类实例代码
2016/09/18 PHP
php对象工厂类完整示例
2018/08/09 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
详解python单元测试框架unittest
2018/07/02 Python
便捷提取python导入包的属性方法
2018/10/15 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
python plotly绘制直方图实例详解
2019/07/22 Python
python匿名函数用法实例分析
2019/08/03 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
python 下划线的不同用法
2020/10/24 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
如何进行Linux分区优化
2013/02/12 面试题
几个Linux面试题笔试题
2012/12/01 面试题
Unix控制后台进程都有哪些进程
2016/09/22 面试题
出国留学自荐信
2013/10/25 职场文书
求职自荐信格式
2013/12/04 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫
Django框架模板用法详解
2022/06/10 Python