微信小程序template模板与component组件的区别和使用详解


Posted in Javascript onMay 22, 2019

前言:

除了component,微信小程序中还有另一种组件化你的方式template模板,这两者之间的区别是,template主要是展示,方法则需要在调用的页面中定义。而component组件则有自己的业务逻辑,可以看做一个独立的page页面。简单来说,如果只是展示,使用template就足够了,如果涉及到的业务逻辑交互比较多,那就最好使用component组件了。

一. template模板:

1. 模板创建:

建议单独创建template目录,在template目录中创建管理模板文件。

由于模板只有wxml、wxss文件,而且小程序开发工具并不支持快速创建模板,因此就需要直接创建wxml、wxss文件了,一个template的模板文件和样式文件只需要命名相同即可。如果模板较多,建议在template目录下再创建子目录,存放单独的模板。

微信小程序template模板与component组件的区别和使用详解

2. 模板文件:

template.wxml文件中能写多个模板,用name区分:

<template name="demo">
<view class='tempDemo'>
 <text class='name'>FirstName: {{firstName}}, LastName: {{lastName}}</text>
 <text class='fr' bindtap="clickMe" data-name="{{'Hello! I am '+firstName+' '+LastName+'!'}}"> clcikMe </text>
</view>
</template>

3. 样式文件:

模板拥有自己的样式文件(用户自定义)。

/* templates/demo/index.wxss */
 .tempDemo{
 width:100%;
 }
 view.tempDemo .name{color:darkorange}

4. 页面引用:

page.wxml

<!--导入模板-->
<import src="../../templates/demo/index.wxml" />
<!--嵌入模板-->
<view>
 <text>嵌入模板</text>
 <template is="demo" data="{{...staffA}}"></template><!--传入参数,必须是对象-->
 <template is="demo" data="{{...staffB}}"></template><!--传入参数,必须是对象-->
 <template is="demo" data="{{...staffC}}"></template><!--传入参数,必须是对象-->
</view>

page.wxss

@import "../../templates/demo/index.wxss" /*引入template样式*/

page.js

Page({
 /**
  * 页面的初始数据
  */
 data: {
  staffA: { firstName: 'Hulk', lastName: 'Hu' },
  staffB: { firstName: 'Shang', lastName: 'You' },
  staffC: { firstName: 'Gideon', lastName: 'Lin' }
 },
 clickMe(e) {
  wx.showToast({ title: e.currentTarget.dataset.name, icon: "none", duration: 100000 })
 }
 ......
})

备注:

一个模板文件中可以有多个template,每个template均需定义name进行区分,页面调用的时候也是以name指向对应的template;

template模板没有配置文件(.json)和业务逻辑文件(.js),所以template模板中的变量引用和业务逻辑事件都需要在引用页面的js文件中进行定义;

template模板支持独立样式,需要在引用页面的样式文件中进行导入;

页面应用template模板需要先导入模板 <import src="../../templates/demo/index.wxml" /> ,然后再嵌入模板<template is="demo" data="{{...staffA}}"></template>

二. Component组件:

1. 组件创建:

新建component目录——创建子目录——新建Component;

微信小程序template模板与component组件的区别和使用详解微信小程序template模板与component组件的区别和使用详解

2. 组件编写:

新建的component组件也由4个文件构成,与page类似,但是js文件和json文件与页面不同。

js代码:

// components/demo/index.js
Component({
 /**
  * 组件的属性列表
  */
 properties: {
  name: {
   type: String,
   value: ''
  }
 },

 /**
  * 组件的初始数据
  */
 data: {
  type: "组件"
 },

 /**
  * 组件的方法列表
  */
 methods: {
  click: function () {
   console.log("component!");
  }
 }
})

json配置文件:

{
  "component": true,
  "usingComponents": {}
}

3. 组件引用:

页面中引用组件需要在json配置文件中进行配置,代码如下:

{
  "navigationBarTitleText": "模板demo",
  "usingComponents": {
   "demo": "../../components/demo/index" 
  }
 }

然后在模板文件中进行使用就可以了,其中name的值为json配置文件中usingComponents的键值:

<demo name="comp" />
<!--使用demo组件,并传入值为“comp”的name属性(参数)-->

这样就可以了。

PS:组件中不会自动引用公共样式,如果需要则需在样式文件中引入:

@import "../../app.wxss";

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
setInterval与clearInterval的使用示例代码
Jan 28 Javascript
jquery判断checkbox是否选中及改变checkbox状态的实现方法
May 26 Javascript
基于JavaScript代码实现自动生成表格
Jun 15 Javascript
js enter键激发事件实例代码
Aug 17 Javascript
JS中常用的正则表达式
Sep 29 Javascript
微信小程序左滑删除效果的实现代码
Feb 20 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
Jul 06 Javascript
JS中的多态实例详解
Oct 15 Javascript
JavaScript模板引擎应用场景及实现原理详解
Dec 14 Javascript
Vue项目中Api的组织和返回数据处理的操作
Nov 04 Javascript
微信小程序canvas截取任意形状的实现代码
Jan 13 Javascript
Antd中单个DatePicker限定时间输入范围操作
Oct 29 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
May 22 #Javascript
详解wepy开发小程序踩过的坑(小结)
May 22 #Javascript
vue项目中mock.js的使用及基本用法
May 22 #Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
May 22 #Javascript
vue以组件或者插件的形式实现throttle或者debounce
May 22 #Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
May 22 #Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
May 22 #Javascript
You might like
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
PHP中date()日期函数有关参数整理
2011/07/19 PHP
解析PHP中一些可能会被忽略的问题
2013/06/21 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
Symfony查询方法实例小结
2017/06/28 PHP
php生出随机字符串
2017/07/06 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
phpinfo的知识点总结
2019/10/10 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
csdn 批量接受好友邀请
2009/02/19 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
浅析Vue中method与computed的区别
2018/03/06 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
python聊天程序实例代码分享
2013/11/18 Python
python基于phantomjs实现导入图片
2016/05/13 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
Python collections.deque双边队列原理详解
2020/10/05 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
建筑实习自我鉴定
2013/10/18 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers
python实现双向链表原理
2022/05/25 Python