基于MUI、H5 这一套技术开发APP,曾经写了几篇相关文章关注的人还真不少,以至于我总感觉现在开发H5比原生的更火热。今天就来分析下,算是以往的一个学习总结。无论是与非,好与坏,皆有它存在的道理。
概述
mui
实现方式依赖系统webview,控件大多是HTML5控件,通过DOM渲染;
对比单纯的webview加载页面多了一些优化,比如CSS动画、页面预加载、多页面显示隐藏模拟窗口切换,以至于在视觉上看起来不那么生硬。
H5 调用原生接口,也是通过js调用来实现的。
优点:
优点就是开发工具HBuilderX
很好用,其他H5开发的优点就不赘述了。
不足:
- 1、性能问题
通过webview来加载实现造成先天性不足,所以不要相信媲美原生性能等宣传口号,包括MUI在内的其他类似框架也都差不多,在页面流畅度、性能等不管怎么优化都是无法跨越的门槛。特别对于页面复杂度、稍具有规模的项目效果很难让人满意。
- 2、原生调用
通过Native.js
提供的接口加载原生类、方法,这就是很专业的事情了,你必须有iOS、Android原生的开发技术否则这一招数对你无效。
而且即使加载比如iOS的类文件等,加载系统本身的类库还可以,你如果加载自定义的类貌似不行。
经查询,如果加载自己的类必须离线打包,在线打包无法实现。离线打包我熟悉但是我仍就没搞明白自己的文件如何放、如何用,最后放弃,这一道道操作无疑又是一道门槛。
- 3、 关于跨平台 一套代码同时打包iOS、Android。是的、没错,确实可以同时打包。但也仅仅是打包,真正的APP实际运行效果又如何?我不管,反正我就是能打包多个平台。
结论:
只要会前端开发就能开发APP了,对于没有原生开发能力,对于一些简单的、不那么复杂的应用或者没那么高要求的标准可以用MUI,因为上手简单,开发速度快、成本低。
对于有点复杂的、要求性能的或者对原生依赖比较高的应用还是原生吧。
未来:
我们使用MUI、H5 开发APP主要为了简单方便快速,我们的APP复杂度也没那么高,同时因为我们的客户不确定有时要iOS的、有时要Android的,我们的队伍原生人少,前端多。所以现有的项目如果没有特殊情况一般都会用MUI。
跨平台一直是我们的希望,我们也在不断的摸索、学习、尝试。
我个人使用MUI主要开发Android,因为我自己做了个小项目(dctt前面文章有介绍),单独在Android上我认为效果还是可以的。
下一步:
- 公司的项目计划转uniapp uni-app里vue文件是基于webview渲染的。它不在是一个网页套壳应用,它的js根本不运行在webview里(所以也没有document等对象),也不受wkwebview的各种限制。而如果使用nvue的话,视图层也不在webview里,和html5一点关系都没有。
曾经我也写过一个demo简单测试体验下,无论在安卓还是iOS上感觉还不错。
- 个人开始打算入坑Flutter了,以后有时间了把dctt写个flutter版本的。
相关介绍
H5开发移动端APP基于H5 https://www.jianshu.com/p/8e7e8312f93d