一个基于漫画台App原生应用的漫画阅读的微信小程序。所有漫画可免费观看(前提是得有资源?)。

项目地址:github源码

API接口文档:API

前言?

在学习一门新的语言或者框架时,做好的方法应该是做一个完整的项目吧。在写项目的过程,我们可以熟练的掌握新框架或者语言的API和特性。所以学习微信小程序也是一样的。

写这个漫画类的小程序是因为个人平常也在追更一些漫画,而现在各大漫画平台基本都是收费的,所以就想写一个可以免费看各种漫画的小程序。当然,资源肯定到抓的其他漫画平台的。由于很久之前就一直在使用这个漫画台App和腾讯动漫,而且这2个漫画平台的资源比较多,各种热门的漫画基本都有。对比之下,漫画台的界面更清爽,最重要的是接口更好获取(手动滑稽?),所以选择了漫画台??。

该项目现在一共完成了22个页面,涉及了登录,评论,回复,点赞,还有最核心的漫画的阅读,漫画的搜索等等,对比原生的漫画台App应用的功能大部分都已经实现了,剩下的也只是一些无关紧要的功能了。常用的微信小程序有关的API也基本有使用到,也算是一个不大不小的学习项目吧。

此外,由于漫画类小程序不属于个人上线的范围,而且这可能会造成侵权,所以该小程序没有上线的。如果想漫画,请前往各手机应用商城搜索漫画台进行下载使用,或者前往漫画台官网阅读

最后,该项目的所有API接口通过Charles工具抓取,图标来自漫画台APP安卓包。该项目旨在通过编码来学习和熟悉微信小程序的开发,不作为商业目的,纯属个人瞎搞,正常的漫画阅读请使用官方的APP

项目说明?

微信小程序图片懒加载封装

该小程序是漫画图片类型,因此会使用到大量的图片,那么图片的懒加载是必不可少的需求。由于微信小程序官方的image组件的lazy-load属性过于鸡肋,所以为了更好的体验,需要重新封装一个懒加载组件。 这个懒加载组件的原理是使用wx.createIntersectionObserver() 创建并返回一个 IntersectionObserver 对象实例,这个IntersectionObserver 对象,用于推断某些节点是否可以被用户看见、有多大比例可以被用户看见。具体实现见下方

<!-- lazy-load.wxml -->
<view class="lazy-load-wrapper border-radius"><imageclass="lazy-load border-radius"style="width: 100%; height: {{ height }}rpx"data-src="{{ src }}"mode="{{ mode }}"src="{{ url }}"bindload="imageLoad"bindtap="handleTap"binderror="handleError"></image>
</view>
复制代码
/* lazy-load.wxss  */
.lazy-load-wrapper {width: 100%;overflow: hidden;background-color: #f8f8f8;
}.lazy-load {vertical-align: top;
}
复制代码
// lazy-load.js
Component({externalClasses: ['border-radius'], // 用于在组件外部控制图片的圆角的classdata: {url: '',},properties: {// 图片显示模式mode: {type: String,value: 'widthFix',},// 图片的真实urlsrc: {type: String,value: '',observer: function(newVal) {if (newVal && this.alreadyShow) {this.setData({url: newVal,});}},},// 图片的占位高度,单位rpxheight: {type: Number,value: 200,},// 节点布局区域的下边界的距离bottom: {type: Number,value: 300,},},ready: function() {this.alreadyShow = false; // 用于标记图片是否已经出现在屏幕中// observer的元素必须有高度 不然不会触发回调this.createIntersectionObserver().relativeToViewport({ bottom: this.properties.bottom }).observe('.lazy-load', (rect) => {// 如果图片进入可见区域,但还是第一次出现if (!this.alreadyShow) {this.alreadyShow = true;this.setData({url: rect.dataset.src,});}});},methods: {imageLoad: function(e) {// 触发lazy-load的load事件this.triggerEvent('load', e);},handleTap: function(e) {// 触发bindlazytap自定义事件this.triggerEvent('lazytap', e);},// 图片加载失败后,显示一张默认的图片handleError: function(e) {this.setData({url: './pic_cache.png',});this.triggerEvent('error', e);},},
});
复制代码

有关图片懒加载的效果见下方的效果图,该小程序中使用到的图片懒加载到处都是。

启动

git clone https://github.com/cixiu/manhuatai-miniapp.git通过微信开发者工具打开client文件夹记得在project.config.json中换上自己的appid如果数据请求出错了,记得检查是否开启https的校验
复制代码

小程序功能✨

  • 漫画推荐
  • 漫画详情
  • 漫画阅读(所有漫画都可免费阅读)
  • 漫画收藏与评论
  • 漫画评论的点赞和发布
  • 漫画和作者的搜索
  • 漫画每日更新
  • 热门帖子(支持评论和点赞)
  • 收藏列表和阅读历史
  • 登录(只限手机号登录与APP应用数据同步)
  • 个人资料的修改
  • 还有一些小功能暂未开放

部分效果图?

首页

漫画详情页

漫画阅读

漫画搜索

漫画评论和点赞

更新页

漫画台热门帖子

书架

我的

遇到的一些问题?

  • background-image 属性不能使用本地资源
  • Pages 里的 onLoad 生命周期钩子函数可能会比 app.js 中的 onLaunch 生命周期钩子函数里的异步请求要早执行,可能会导致 Pages 里使用 globalData 数据报错
  • text 组件的 line-height 无效,需要在 text 组件外层的 view 组件中设置 line-height
  • 自定义组件 slot 插槽渲染的位置不正确#bug

Typescript

2018.11.14开始,微信开发者工具开始支持使用typescript了。不过,现在小程序发布的ts声明文件并不齐全。等微信小程序的有关api的.d.ts文件更新完整后,该项目会使用typescript进行改写。

可免费阅读各种漫画的微信小程序,内附好用的图片懒加载组件相关推荐

  1. 让你的微信小程序对用户更加友好:上拉加载和下拉刷新就是关键

    前言 上拉加载和下拉刷新是小程序开发的常见需求.本文将介绍如何在微信小程序中实现上拉加载和下拉刷新的功能,为用户带来更加流畅.便捷的使用体验. 实现效果如下: 实现思路: 1. 首先需要在使用到的 j ...

  2. 微信小程序开发使用onreachBottom实现页面触底加载及分页

    目录 一 简要介绍一下onreachBottom事件 二  实例展示 三 遇到的一些问题 一 简要介绍一下onreachBottom事件 onreachBottom和onLoad以及onShow一样, ...

  3. vant实现下拉刷新和上拉加载_微信小程序 - 实现下拉刷新、上拉加载

    在小程序开发中使用下拉刷新和上拉加载非常多,比如常用的展示型首页,而实现这个功能有两种形式,第一种是使用 scroll-view 组件,第二种是不使用 scroll-view 组件而让整个页面刷新,那 ...

  4. css3如何链如外部字体,微信小程序引入外部字体总结(针对安卓加载缓慢问题)...

    最近有个项目需求,须要改变小程序全部文字的字体. 查了资料后发现,本地加载字体文件致使小程序太大.动态加载文件,苹果然机完美,可是在安卓的真机上引入的外部字体加载会很慢,会有很明显的默认字体切换到外部 ...

  5. 微信小程序“网络出错,轻触屏幕重新加载” -1202

    小程序可以通过web-view引入https协议外部网页,且必须充满整个屏幕,今天进入小程序出现空白提示,"网络出错,轻触屏幕重新加载" -1202  的错误 服务区SSL证书过期 ...

  6. 对android小程序的结论,微信小程序引入外部字体总结(针对安卓加载缓慢问题)...

    最近有个项目需求,需要改变小程序所有文字的字体. 查了资料后发现,本地加载字体文件导致小程序太大.动态加载文件,苹果真机完美,但是在安卓的真机上引入的外部字体加载会很慢,会有很明显的默认字体切换到外部 ...

  7. 微信小程序自定义下拉选择框与分页加载--自用【随笔】

    效果图展示 下拉加载 上拉加载 编码实现 wxml <!--pages/unitmanage/unitlease/unitlease.wxml--> <view><vie ...

  8. 【uniapp】微信小程序体验版的下载文件一直显示加载中,开发调试则没有问题

    需求:点击列表,下载文件并打开文件预览 代码: // 点击列表showvideo(item) {const Token = uni.getStorageSync('GetPhone_Token')if ...

  9. swiper 定义放多少张图片_小程序瀑布流组件:支持翻页与图片懒加载

    (给前端大全加星标,提升前端技能) 作者:老人羽海 https://segmentfault.com/a/1190000022680541 电商小程序中,用到瀑布流的地方非常多,每次都写一个瀑布流,重 ...

最新文章

  1. 年薪超 1400 万美元!苹果 CEO 库克去年薪酬大曝光!
  2. 还在用 Notepad++吗? 盘点五款更好用的文本编辑器
  3. icmp消息类型报告传输_ICMP消息的类型和ICMP消息格式
  4. sql server xp_cmdshell 命令
  5. 基于tensorflow的RBF神经网络案例
  6. 接待员如何向客人upsell_酒店前厅部概述-.ppt
  7. 马哥python培训班靠谱吗
  8. marlin2.0.x 固件相关配置文档说明
  9. 记一次项目经验(4)
  10. 如何使用计算机打勾,如何用电脑在方框里面打勾
  11. python怎么读音发音英语-django的英文读法是什么
  12. 计算机内如何关闭wps云盘,WPS轻松去掉WPS网盘,你可以吗?
  13. js将金额转为大写汉字
  14. 天池竞赛——工业蒸汽量预测(完整代码分享)
  15. [Windows]获取md5值最简单的工具
  16. 收集大家的想法,谢谢参与。。
  17. python findall函数用法_Python--re模块的findall等用法
  18. 一款可以对百度网盘批量改名与文件批量复制的软件
  19. 指数市盈率计算matlab,matlab获取A股,港股,美股的全市场实时盘口数据
  20. Linux如何后台运行服务

热门文章

  1. IT技术人员写博客的重要性
  2. Kamailio vs OpenSIPS
  3. HGE系列之七 管中窥豹(图形界面)
  4. 呼吸灯 fpga实现
  5. android 全屏动画_如何创建全屏视频开幕动画
  6. # hihocoder #1197 : Give My Text Back
  7. 华擎Z370太极搭配QTJ0的使用经验分享
  8. Nagios安装教程
  9. threejs 学习资源帖
  10. 《帝企鹅日记》 March of the Penguins