Skip to content

之前没有接触过 uniApp 的混合开发,完全不知道这个混合开发是怎么个”混合”法

稀里糊涂的就开始拉代码,跑项目,开发功能

功能开发完后,就接到菜单

但是发现无论怎么写,屏幕旋转都没有效果

于是乎又仔仔细细的去找了带屏幕旋转的其它页面和我自己的页面

仔细比较发现我们的代码一模一样(并不是说粗心大意导致复制过来少了东西之类的,而是真的一模一样)

结果发现,同样一段代码,A 页面就能实现屏幕旋转,B 页面就是不行

于是我心想反正就差这一步了,功能已经完成了,不着急了,正好借这个时间了解一下 uniApp 的混合开发模式及屏幕旋转玩法

不搜不知道啊,一搜我吓一跳,资料是真的少,官方文档也是一笔带过

于是我就想着:那我去社区总行了吧,社区肯定有

结果确实没让我失望,比官网说的细,看了半天,再结合工程,稍微弄懂了点

但是... 还是没有解决我的问题,怎么办呢?

那我只能一步一步排查了,首先我把可以横屏的页面的全部代码(是全部)复制了一份到我新开的页面里

心里想:我一步一步排查总可以了吧

果然... 结局再一次没令我失望,这次是完全相同内容的两个文件(除了名字不一样,入口不一样),竟然还是 A 页面可以,B 页面不可以

竟然这样,那只能再进一步排查了,将两处的异同一个一个排除

首先是文件名,如果只有指定文件名的文件能够旋转,那应该在某个地方做过配置吧

于是我全局查找了一下可以旋转的这个文件名,结果... 没有任何配置的痕迹...

既然这样,那就是第二个异同点了,首先找到跳转进 A 页面的代码,再找到跳转进 B 页面的代码,结果令我很满意... 两处跳转使用的 api 不一致

于是我查找了一下 A 页面所使用的 api,懂了...

修改后,终于能正常进行屏幕旋转了,我信心满满地发布上线

结果... 结局叒没令我失望,虽然屏幕旋转正常了,但是之前的返回逻辑竟然出问题了?

一波未平一波又起,心态给我整崩了...

于是我怀着 “烦死了” 的心态,继续一步一步调试这个新的问题...

一个小时过去了... 三个小时过去了...

意识到不能再这样下去的我,赶紧停下了酸胀的双手

这时已经很“上头”了,被上一个问题折磨了许久的我,头脑已然不是那么清晰,在处理任何问题时,头脑不冷静都是大忌啊

于是我看了下待办列表,决定先去处理其它问题,等所有事情都处理完了,再最后来攻克这一难题...

虽说手上暂时放下了这一问题,但是脑海中始终回想着刚才的调试过程

喧闹的夜晚,又多了一缕久久不能安睡的愁绪...

一天过去了... 三天过去了... 本周待处理任务都差不多了... 是时候解决你了

于是我再次打开了我的“梦魇”...

看着之前调试时改的一团糟的代码,第一反应是先 revert,然后再从最初始状态一步一步来

但是我突然想到,就算我重置回了最初始状态,万一这个项目本身就有问题怎么办(这个项目是最近才接手的以前的老项目,屎山系列)?

从目前的情况来看,既有可能是我的写法有问题,也有可能是这个工程有问题,甚至...??可能是官方提供的内容有问题!!

如果是最后一种情况,那我以上所做的努力都白费了,甚至这个功能也没法正常发布上线了

如果是前两种情况,那我还有机会,我心中还抱有一丝侥幸...

既然这样,那首先来排查一下,创建一个全新的轻量的工程,然后模拟我的场景,最后调用同样的 api

半个小时过去了...

果然... 一样出不来,那究竟是我写法有问题,还是官方给的 api 有问题呢?

我继续修改写法,一步一步调试(因为官方对于这部分并没有细说,网上资料也甚少)

最终... 页面出来了,一切正常!

我测试了好多遍,确认这次真的一切正常!

既然这样,那么真相就只有一个:”屎山工程“ 有问题!

可是,具体是哪里有问题呢?继续排查吧... 至少,有希望了...

在我新创建的工程中,没有用到任何第三方的工具,除了... 那个官方提供的用于页面跳转的工具...

等等!没错!我比对了一下两个工程所使用的工具,果然!!!版本居然不一样

我预感到真相要出来了,于是我把老项目的包替换成新的,并把写法进行了同步

果然...只有这一次没有让我失望...

所有的问题,有且只有一个答案,不存在这个可能及那个可能...

一步一步排查,总会找到最后的方案,如果没有,那只是因为我还没找到...

0