很多时候在我们做项目的时候会到很多布局和样式差不多的代码时 可以考虑使用 template 来减少冗余代码。
比如一下列表的布局样式,可以使用同一模板。
效果图
使用方法是如下:
- 在根目录下建一个新文件夹命名为 template;
2.在 template 下建相关模板文件.wxml和.wxss文件
template文件夹结构图3.在模板文件/template/goods.wxml中设置模板的模板名name,在<template></template>中定义代码片段:
<template name='goods'>
<view class='goods'>
<image class='goods-hd' src='{{img}}' />
<view class='goods-bd'>
<view class='goods-bd_name'>{{goodsName}}</view>
<view class='goods-bd_hot' wx:if='{{hot>100}}'>人气{{hot}}<image src='../../images/hot.png' /></view>
<block wx:if="{{kinds}}">
<view class='goods-bd_kinds' >
<block wx:for='{{kinds}}'>
<view>{{item}}</view>
</block>
</view>
</block>
<view class='goods-bd_sale' wx:if='{{sale>=0}}'>已售{{sale}}</view>
</view>
</view>
</template>
4.在模板样式文件/template/goods.wxss中定义模板样式
.goods {
display: flex;
display: -webkit-flex;
width: 100%;
padding: 20rpx;
margin-top: 10rpx;
background: #fff;
box-sizing: border-box;
}
.goods-hd {
width: 180rpx;
height: 180rpx;
margin-right: 10rpx;
}
.goods-bd {
position: relative;
flex:1;
-webkit-flex:1;
padding: 10rpx;
}
.goods-bd_name {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.goods-bd_hot {
color: #E9652D;
font-size: 26rpx;
}
.goods-bd_hot>image {
width: 23rpx;
height: 23rpx;
margin-left: 10rpx;
}
.goods-bd_kinds {
display: flex;
display: -webkit-flex;
margin-top: 10rpx;
}
.goods-bd_kinds >view {
padding-left: 10rpx;
padding-right: 10rpx;
margin-right: 20rpx;
height: 42rpx;
line-height: 42rpx;
font-size: 22rpx;
color: #888;
border: 1rpx solid #bfbfbf;
border-radius: 10rpx;
}
.goods-bd_sale {
position: absolute;
left: 10rpx;
bottom: 10rpx;
color: #888;
font-size: 26rpx;
}
5.在需要使用该模板的页面引用模板文件,注意路径位置。使用 is 属性 对应已声明的模板name 使用该模板,然后将模板所需要的data传入(这里是用了ES6的扩展运算符,所以模板里面绑定的数据前面不需要 item)
<!--pages/goods/index.wxml-->
<import src="../../template/goods.wxml" />
<block wx:for="{{goodsArr}}">
<template is="goods" data="{{...item}}"></template>
</block>
6.在需要使用模板的样式文件中也引入对应模板的样式文件
/* pages/goods/index.wxss */
@import "../../template/goods.wxss";
7.这里为方便呈现效果,自定义了一些data数据:
// pages/goods/index.js
Page({
/**
* 页面的初始数据
*/
data: {
goodsArr:[
{
img: '/images/cat.jpeg',
goodsName: '萌哒一只',
sale: '980',
hot: '999',
},
{
img: '/images/flower.jpeg',
goodsName: '鲜花',
sale: '1000',
},
{
img: '/images/tea.jpg',
goodsName: '颗颗奶茶',
sale: '99',
kinds: ['美食甜品','娱乐消费']
}
]
},
})
网友评论