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

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

相关文章

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

Python中合并列表(list)的六种方法小结

《Python中合并列表(list)的六种方法小结》本文主要介绍了Python中合并列表(list)的六种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、直接用 + 合并列表二、用 extend() js方法三、用 zip() 函数交叉合并四、用

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总

Redis迷你版微信抢红包实战

《Redis迷你版微信抢红包实战》本文主要介绍了Redis迷你版微信抢红包实战... 目录1 思路分析1.1hCckRX 流程1.2 注意点①拆红包:二倍均值算法②发红包:list③抢红包&记录:hset2 代码实现2.1 拆红包splitRedPacket2.2 发红包sendRedPacket2.3 抢