微信小程序模板(template)和组件的区别

摘要:
template模块主要是展示,方法需要在使用template的页面中定义,对于通用的数据,最先想到或者理应是template,但是template有个缺点,那就是只是页面效果,不会有对应的js操作。而component组件,则拥有自己的js文件,整个component组件类似一个page页面。简单来说,只是展示用,建议使用template,组件中涉及到较多的逻辑,建议使用component。

template模块主要是展示,方法需要在使用template的页面中定义,对于通用的数据,最先想到或者理应是template,但是template有个缺点,那就是只是页面效果,不会有对应的js操作。

而component组件,则拥有自己的js文件,整个component组件类似一个page页面。简单来说,只是展示用,建议使用template,组件中涉及到较多的逻辑,建议使用component。

一、template模块

定义模板,一份template.wxml文件中能写多个模板,用name区分

<template name="easy">
<text class='red' bindtap="click">I'm Easy,{{hello}}</text>//注意:1、这里有个点击事件。2、{{hello}}是使用模板时传入的属性(参数)
</template>
 
<template name="Davi">
<text>I'm Davi,nice to meet you</text>
</template>

在页面中引入并使用模板

<!--index.wxml-->//导入模板
<import src="../../template/template.wxml" />
 
<view class="container">
<!--引用template模板,用is="easy"的方式,选择模板 -->
<template is="easy"data="{{...str}}" />//传入参数,必须是对象
<template is="Davi" />
</view>

在页面中引入模板样式。模板拥有自己的样式文件(用户自定义),只需要在使用页面的wxss文件中引入即可

/**index.wxss**/@import "../../template/template.wxss"; //引入template样式
.container{display:flex;
}

由于template中没有js文件,因此template中的点击事件,在使用页面中的js里定义。如上,name=easy的模板有个点击事件click,则click方法,需要在index.js中定义

//index.js
Page({
data: {
str:{
hello:”nice to meet you“
}
},
click:function(){
console.log("click Easy");
}
})

因为template没有自己的js文件,所以在列表中涉及到列表子项独立的操作,建议将列表子项写成component。

二、component组件

小程序组件文档:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/custom-component/

创建一个component,只需要在其目录下右键--新建--component,即可直接生成4个文件(json中的设置会默认"component": true)。component组件的结构和page的结构类似,都是有js、wxml、wxss、json四类文件组成。wxss代码与page是一样的,代码就不贴了。其他代码如下:

wxml代码,与page一样

<!--components/hello/hello.wxml-->
<text class="red"bindtap="click">component {{type}} hello {{name}}</text>

js代码,与page有些许不同

//components/hello/hello.js
Component({
/**
* 组件的属性列表,使用组件时,传入的参数
*/properties: {
name:{
type:String,
value:''}
},
 
/**
* 组件的初始数据,组件内部的数据
*/data: {
type:"组件"},
 
/**
* 组件的方法列表,组件内部的方法
*/methods: {
click:function(){
console.log("easy");
}
}
})

json代码,需要注明"component": true,表示这是一个组件

// components/hello/hello.json
{
"component": true,
"usingComponents": {}
}

page中的使用,与template模板不同,component不需要在wxml中引入,但需要在json中指明使用的组件名及路径。

<!--index.wxml-->
<view class="container">
<hello name="Easy"/>//使用hello组件,并传入值为“Easy”的name属性(参数)
</view>
//index.json
{
"usingComponents":{
"hello":"/components/hello/hello" //前面的hello是组件名,可以更改。路径指向使用的组件
}
}

免责声明:文章转载自《微信小程序模板(template)和组件的区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇OpenStack(7)-cinder服务部署直观明了的总结TCP滑动窗口机制原理及作用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[转]微信小程序、微信公众号、H5之间相互跳转

本文转自:https://www.cnblogs.com/colorful-paopao1/p/8608609.html 转自慕课网 一、小程序和公众号 答案是:可以相互关联。 在微信公众号里可以添加小程序。 图片有点小,我把文字打出来吧: 可关联已有的小程序或快速创建小程序。已关联的小程序可被使用在自定义菜单和模版消息等场景中。 公众号可关联同主体的1...

【转】微信小程序实现自动化测试

山雨欲来风满楼,最近微信小程序相关开发文章吹遍大江南北,亦有摧枯拉朽万象更新之势。问小程序形为何物,直教IT众生怡情悦性高潮迭起。作为一名有着远大理想“包袱”与互联网变革 “使命感”的测试工程师,我再也按耐不住内心中的渴望与好奇,代表测试行业各大门派肩负起了迎接时代变革的挑战。话说经历了围观查看、溜边打探等种种过程,终于在隔壁老王那里弄到了测试体验资格,开...

微信小程序如何在使用wx.request使用cookie

我主要是做asp.net mvc后端开发的,经常使用Jquery的ajax与后台的Web API进行数据交互。 最近公司要做一个小程序,要实现小程序与Web前端的通信,当然小程序是可以实现socket通信的,那样的话,我需要给小程序写socket接口,给web写restful的接口,很显然我不乐意这么干。 我的各个交互都是需要知道用户状态的,web端使用c...

解决微信小程序中在其他页面无法使用app.js中获取的userInfo或openid的问题

解决微信小程序中在其他页面无法使用app.js中获取的userInfo或openid的问题 https://blog.csdn.net/mayuko2012/article/details/78252870 Hades_Dev 2017-10-16 18:53:12 19029 收藏 7展开问题最近写小程序中,在app.js里获取用户的openid和use...

小程序初识

1.rpx 是微信小程序解决自适应屏幕尺寸的尺寸单位。微信小程序规定屏幕的宽度为750rpx。 无论是在iPhone6上面还是其他机型上面都是750rpx的屏幕宽度,拿iPhone6来讲,屏幕宽度为375px,把它分为750rpx后, 1rpx = 0.5px。 微信小程序同时也支持rem尺寸单位, rem 规定屏幕的宽度为20rem, 所以 1rem...

Taro开发微信小程序的初体验

了解Taro 听说Taro是从几个星期前开始的,在一次饭桌上,一个小伙伴说:“Hey, 你听说了Taro么,听说只需要写一套程序就可以生成H5,小程序以及RN的代码模板,并且类似于React的语法。”“哦?还有这么好的事,赶紧研究一下。” Taro初体验 去官网,Github了解了一下,Taro是由京东·凹凸实验室团队开发的,在掘金上看到他们的发稿,大致归...