微信小程序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 相关文章推荐
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
Apr 16 Javascript
Js 回车换行处理的办法及replace方法应用
Jan 24 Javascript
jquery隐藏标签和显示标签的实例
Nov 11 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
Jan 14 Javascript
轻松实现javascript图片轮播特效
Jan 13 Javascript
新入门node.js必须要知道的概念(必看篇)
Aug 10 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
Sep 24 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
Sep 22 jQuery
vue项目中实现的微信分享功能示例
Jan 21 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
Sep 24 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
JS相册图片抖动放大展示效果的示例代码
Jan 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重定向的3种方式
2013/03/07 PHP
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
基于jquery的模态div层弹出效果
2010/08/21 Javascript
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
python 远程统计文件代码分享
2015/05/14 Python
Python实现Logger打印功能的方法详解
2017/09/01 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
态度决定一切演讲稿
2014/05/20 职场文书
红色旅游心得体会
2014/09/03 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
父亲节感言
2015/08/03 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
数据库连接池
2021/04/06 MySQL