本文作者Harvie_Z ,已经获得授权

话不多说,先看效果图

(此图片来源于网络,如有侵权,请联系删除! )

个人觉得先看官方文档,了解它有什么,再开始动手写效果会好点。

小程序文件结构

一个页面由四个文件组成,并且四个文件必须同名

wxml : 页面结构,类似html。

wxss : 页面样式表,类似css。

json : 页面配置

js :页面逻辑。

程序配置

在 app.json 文件中注册需要加载的页面、navigationBar和底部tab的各种属性、网络超时时间。

注册页面

"pages":[

"pages/index/index",

"pages/index/detail",

"pages/login/login",

"pages/membercenter/membercenter",

"pages/recommend/recommend",

"pages/attention/attention"

],

放在第一的页面将会在程序加载完成时显示。

配置窗口

"window":{

"backgroundTextStyle":"light",

"navigationBarBackgroundColor": "black",

"navigationBarTitleText": "WeChat",

"navigationBarTextStyle":"white",

"backgroundColor": "#eaeaea"

},

这里配置的是所有窗口的显示样式,如果某个页面需要更改显示样式,直接为相应的页面添加一个json文件配置即可。

其他的json文件只能配置window属性。

配置tabBar

"tabBar": {

"color": "black",

"borderStyle": "white",

"selectedColor": "rgb(176,170,168)",

"backgroundColor": "white",

"list": [{

"pagePath": "pages/index/index",

"text": "精华",

"iconPath": "images/tabBar/tabBar_essence_click_icon.png",

"selectedIconPath": "images/tabBar/tabBar_essence_icon.png"

},

{

"pagePath": "pages/recommend/recommend",

"text": "推荐关注",

"iconPath": "images/tabBar/tabBar_new_click_icon.png",

"selectedIconPath": "images/tabBar/tabBar_new_icon.png"

}

}]

},

配置底部tabBar的文字颜色、图标、页面路径等,和iOS开发中设置tabBar的思路挺像的。

网络超时时间和调试开关

"networkTimeout": {

"request": 10000

},

"debug":true

networkTimeout配置的是网络超时时间,这里的时间单位是毫秒,这里配置的也就是10秒超时。debug控制是否开启调试,如果开启了,可以看到log打印。

基本的配置搞定后,就可以开始填内容了。

顶部tab

{{item}}

使用wx:for结构循环渲染出5个Item

为它们绑定一个点击方法switchTab

设置一个自定义属性data-idx用来记录每个Item的索引,以便在点击的时候能够知道是哪个Item被点击。

内容列表

...

...

因为需要横向分页滚动,所以我选择使用swiper作为容器,然后再让每个swiper-item包裹一层可以上下滚动的scrollView,再使用wx:for循环渲染出列表。

navigator 是导航组件。

template,即模板,作用是定义代码片段,然后在不同的地方调用。

使用网络数据渲染页面

小程序中不能操作Dom,动态渲染页面的唯一方式就是在页面中绑定数据,然后在js文件中修改数据。比如在第一个swiper-item中绑定了一个数组allDataList,当在js文件中调用setData方法修改这个数组时,列表也会被修改。

要使用网络数据当然得先进行网络访问,微信已经提供了网络请求的API。

var that = this;

wx.request({

url: 'http://api.budejie.com/api/api_open.php?a=list&c=data&type=1',

data: {},

method: 'GET',

header: "application/json", // 设置请求的 header

success: function(res){

console.log(res);

//通过修改绑定的数组来改变页面

that.setData({

allDataList: res.data.list

});

},

fail: function(){

// fail

},

complete: function(){

// complete

}

})

请求结果如下

(此图片来源于网络,如有侵权,请联系删除! )

请求结果.png

从结果中可以看出,数组中装着的是一个个的对象,我们可以直接通过字段取到他们的值。所以我们在wxml文件中绑定数据的时候就可以这样写:

{{item.name}}

{{item.create_time}}

这样就直接绑定了头像 profile_image、名字 name、创建时间 create_time。其他部分也是用这种方式绑定的。

下拉刷新

实现下拉刷新有两种方式,第一种是绑定scrollView的bindscrolltoupper方法

scrolltoupper:function(){

//刷新数据

}

还有一种是在Page的onPullDownRefresh方法中发出请求刷新数据。

//监听用户下拉动作

onPullDownRefresh:function(){

//刷新数据

},

上拉加载更多

上拉加载更多也有两种方法,第一种是绑定scrollView的bindscrolltolower方法,但是列表数量少的时候,这个方法不靠谱,经常不会触发

scrolltolower:function(){

//发出请求添加数据

}

第二种方法是在Page的onReachBottom方法中发出请求加载数据

onReachBottom:function(){

currentPage++;

//发出请求添加数据

}

项目地址:https://github.com/ZhangHangwei/WXBaiSi

文件下载:WXBaiSi-master.zip

接口

首页 http://api.budejie.com/api/api_open.php?a=list&c=data&type=1

type=1 : 全部

type=41 : 视频

type=10 : 图片

type=29 : 段子

type=31 : 声音

加载更多 : 添加两个字段

page : 页码 (加载下一页需要)

maxtime : 获取到的最后一条数据的maxtime字段 (加载下一页需要)

评论列表 http://api.budejie.com/api/api_open.php?a=dataList&c=comment&data_id=22062938&hot=1

data_id : 帖子ID

hot : 获取到最热评论需要这个字段

page : 页码 (加载下一页需要)

lastcid : 获取到的最后一条评论的ID(加载下一页需要)

推荐关注

左侧列表 http://api.budejie.com/api/api_open.php?a=category&c=subscribe

右侧列表 http://api.budejie.com/api/api_open.php?a=list&c=subscribe&category_id=35

category_id : 左侧栏目 ID

page : 当前页码 ,请求第一页数据的时候可不填

我的 http://api.budejie.com/api/api_open.php?a=square&c=topic

百思不得姐php源码,微信小程序实战教程: 仿百思不得姐demo(附源码)相关推荐

  1. android日历提醒小程序源码,微信小程序倒班日历简洁实用demo完整源码

    设计思路 日期选择器,单个View 一共有42个元素 当月的日期 以及 前后月份的部分日期 月份选择器 这个简单 一年一共12个月 年份选择器 这个需要根据当前年份 前后生成一系列的年份 日期选择器大 ...

  2. 微信小程序实战教程:模仿—网易云音乐(二)

    接上一篇:微信小程序实战教程:模仿-网易云音乐(一) wxml进行渲染: <!--歌词--> <view class="lyric-content" hidden ...

  3. 微信小程序实战教程-闫涛-专题视频课程

    微信小程序实战教程-38472人已学习 课程介绍         介绍微信小程序API,包括页面布局.网络交互.媒体文件.本地缓存.地理位置.WebSocket和传感器技术,后以翼健康为模板,开发一套 ...

  4. 基于云开发的微信小程序实战教程(二)

    基于云开发的微信小程序实战教程(二) 上篇文章中,简单介绍了下小程序云开发的概念,还有开发工具的安装和配置,云开发环境已经搭建完毕. 本章主要内容:微信开发者工具如何使用,小程序云开发的基础目录结构 ...

  5. 基于云开发的微信小程序实战教程(一)

    基于云开发的微信小程序实战教程(一) 最近刚开发了款小程序,在开发过程中发现,基于云开发的教程资源不是很多,而且很不详细.所以边实战边总结了下云开发的简单教程,希望对你有所帮助. 本章主要内容:什么是 ...

  6. 微信小程序实战教程1503---生成二维码

    在微信小程序中,如果我们可以自己将指定内容生成二维码,出示给别人,将是一个比较有用的功能.但是微信小程序API中,目前暂时还没有这个功能,但是我们可以通过变通的方法,来实现这一功能. 本文所提到的方法 ...

  7. uniapp开发——微信小程序获取上传图片的拍摄时间(附源码)

    如果是单纯地使用uniapp做app或者h5开发,可以直接在上传的时候 uni.chooseImage 获取到图片的最后修改日期,那么可以使用其作为拍摄日期. 但是,一切的一切都源于微信小程序的接口封 ...

  8. 微信小程序富文本编辑器editor+rich-text(附源码)

    之前小程序一直都是使用自己写的接口,小程序远程获取使用富文本编辑器的内容,比如UEditor,wangEditor等.我们可以选择插件wxparse和自带的rich-text,但是这些并不能完全转义他 ...

  9. springboot基于微信小程序的校园外卖系统 毕业设计-附源码091024

    Springboot基于微信小程序的校园外卖系统 摘要 随着生活质量的日益改善以及生活节奏的日益加快,人们对餐饮需求的质量以及速度也随之发生着变化.为了满足社会需求,餐饮的高质量和快节奏也渐渐使电话订 ...

  10. 小程序获取城市行政区号_微信小程序 省市区选择器实例详解(附源码下载)

    微信小程序 省市区选择器: 最近学习微信小程序,为了检验自己的学习效果,自己做一个小示例,网上搜索下类似的实例,发现这个更好,大家看下. 一.区域间手势滑动切换,标题栏高亮随之切换 思路是:拿当前的c ...

最新文章

  1. java自定义标签简单_JSP 自定义标签之一 简单实例
  2. 怎么做一个定时消息提醒_如何用Nodejs编写一个定时消息提醒应用?
  3. Linux协议栈网桥部分之CAM表操作
  4. linux如何检查进程,如何在Linux中检查进程的执行时间
  5. Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)
  6. 为什么redux要返回一个新的state引发的血案
  7. 【数据预测】基于matlab双向长短时记忆(biLSTM)数据预测【含Matlab源码 1793期】
  8. BIO、NIO、AIO的简单个人理解,同步异步和阻塞非阻塞的简单理解
  9. MyCat分库分表入门示例
  10. WEBRTC浅析(五)视频Nack包的发送判断逻辑以及数据流
  11. 【重磅】聚焦券商终端业务,博睿数据发布新一代券商终端核心业务体验可观测平台
  12. goldendict for linux,GoldenDict(for Linux)配置无道词典
  13. [暑期实训] 任务记录 2021-06-29
  14. 使用GNN求解组合优化问题
  15. mysql 按首字母进行检索数据
  16. 【项目实战】Java POI之Word导出经典案例一
  17. 吃球球C++ 配合easyX
  18. (翻译)文章列表(Article List)
  19. 图像式物体尺寸测量算法设计
  20. 戴尔R730服务器增加内存,多功能存储密集型 戴尔R730xd拆解评测

热门文章

  1. 【Web_接口爬虫_Python3_百度一下_requestjsonetree】百度一下,检索“成都”,爬取标题、内容、链接地址,保存文本_20200301
  2. three doors
  3. java deflate_JAVA中的deflate压缩实现方法
  4. 看的见的算法——三门问题
  5. Dell Latitude E6400找不到Broadcom USH及Contacted SmartCard驱动
  6. model.evaluate中的verbose的作用
  7. 台式计算机截图快捷键,台式电脑怎么用快捷键截图
  8. java 发微信视频_分享java微信开发视频
  9. java课程设计源码(游戏:急速生存)
  10. 【iMessage苹果群发】OpenSSL将重修立连接