微信小程序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 相关文章推荐
jQuery 事件队列调整方法
Sep 18 Javascript
用jQuery扩展自写的 UI导航
Jan 13 Javascript
12个非常有创意的JavaScript小游戏
Mar 18 Javascript
jquery 提示信息显示后自动消失的具体实现
Dec 18 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
React.js入门实例教程之创建hello world 的5种方式
May 11 Javascript
JS简单实现无缝滚动效果实例
Aug 24 Javascript
JS多物体实现缓冲运动效果示例
Dec 20 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
Jan 04 Javascript
AngularJS2中一种button切换效果的实现方法(二)
Mar 27 Javascript
js实现会跳动的日历效果(完整实例)
Oct 18 Javascript
angular中的post请求处理示例详解
Jun 30 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生成静态HTML文档的原理
2012/10/29 PHP
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
php自动加载方式集合
2016/04/04 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
js实现的折叠导航示例
2013/11/29 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
js实现金山打字通小游戏
2020/07/24 Javascript
python33 urllib2使用方法细节讲解
2013/12/03 Python
Python获取当前时间的方法
2014/01/14 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
python绘制直方图和密度图的实例
2019/07/08 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
蛋白质世界:Protein World
2017/11/23 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
高中三年学习生活的自我评价
2013/10/10 职场文书
大学生最新职业生涯规划书范文
2014/01/12 职场文书
五星级酒店餐饮部总监的标准岗位职责
2014/02/17 职场文书
劳资协议书范本
2014/04/23 职场文书
优质服务演讲稿
2014/05/14 职场文书
大学生简短的自我评价
2014/09/12 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
亲戚关系证明
2015/06/24 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书