前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >我的微信小程序,完美适配了 PC 端

我的微信小程序,完美适配了 PC 端

作者头像
用户6901603
发布于 2024-06-07 12:44:35
发布于 2024-06-07 12:44:35
1.9K01
代码可运行
举报
文章被收录于专栏:不知非攻不知非攻
运行总次数:1
代码可运行

今天,正式、隆重的给大家介绍一下我折腾的个人微信小程序前端码易:一个承载我个人技术文章的博客类 app.

断断续续扑腾了近一个月,我终于稍微有点底气在公众号正式给大家介绍它了。因为,经过多种方案的调研和打磨,我终于把 PC 端适配好了。适配的过程并不顺利,道友们可以在 PC 端,拥有最佳的阅读体验。

本文跟道友们分享一下我艰辛的适配过程。

0、忍痛放弃的商业模式

我做这个小程序最初的设想,是希望把我大量高质量的文章放在小程序里面,想要学习的道友们能够通过观看/点击广告的方式给我带来收益,实现一波 0 成本双赢。

这是一个非常酷的商业模式。因为我可以不用思考如何向用户收取费用,我的收入来源主要以广告为主,搞的好的话我基本上只需要安心创作就可以了。因此第一个版本的小程序中,我设计了一个阅读广告观看高质量文章的机制,上线之后,这种模式取得了非常大的成功。一个简单的宣传之后,第一天有了接近 100 R 的广告收益。如果顺利的话,后期加大宣传力度,我有望通过这个收入实现躺平。

但是,发布之后,发现大量的用户习惯在上班的时候通过 PC 端打开小程序。然后一大堆的问题就来了,各种 bug层出不穷,乱七八糟。这也是最开始我并没有考虑 PC 端。其中对我设想的这个商业模式来说,最致命的问题就是:windows 端不支持播放广告。

于是,我设计的这个逻辑,在 windows 就走不通了,因为 windows 不支持播放广告,于是就无法走通播放后阅读文章的流程。这可把我给搞得太难受了。

然后一整天的时间里我因为这个事情陷入了极大的焦虑。一个很简单的想法就是直接放弃 windows 的使用用户。但是我看了一下后台的数据,发现 PC 端打开小程序的用户里,windows 用户占了 40% 左右。略少于 mac 用户。

所以放弃 windows 用户这个想法就有点不舍得。然后还有另外一个想法就是修改代码逻辑,直接给 windows 用户开绿灯。只让 mac 用户看广告。但是这样也会让 mac 用户感觉到不公平。

于是纠结不下,脑袋里想了很多种补救方案。我又想要保住这种商业模式,又想要保住 PC 端良好的阅读体验。最后纠结了良久还是决定放弃这种商业模式。这种放弃其实对我打击有点大,虽然在群里给群友说要放弃看广告的设计时,表现得很轻描淡写,但是我那两天感觉很挫败。

一方面是因为早期的计划都是围绕这个模式来展开,为此做了很多前期的技术方案调研,请教了很多朋友,也为这个商业模式做了不少未来的规划。一旦放弃之后,这些准备工作都白做了,最关键的是,未来的计划也不得不重新规划。另外一方面是看到了成功的苗头,直接放弃有点痛。只是遗漏了 PC 端这个点,确实是我思虑不周。

1、PC 端适配的尺寸难题

在技术上,这个问题解决起来非常麻烦。一方面是因为移动端的适配我已经做好了。我使用 rpx 作为尺寸单位,rpx 和 rem 类似,都是以设备宽度作为参考进行缩放,可以兼顾不同尺寸的设备上有良好的 UI 表现。如果在 PC 端继续沿用这个尺寸的话,那么就坏事了,因为 PC 端的宽度会急剧的变大,就会导致所有的文字等尺寸都会变得很大。完全无法阅读。

一个比较粗暴的解决方案就是直接放弃移动端的适配,只使用 px 作为尺寸单位。这样的话,只是牺牲移动端的阅读体验,保证了 PC 端的正常阅读。中间一段时间,我也紧急使用这种方案保证了 PC 端的正常使用。

我的项目是基于 Taro 3.x 开发,使用 React 相关技术栈

修改也比较简单,Taro 的默认表现是会将 px 编译成 rpx。因此我在开发中,项目代码写的是 px,但是会被 Taro 编译成 rpx 从而完成移动端的适配。我们只需要在配置中将如下参数修改为 false,关掉 Taro 的自动转换就可以了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mini: {
  postcss: {
    pxtransform: {
      enable: false,
    },
  }
}

但是这种方案毕竟不完美,因为牺牲了移动端的适配体验,部分机型的布局会有小的差异。有没有什么方案,是既可以适配移动端,又可以兼容 PC 端,还不需要写两套代码,在代码上要考虑的问题也不多,实现非常简洁的方案呢?

当然有!我从我自己写的文章「丢人啊,工作十年了才知道这种换肤方案」一文中得到了灵感。我可以通过改变 css 变量的方式,让我在移动端使用 rpx 作为单位,在 PC 端使用 px 作为单位。

当然,在这个过程中,又踩了很多 Taro 编译以及微信小程序的坑,一个简单的思路到最终方案落地,经历了一波又一波的波折,我都差点放弃了,才好不容易灵光一闪绕开了所有的坑,最终成功达成目标。

大家可以分别使用手机和电脑访问前端码易体验适配之后的最终效果。

这个方案搞定之后,后续的换肤就简单了,扩展起来非常容易,本来想要支持暗黑模式的,现在最大的问题是设计不出来比较耐看的暗黑样式,所以就一直没支持

2

路由问题

这是一个大坑。微信小程序可以使用如下配置开启分栏模式。在 app.json 中同时添加 "resizable": true 和 "frameset": true 两个配置项就可以启用分栏模式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "resizable": true,
  "frameset": true
}

Taro React 的项目配置文件是 app.config.ts

开启分栏模式的表现是,主页作为导航页始终展示在左侧,其他任何通过路由跳转打开的页面,都会展示在右侧。这个时候,一个比较坑的情况就是,如果我有的导航页面,不在首页,它也不得不在右侧打开。

如果导航页在右侧打开,新文章页也在右侧打开,那么就坏事了,阅读体验非常不好。查阅了许久,最终在小程序的官方文档中,找到了一种比较模糊的说法,似乎能控制页面到底是在左侧打开还是右侧打开。

遇到的第一个麻烦是,在 Taro 中并不直接支持 this.router。因此一时间不知道如何在 Taro 中调用该 api。

查阅了许久各种文档也没找到对应的接口,最后灵光一闪,这个 this,指的不就是当前的 Page 对象吗,那我可以从路由栈中,获取到当前所有页面对象,然后通过索引访问到当前页面,再调用该方法不就可以了吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const pages = Taro.getCurrentPages()
pages[pages.length - 1].pageRouter.navigateTo({
  url: './xxx'
})

果然可行。

方法虽然调用成功了,但是遗憾的是,并不能满足我想要的那种效果,可以指定新页面在左侧打开还是右侧打开。

最后确实可以确定微信小程序并不支持这种效果,真恶心啊,怪不得没人愿意适配 PC 端,这也太不健全了。无奈之后,我只好用出了我的一个超级大招:彻底重写微信小程序的路由方案

我们知道,微信小程序基于 webview 渲染,他的底层依然是 html。因此,重写路由方案在技术上,是有非常大的可行性的。经过反复的技术可行性验证和性能可性能验证,重写后的路由方案经历过漫长的迭代,最终落地上线,我们可以从下面两张图中观察效果

这是首页

这是在首页的基础之上,打开一个新的目录页。在交互上,我做成了一个弹窗的模式,让交互看上不像是路由切换,增加了合理性。

搞定了这个事情之后,我的微信小程序将不再受限于官方方案的禁锢,需要什么方法和需求我自己添加即可。

3、其他兼容和小优化

PC 端上还有一些其他的小的兼容问题。例如 windows 端最新版本的微信中,会发生页面折叠透视的问题。这个问题在我重构了路由方案之后,会得到极大的缓解,但是还不能彻底消除。彻底消除需要等待微信更新版本自己解决这个 bug。

又例如在 Mac 端布局上有的地方表现与预期的不一致。特别是在计算 statusBar 的高度时与预期表现不一致。这也是兼容里非常麻烦的事情。

在 UI 上我重新设计和排版。并且增加了选中文章的标识。大家快去体验一下吧。前端码易

4、发展目标

依托于微信生态,我有望将我的小程序打造成阅读体验最好的前端学习社区。目前在功能上,已经支持其他博主把发布在自己公众号的文章,挂载到我的小程序中。不过还有一些构想细节和商业合作模式暂时还不够成熟,可能这个模式的推行还需要一段时间。

有了这个技术基础,前端码易就有希望发展成为一个完整的学习平台。与此同时,作者可以在公众号文章中植入视频号内容和直播内容,这将是一个技术生态闭环的成熟平台。一个好消息是,视频号团队换帅,和微信开放平台合并,那么微信小程序、公众号、视频号将会有可能深度联通,在功能上可能会开通更多的便利。

当然,目前 app 中内容还比较少,我自己也会加大创作力度,把更好的内容都尽快的搬到这个 app 里。快速丰富 app 中的内容

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这波能反杀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【愚公系列】《微信小程序与云开发从入门到实践》002-如何设计一款小程序
在移动互联网的浪潮中,小程序以其便捷、轻量和高效的特性,迅速成为用户日常生活中不可或缺的一部分。但要设计一款成功的小程序,光有创意和灵感是不够的,更需要系统的思考与周密的规划。如何从用户需求出发,构建出符合市场趋势的小程序,成为了开发者和企业主面临的重要课题。
愚公搬代码
2025/01/07
1620
微信小程序底层框架实现原理|万字长文
我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第1篇文章,点击查看活动详情
虎妞先生
2022/10/27
4.9K0
微信小程序底层框架实现原理|万字长文
微信小程序----解析px、rpx、rem、vw实现页面布局
---- 如果文章对你有帮助的话,请打开微信扫一下二维码,点击一下广告,支持一下作者!谢谢! PX px:绝对单位,页面按精确像素展示。 ---- 在PC端经常使用的单位,不用计算,直接使用,一般情况不用考虑设计图纸的来改变页面的大小。就直接采用px,方便快捷但是不能自适应。 RPX rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应。 ---- 微信的自适应单位,同时微信规定:屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物
Rattenking
2021/02/01
6.2K0
微信小程序----解析px、rpx、rem、vw实现页面布局
Taro框架多平台小程序实践之获取睡后收入
好事文章链接:https://cloud.tencent.com/developer/article/2466311
一起重学前端
2024/11/18
1410
前端-小程序开发实践总结
css样式不能引用本地图片资源,只能引用线上资源(background-image),引用本地图片资源只能用<image>标签。
grain先森
2019/03/29
1.5K0
前端-小程序开发实践总结
小程序已成企业新标配,BAT决战小程序的商业逻辑
BAT三家之中,为何只有微信小程序具有强大的用户流量以及生态场景能力?在微信生态之中,小程序如何才能存活下来?
深圳秀思科技有限公司
2018/07/27
6090
小程序已成企业新标配,BAT决战小程序的商业逻辑
微信小程序 折叠屏兼容
最近维护了将近的一年的微信小程序(某知名企业),突然提出要兼容折叠屏,这款小程序主要功能一些图表汇总展示,也就是专门给一些领导用的,也不知道为啥领导们为啥突然喜欢用折叠屏手机了,一句话需求,苦的还是咱们程序员,但没办法,谁让甲方是爸爸呢,硬着头皮改吧,好在最后解决了,因为是甲方内部使用的小程序,这里不便贴图,但有官方案例图片,以供参考
iwhao
2024/07/27
4362
从项目中由浅入深的学习vue,微信小程序和快应用 (1)
2.技术栈 vue+vue-router+vuex+axios+element-UI+iconfont(阿里)
火狼1
2019/04/17
1.1K0
从项目中由浅入深的学习vue,微信小程序和快应用 (1)
为什么小程序能适配不同机型?因为微信做了这个
我们都知道,小程序是一个跨系统的平台。这就意味着,小程序会在不同的设备上运行,但不同设备的分辨率会有差异。 在小程序中,如何在分辨率不同的设备上保证视觉元素的正常显示?这就需要名为 rpx 的动态尺寸
知晓君
2018/06/28
3.4K1
GitHub Star数超2万的开源框架帮你轻松构建跨端应用
本文根据京东高级前端开发工程师朱天健在2019年软件绿色联盟开发者大会发表的《使用Taro构建跨端应用》主题演讲整理而成,为大家带来Taro框架的背景介绍、快速上手、样例解析和开发生态等内容分享。
软件绿色联盟
2022/03/31
6180
GitHub Star数超2万的开源框架帮你轻松构建跨端应用
成了腾讯“增量”利器,微信小程序的春天真来了?
小程序在朋友圈、公众号、微信群、个人号之间,成了一个连接器,把这个封闭的圈子生态造活了。微信通过守住用户的时间,让微信从简单的社交产品转向成为链接人的一个全功能性的超级APP,成为腾讯的增量杀器。
深圳秀思科技有限公司
2018/07/27
4740
成了腾讯“增量”利器,微信小程序的春天真来了?
Taro迁移完成之后,总结了一些踩坑经验
四月份的时候,尝试将老的移动端项目改造成多端。因为老项目使用的React框架,综合考量,保障当前业务开发的进度同时,进行项目迁移,所以最后选择了Taro框架。迁移成本会低一些,上手快一些。
叶一一
2023/03/31
8280
Taro迁移完成之后,总结了一些踩坑经验
【愚公系列】《微信小程序与云开发从入门到实践》008-WXML与WXSS
在微信小程序的开发中,WXML(WeiXin Markup Language)和WXSS(WeiXin Style Sheets)是两个至关重要的技术,它们分别负责小程序的结构与样式设计。WXML作为微信小程序的标记语言,类似于HTML,帮助开发者定义页面的布局和结构;而WXSS则是其样式表语言,提供了丰富的样式设置功能,使得小程序的界面更加美观和用户友好。
愚公搬代码
2025/01/12
2480
详解微信原生小程序架构及同构方案
最近实习中参与了H5项目向小程序迁移的工作,在微信官方文档和一些帖子上学习了小程序运行机制和底层原理,以及与Web页面的区别,在此基础上又看了一些关于小程序同构方案的内容。以下是我个人的一些学习总结。本文内容参考
极乐君
2020/07/28
2.9K0
详解微信原生小程序架构及同构方案
从前端界面开发谈微信小程序体验
练小习
2016/11/08
20.6K13
从前端界面开发谈微信小程序体验
通过微信小程序看前端
摘要: 2016年9月22日凌晨,微信官方通过“微信公开课”公众号发布了关于微信小程序(微信应用号)的内测通知。整个朋友圈瞬间便像炸开了锅似的,各种揣测、介绍性文章在一夜里诞生。而真正收到内测邀请的公众号据说只有200个。 虽然内测名额十分稀少,但依赖中国广大开发者的破解和分享精神,在网络上很快出现了...
shaonbean
2019/05/27
8460
微信小程序初体验(上)
这段时间有幸加入了一个关于微信小程序的项目开发组,从无到有的根据文档自行学习了小程序的开发过程,前面已经有几位前辈的文章珠玉在前,我这里就先从前端界面的开发方面谈一谈小程序以及我所遇到的问题吧。 在结构和样式方面,小程序提供了一些常用的标签与控件,比如: view,小程序主要的布局元素,类似于html标签的div,你也完全可以像控制div那样去控制view。 scroll-view,你要滚动内容的话,没必要用view去做overflow,scroll-view提供了更为强大的功能,通过参数的调整,你可以控制
腾讯ISUX
2018/06/29
1.6K0
Taro及Taro-UI从入门到放弃
Taro是京东旗下的跨端开发框架,功能非常强大,支持React/Vue/Nerv进行小程序,H5,甚至是RN应用。
terrence386
2022/07/15
2.8K0
Taro及Taro-UI从入门到放弃
2019-面向小白的微信小程序-视频教学-基础
微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用
万少
2025/02/08
2230
2019-面向小白的微信小程序-视频教学-基础
Taro小程序跨端开发入门实战
随着业务不断扩张以及大小程序平台的崛起,针对每个平台都去写一套代码是不现实的,且原生的小程序开发模式有很多弊端。为了让小程序开发更简单、高效,采用Taro作为首选框架,本文将分享Taro的实践经验,主要内容围绕什么是Taro以及Taro如何使用(正确使用的姿势),还有Taro背后的一些设计思想来展开,让读者能够对Taro有较为完整的认识。Taro3.0已经逐渐成熟,实践项目已经进行Taro3.0的升级,因此本文代码示例以Taro3.0作为基础。
京东技术
2021/09/24
1.7K0
Taro小程序跨端开发入门实战
推荐阅读
相关推荐
【愚公系列】《微信小程序与云开发从入门到实践》002-如何设计一款小程序
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验