记录一款笑话小程序的创作完整历程(二)
笑话小程序真容-先睹为快
欢迎扫码围观,欢迎光临芝麻笑话小程序!谢谢!
首页
首页包含的功能:
- 展示内容列表
- 点击查看详情
- 点赞
- 点击右上角分享整个小程序
- 分享单个内容
展示内容列表
技术点:
技术实现
引入uni-card卡片组件
<view class="example-body">
<uni-card :isShadow="true" :title=item.title mode="title" thumbnail="/static/zhimaxiaohua.png" note="true"
@click="">
<view>
<view class="content-box">
<text class="content-box-text">卡片内容</text>
</view>
</view>
<template v-slot:footer>
<view class="footer-box">
<view class="applause" @click="footerClick('喜欢')">
<text>喜欢</text>
</view>
</view>
</template>
</uni-card>
</view>
引入v-for循环指令
<view v-for="(item,index) in dataList">
</view>
数据展示样例
<template>
<view>
<view v-for="(item,index) in dataList">
<view class="example-body">
<uni-card :isShadow="true" :title=item.title mode="title" thumbnail="/static/zhimaxiaohua.png"
note="true" @click="">
<view>
<view class="content-box">
<text class="content-box-text">{{item.content}}</text>
</view>
</view>
<template v-slot:footer>
<view class="footer-box">
<view class="applause" @click="footerClick('喜欢')">
<text>喜欢</text>
</view>
</view>
</template>
</uni-card>
</view>
</view>
</view>
</template>
<script>
import indexJokeJsonData from "@/mockdata/index-jokes.json"
export default {
data() {
return {
dataList: indexJokeJsonData
}
}
}
</script>
Mock的json数据 index-jokes.json
[
{
"id": 1,
"title": "芝麻笑话",
"content": "这是内容"
},
{
"id": 2,
"title": "芝麻笑话",
"content": "这是内容"
},
{
"id": 3,
"title": "芝麻笑话",
"content": "这是内容"
}
]
点击查看详情
点击查看详情后,会跳转到详情页,跳转会携带相关的参数,比如id。
点击事件的函数:@click=“viewDetail(index)”
methods: {
viewDetail: function(index) {
uni.navigateTo({
url: '/pages/joke-detail/joke-detail?index=' + index + '&dataSource=indexJokes'
})
}
}
详情页接收函数,需创建一个joke-detai.vue文件
<template>
<view>
<view class="content-box">
<view class="head">
<text>{{list[index].title}}</text>
</view>
<text class="content-box-text">
{{list[index].content}}
</text>
</view>
</view>
</template>
<script>
import indexJokeJsonData from "@/mockdata/index-jokes.json"
export default {
data() {
return {
list: indexJokeJsonData,
index: 0
}
},
onLoad: function(option) {
this.index = option.index;
var dataSourceParam = option.dataSource;
if(dataSourceParam==='indexJokes') {
this.list=indexJokeJsonData
}
}
}
</script>
点赞
footerClick(types) {
uni.showToast({
title: types,
icon: 'none'
})
}
点击右上角分享整个小程序
分享单个内容
这两部分内容会放到一个关于微信小程序分享功能的专题记述
样式汇总
index.vue首页样式
<style lang="scss">
.example-body {
display: block;
padding: 1px 0;
}
.example-box {
margin: 12px 0;
}
.image-box {
display: flex;
flex-direction: column;
height: 350rpx;
overflow: hidden;
}
.image {
width: 100%;
height: 100%;
flex: 1;
}
.content-box {
padding-top: 20rpx;
}
.content-box-text {
font-size: 14px;
line-height: 22px;
}
.footer-box {
display: flex;
justify-content: space-between;
flex-direction: row;
}
.footer-box__item {
align-items: center;
padding: 1px 0;
font-size: 12px;
color: #666;
}
.applause image {
width: 60rpx;
height: 60rpx;
}
button::after {
border: none;
}
.applause button {
background-color: #FFFFFF;
}
</style>
|