原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处
光说不练假把式
废话不多说直接上图
小程序基础内容已经讲解差不多了,这一篇就带大家一起应用前面的知识从0开始,以社区专栏为样板,做一个小程序版社区专栏。
运用到的知识有:
你可以通过小程序基础篇系列学习以上知识
小程序专栏,汇总大家关注的专题和作家的系列文章。
根据以上需求,画出原型图:
|--images
|--pages
|--index
|--article
|--articledetail
|--log
|--utils
|--wxParse
|--app.js
|--app.json
|--app.wxss
|--weui.wxss
<view class="weui-grids">
<block wx:for-items="{{gridIcons}}" wx:key="{{index}}">
<navigator url="/pages/article/list?path={{item.path}}&desc={{item.desc}}&type=column" class="weui-grid" hover-class="weui-grid_active">
<image class="weui-grid__icon" src="/images/{{item.icon}}"/>
<view class="weui-grid__label">{{item.text}}</view>
</navigator>
</block>
</view>
Page({
data:{
gridIcons: [
{icon:'1.png',text:'新手训练营',path:'/column/1',desc:'这是新手上路的专栏,辅助新手0基础开始上路'},
{icon:'2.jpg',text:'深度思考',path:'/column/2',desc:'小程序深度思考,技术、商业、未来的一切'},
{icon:'3.png',text:'精品问答',path:'/column/3',desc:'这里汇总了的技术问答问题,看看你的问题能否解决'},
{icon:'4.png',text:'社区攻略',path:'/column/4',desc:'玩转社区,你需要了解的规则都在这里'},
{icon:'5.png',text:'填坑系列',path:'/column/5',desc:'toBeMN的填坑之路系列,带你跳过开发中的那些坑'},
{icon:'6.jpg',text:'JS新手学习',path:'/column/7',desc:'丁小柒JavaScript新手学习系列,带你从零入门快上车'},
{icon:'7.jpg',text:'小程序基础篇',path:'/column/10',desc:'JeremyLu的高品质基础篇,对生命周期、数据解密、数据绑定等做深度分析'},
{icon:'8.jpg',text:'框架细节',path:'/column/6',desc:'Roluce 框架细节系列,带你解密那些容易忽略的细节'},
{icon:'9.png',text:'IDE心得',path:'/column/8',desc:'微信Web开发者工具使用心得,工欲善其事必先利其器'}
]
}
})
<view class="page">
<view class="weui-cells__title">{{desc}}</view>
<view class="weui-cells weui-cells_after-title">
<block wx:for-items="{{articles}}" wx:key="{{index}}">
<navigator url="../articledetail/detail?id={{item.id}}" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__hd">
<image src="{{item.author.headimg}}" style="margin-right: 5px;vertical-align: middle;width:20px; height: 20px;"></image>
</view>
<view class="weui-cell__bd">{{item.title}}</view>
<view class="weui-cell__ft weui-cell__ft_in-access">{{item.createTime}}</view>
</navigator>
</block>
</view>
</view>
Page({
data:{
//分页当前页
pageIdx: 0,
//文章列表
articles: []
},
onLoad:function(options){
//传入类型
var type = options.type;
//专栏文章
if(type === 'column'){
var path = options.path;
this.setData({desc: options.desc})
//查询数据
this.getColumnArticle(path);
}else if(type === 'search'){//搜索文章
this.setData({desc: options.text})
//查询数据
this.searchArticle(options.text);
}
},
//根据专栏路径查询文章列表
getColumnArticle: function(path){
var that = this;
httpclient.req(
'/wxclub' + path + '/' + that.data.pageIdx,
{
apiName: 'WX_CLUB_ARTICLES',
},
'GET',
function(res){
var datalist = res.data.data || [];
that.setData({articles:datalist})
for(var i = 0; i < datalist.length; i++){
//将文章放到本地缓存
wx.setStorage({
key: datalist[i]['id'],
data: datalist[i]
});
}
}
)
},
//根据文章标题查询
searchArticle: function(text){
var that = this;
httpclient.req(
'/wxclub/column/search/' + that.data.pageIdx,
{
apiName : 'WX_CLUB_SEARCH',
text: text
},
'GET',
function(res){
var datalist = res.data.data || [];
that.setData({articles: datalist})
for(var i = 0; i < datalist.length; i++){
//将文章放到本地缓存
wx.setStorage({
key: datalist[i]['id'],
data: datalist[i]
});
}
}
)
}
})
文章详情实现,从列表页面传文章ID到详情页,根据文章ID从缓存中读取文章信息。
<import src="../../wxParse/wxParse.wxml"/>
<view class="page">
<view class="page_hd">
<view bindtap="bindViewTap" class="userinfo">
<image class="userinfo-avatar" src="{{avatarUrl}}" background-size="cover"></image>
<view class="userinfo-mark">
<text class="userinfo-nickname">{{nickName}}
</text>
<text class="userinfo-remark">{{remark}}</text>
</view>
</view>
</view>
<view class="page__bd">
<view class="wxParse">
<template is="wxParse" data="{{wxParseData:content.nodes}}"/>
</view>
</view>
</view>
Page({
data:{
avatarUrl: '',
nickName: '',
remark: ''
},
onLoad:function(options){
var that = this;
var id = options.id;
//根据文章ID,从本地缓存中获取文章
wx.getStorage({
key: id,
success: function(res){
var data =res.data;
//将标题栏设置为文章标题
wx.setNavigationBarTitle({
title: data.title,
success: function(res) {
}
})
that.setData({
avatarUrl: data.author.headimg,
nickName: data.author.nickname,
remark: data.author.remark
})
//使用wxParse将html转为wxml,请在github上自行参考wxParse
WxParse.wxParse('content', 'html', data.content, that,5);
}
})
}
})
以上内容基本上涵盖可小程序基础知识,对分散的知识点串联起来使用,加以巩固。
后台使用java写的,定时从社区爬取最新的专栏文章数据。
基础学习:我的专栏
小程序源码:chaptor_07
后台源码:springboot-weapp-demo