请教 native 和 h5 混合开发的问题

2016-12-16 10:03:18 +08:00
 pcatzj

现在遇到一个问题,某 APP 混杂着 native 和 h5 的页面,但是现在遇到一个问题, h5 和 native 如何保持版本一致?用户如果没有更新 APP ,但是 web 端的界面已经更新了,导致某些功能出现偏差,对于这种问题,有没有什么好的解决办法?

12681 次点击
所在节点    Android
45 条回复
yyy
2016-12-16 18:33:08 +08:00
@pcatzj 无法理解这个问题。获取分支和发布 HTML5 页面有什么必然联系?
pcatzj
2016-12-16 18:43:47 +08:00
@yyy 就是 1.x 版本的和 2.x 版本的应用怎么获取不同 git 分支的 HTML 页面分别加载
yyy
2016-12-16 19:28:32 +08:00
@pcatzj APP 通过读一份配置来决定加载哪个页面。这份配置又前端负责维护生成,这样可以较灵活地更新 HTML5 页面。
alqaz
2016-12-16 19:50:42 +08:00
native 开放一个获取版本的借口,然后 h5 根据它来调用?
TimCheng
2016-12-17 00:10:58 +08:00
@pcatzj 如果你要是使用的像是 phoneGap 或者 Hbuilder 的话,那么我建议你还是去歇歇吧!我以前的公司是做 Hybrid App 的,他们有一个自己写的 webkit 的引擎,如果要条样式或者加一些 Native 的功能(例如调用手机摄像头)都需要原生的开发人员去写的。
yunshansimon
2016-12-17 01:10:29 +08:00
我做过 phonegap/cordova 的开发。 h5 里面可以获得 app 的版本号( cordova 提供的 api ,当然,自己写一个也没什么难度,只是需要 native 代码提供版本号)。你的任何新功能,要在运行时检查版本号,低于某个版本号,就显示一个提示更新的信息就好了(你可以专门写个函数,比对 native 版本和参数版本,然后在新功能开始的时候运行这个函数)。这样,客户可以享受 h5 更新带来的新界面,只有在使用新功能时才会被提示升级。他觉得用不着新功能,还可以点确定后接着用,不会被反感强制升级。
pcatzj
2016-12-20 10:07:22 +08:00
@alqaz 但是这样是不是每个功能入口都得做判断?前端开发人员说貌似代价有点大
pcatzj
2016-12-20 10:08:54 +08:00
@yyy 就像你之前说的,有没有动态调用 git 上不同 branch 的办法(大概就是将 git 的 branch 结构转化为可访问的 URL )?
pcatzj
2016-12-20 10:11:45 +08:00
@TimCheng 意思是新功能的入口尽量维持在 native ?
pcatzj
2016-12-20 10:15:20 +08:00
@yunshansimon 我也觉得是这么个方案,但是还有一种情况是并非是新功能,而是旧功能的更新。这样是不是就要在该功能模块的入口处做判断,并维持两套逻辑(大概也就意味着两套代码)?
yyy
2016-12-20 10:18:53 +08:00
@pcatzj 为何前端不把项目发布到静态资源服务器上, Native 这边只要把发布出来的 url 拿过来就好了呀。没必要去想动态调用 git 上不同 branch 这么复杂的东西。。。
TimCheng
2016-12-20 10:36:34 +08:00
@pcatzj 原生能力是要维持在 native 里面,图形渲染也是在 Native 中控制的。
alqaz
2016-12-20 11:14:34 +08:00
@pcatzj 不需要吧,那些依赖新版本的 native 实现的功能才需要,要是每个功能都要,那是每个功能都升级一次更新一次,而且还每次都不兼容?这变化也太大了吧。
pcatzj
2016-12-20 11:37:14 +08:00
@yyy 是要维护几份代码吗?不然不同版本的 URL 该如何分配?
pcatzj
2016-12-20 11:38:05 +08:00
@TimCheng 我说的是 h5 的版本控制,不懂你在说什么(困惑)
pcatzj
2016-12-20 11:40:12 +08:00
@alqaz 我的意思是每个依赖 native 的功能都要加版本控制,功能更新了才会将该功能的版本控制部分的版本号更新一下,没有更新的功能当然不需要动了
alqaz
2016-12-20 13:07:22 +08:00
@pcatzj 前端代码每次都是最新的,刚开始根本不需要,但是 native 库获取版本接口一开始就需要。只是后面功能修改,如果你使用到了新的接口,才需要。
vjnjc
2016-12-20 15:55:27 +08:00
最简单的是不要升级原有的 h5 file ,用一个新的 url 放新的 h5 ,那么新的 native+新的 h5 完美。
讲究点的话 url 配上版本控制。
yyy
2016-12-20 16:06:17 +08:00
@pcatzj
@vjnjc 的就是我那样的方案。
pcatzj
2016-12-21 09:46:27 +08:00
@vjnjc
@yyy
@alqaz
大概方案基本上都差不多确定了,大家的想法也都差不多,就看前端的小伙伴怎么实施了,我把大家的想法分享给他们,然后看他们的意见吧。感谢大家!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/328012

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX