微信小程序-仿知乎主题日报列表

2024-08-23 22:18

本文主要是介绍微信小程序-仿知乎主题日报列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个篇文章继续带大家一起练习微信小程序的布局。

下面将会按照以下的顺序介绍:

  1. 网络请求的实现

  2. 工具类的实现

  3. 布局的实现

  4. 逻辑的实现

  5. 样式的实现

1.网络请求的实现

在js文件中通过Page()函数注册一个界面,然后在data定义一个theme对象,这个对象用来接收网络请求的结果,接着在onLoad()函数中调用wx.request进行网络请求,请求成功的数据,赋值给data中的theme对象。

var URL_THEME='http://news-at.zhihu.com/api/4/theme/11';Page({data:{theme:{}},/*** 加载网络上的数据*/onLoad: function () {console.log('--onLoad--');var that=this;wx.request({url: URL_THEME,method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECTsuccess: function(res){that.setData({'theme': res.data})},fail: function() {},complete: function() {}})},})

2.工具类的实现

修改utils文件中的util.js工具类,这个工具类是获取日期的工具类

function formatTime(date) {var year = date.getFullYear()var month = date.getMonth() + 1var day = date.getDate()return [year, month, day].map(formatNumber).join('/')}function formatNumber(n) {n = n.toString()return n[1] ? n : '0' + n}module.exports = {formatTime: formatTime}

工具类在Page()函数中使用,先通过require将工具类引入,然后在onLoad()函数中调用工具类中的formatTime方法获取系统时间,并把时间赋值给data中的time变量。

var util = require('../../utils/util.js')...Page({data:{theme:{},time:"",},/*** 加载网络上的数据*/onLoad: function () {this.setData({'time': util.formatTime(new Date())})console.log('--onLoad--');var that=this;wx.request({............})},})

3.布局的实现

整个布局分类三部分:轮播图,今日热点,重复的item.

<!--轮播图--><swiper indicator-dots="true" autoplay="true" interval="4000" duration="2000"><block wx:for="{{theme.editors}}" wx:for-index="index"><swiper-item class="swiper-items"  ><image class="swiper-image" src="{{theme.image}}"></image></swiper-item></block></swiper><!--今日热点--><View class="view-tile" ><text class="view-tile-text">今日热点</text></View><!--每一个item--><block wx:for="{{theme.stories}}" wx:for-index="index"><View class="view-item "><block wx:for="{{item.images}}" wx:for-item="imgUrl" wx:for-index="index"><image wx:if="{{imgUrl!=null}}" class="imgClass" src="{{imgUrl}}" binderror="imageError"></image></block><View class="view-item-text "><text class="item-text-title">{{item.title}}</text><View class="view-item-text-time "><text class="item-text-time">{{time}}</text></View></View></View><View class="view-line" > </View></block>

4.逻辑的实现

1.引入了util.js工具,获取系统的时间,并把值赋值给time变量

2.实现网络强求,获取json字符,并把json字符窜的值赋值给theme这个对象

3.imageError监听图片的加载情况

var util = require('../../utils/util.js')var URL_THEME='http://news-at.zhihu.com/api/4/theme/11';Page({data:{theme:{},time:""},/*** 加载网络上的数据*/onLoad: function () {this.setData({'time': util.formatTime(new Date())})console.log('--onLoad--');var that=this;wx.request({url: URL_THEME,method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECTsuccess: function(res){that.setData({'theme': res.data})},fail: function() {},complete: function() {}})},/*** 监听图片加载*/imageError:function(e){console.log('image3发生error事件,携带值为', e.detail.errMsg)}})

5.样式的实现

/*今日热点的view的样式*/.view-tile{display: block;width: 100%;height: 25px;padding-top: 5px;background-color: ghostwhite;}/*每一个item的view的样式*/.view-item{display: flex;justify-content: center;align-items: center;flex-direction: row;}/*每一个item中文本的view的样式*/.view-item-text{display: flex;justify-content:center;align-items: flex-start;flex-direction: column;flex: 1;}/*每一个item中时间的view的样式*/.view-item-text-time{display: flex;justify-content:flex-end;align-items: flex-end;width: 100%;}/*分界线view的样式*/.view-line{width: 100%;height: 10px;background-color: gainsboro;}/*图片的样式*/.imgClass{width: 70px;height:70px;margin-bottom: 15px;margin-left: 15px;margin-top: 15px;border-radius: 50%;}/*今日热点的文字样式*/.view-tile-text{margin: 5px;}/*每一个item中文字的样式*/.item-text-title{/*规定文字显示两行,超过两行的使用省略号*/display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;word-break: break-all;overflow: hidden;font-size: 18px;margin-bottom: 15px;margin-top: 15px;margin-left: 15px;margin-right: 5px;}/*每一个item中时间的样式*/.item-text-time{color: gray;margin-right: 5px;margin-bottom: 5px;}

5.效果图

图片空白处是图片加载失败,这个原因暂时还没有解决。

这篇关于微信小程序-仿知乎主题日报列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1100647

相关文章

Python列表去重的9种方法终极指南

《Python列表去重的9种方法终极指南》在Python开发中,列表去重是一个常见需求,尤其当需要保留元素原始顺序时,本文为大家详细介绍了Python列表去重的9种方法,感兴趣的小伙伴可以了解下... 目录第一章:python列表去重保持顺序方法概述使用字典去重(Python 3.7+)使用集合辅助遍历性能

Mysql 驱动程序的程序小结

《Mysql驱动程序的程序小结》MySQL驱动程序是连接应用程序与MySQL数据库的重要组件,根据不同的编程语言和应用场景,MySQL提供了多种驱动程序,下面就来详细的了解一下驱动程序,感兴趣的可以... 目录一、mysql 驱动程序的概念二、常见的 MySQL 驱动程序1. MySQL Connector

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Python进阶之列表推导式的10个核心技巧

《Python进阶之列表推导式的10个核心技巧》在Python编程中,列表推导式(ListComprehension)是提升代码效率的瑞士军刀,本文将通过真实场景案例,揭示列表推导式的进阶用法,希望对... 目录一、基础语法重构:理解推导式的底层逻辑二、嵌套循环:破解多维数据处理难题三、条件表达式:实现分支

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis