从 DCloud 到 React Native ( Weex 从入门到放弃 )

前言

好多人学习的时候都会记笔记,像我这种从不记笔记的,能写点东西也很不容易。。 众所周知,我是个以后端为主的,当然自己写东西,肯定不能是写点 php 就满足了。从纯原生代码写 php 到初学 ThinkPHP ,过了两年终于走进了 Laravel 的世界。关于前段的方向也从原生 js 到 jQuery 到响应式布局,从 html 到 h5 再到 Android 原生过渡到小程序最后到了 js 混合开发。关于 php 的经历有点多,今天主要想说的是,在 js 混合开发的探索阶段遇到的各种大坑和技术选型的经历。

技术选型

其实所谓的技术选型,无非是觉得哪个好用,哪个适合我去开发而已。 最近想做点小玩意(写代码能作为一种爱好我还是很开心的),自然想到了 App 。从这个角度开始,去选择一个合适的框架。 一开始有如下几种方案:

  • Android & iOS 原生开发。Android 原生倒是做过,毕竟至少毕设就是 Android 端的,但也不是很熟。iOS 的呢,就比较陌生了,毕竟,苹果设备都是 17 年末我才开始接触的。之前闲得慌注册了个 iOS 的 Developer Membership ,但一直没有接触过。
  • ApiCloud。之前创业的时候,自己的 App 就是用 ApiCloud 实现的。据 DCloud 官网讲,ApiCloud 的技术大部分是从他们那里窃取的,这个我们倒是不关心。因为在我的开发之路上,这两个的实现方式还是有很大差别的。
  • DCloud。之前第一次做混合开发时用的就是它。当时还不熟,也是创业而用的一个简单的程序。据他们介绍自己是 w3c+html5plus 中国产业联盟的发起者之一。
  • Weex。Weex 是阿里巴巴由 2016 年开源的由 vue 进行编写的一种混合式开发框架。2017 年推出了 [Weex Market 市场](https://market.dotwe.org/),但是域名解析貌似有些问题。2018 年由飞猪开源了自己所用的 UI 框架 —— Weex UI。
  • React Native。简称 rn ,与 Weex 类似,是由 Facebook 发布的,以 React 作为编程语言的框架。但是诞生较早,现在已经迭代到 0.56(为啥到现在还没 1.0)
  • 今天要比较和选型过程的就上述几个,具体内容下面将从使用到放弃一个一个讲。

    分门别类

    首先说,以下仅代表我个人观点。好与不好,都是自己的认知。我最多呢就是给纠结中的人一些参考,以及一些*学什么都学不下去的*孩子们一些鼓励。毕竟,我从大一 C 语言结束后的每一行代码都是自己学着写的。 其实目前比较多用户的已经在悄悄转移了,以前一开始的 PhoneGap 等等已经逐渐没有声音了。说回来,人越发展,越趋向社区型的产品。

    产品型

    产品型有一个显著的特征:收费为主。其实直说,他们是卖产品的,而不是做生态或社区的。因此是一些专做这个的技术公司运营起来的。

  • DCloud
  • 好啦,这次的第一选型就是 DCloud 了。毕竟在将 DCloud 与 APICloud 对比一下,还是前者比较能吹。又产业联盟又各种超级 IDE 的,而且说 APICloud 的技术也是从这儿拿的,是吧。 以下是 DCloud 的官网首页公告。没见法院要求的 APICloud 往首页放,倒是原告一直在摆着。

    因为以前也开发过,所以比较有经验。还是下载 HBuilder 开发。什么是 HBuilder 呢?

    下载下来,居然跟以前几乎一样。还是 eclipse 的拓展包拼出来的。包含了真机调试,云端打包以及最基本的代码提示等功能。我不知道为什么他能把「护眼模式」说了这么多年,有什么稀奇么。。 开发的路上,初始化项目。然后依旧是右边可以开一个预览,但只能看 html 的内容,有关动态页面还是要跑去 Chrome 里面去看了。然后提供了一个 ui 框架叫做 AUI , 代码逻辑都是 jQuery 的语法。貌似看见过有人将 vue 工程转移到上面做 app。但我知道效果肯定很一般。关于各种登录分享地图等等插件都是集成好的,在工程设置里直接填 token/access_key 什么的就行了。但我毕竟也是接触过原生开发的,我不知道他要求填写微信的 AppSecret 是为什么。。 真机运行的话,用的是 Hbuilder 的基座进行预览。打包发布就不是开发者的事儿了,还是给他开发者 key 什么的就好了 一行代码都没写,决定放弃了。原因如下:

  • 这种框架还是比较适合前端新手 + Anroid iOS 小白的。而且运行过去,如果不是你主动用 `plus.ready`中的方法,样式啊元素都是由 Webview 展示的。性能堪忧。包括官网首页介绍的什么底端安卓机显示无线列表,纯骗人的。。由于大部分实现是原生 js,用户体验基本没法提。而他官网所说的用户案例,其实大部分是自己仿制的,以及一些小公司去弄的,纯为了快速迭代。
  • 理想与差距过大,由于 1 的原因,没办法用自己喜欢的框架去实现内容。要知道,一个天天写模块化开发的人突然跑去写单页实现,很心累的。
  • 集成度过高,比如刚才所说的微信什么的,其基座真的只是个带所有权限的 Webview 而已。想要拓展自定义的原生功能,难。
  • IDE 过于不友好。说什么的都没用,基本是想垄断所谓的产业联盟。只能用 Hbuilder 进行开发,而且主动权不控制在自己手里。 放弃。无关复杂度。其实在我看来,更像是一个写好的东西让你去填内容罢了。
  • APICloud
  • 不细说了,之前是那这个做过一个半完整的 app 的。这次也尝试了一下,也是一行代码都没写就放弃了。 原因与上述大部分相同,还有几点:

  • 商业化太严重,比如刚登录进来的弹框:
  • 据我回忆,这是唯一一个我注册了第二天还会给我打电话的。。
  • 倒是有我想要的模块市场,可是。。 你见过动不动就要收钱的,代码还要自己写的开发者网站么。。
  • 自己有一套 ui 库叫 MUI,听起来是不是跟 AUI 很像。 放弃
  • 社区型

    其实这个名字也是最近写 rn 的时候看见了介绍的。比如 php、Laravel,ThinkPHP 也算是一个不完整的社区吧。就是开源、大家都可以为之做出贡献,不以盈利为目的,但产品质量是由大家一起维护的,因此,你懂的。因此,从 Laravel 之后,便越来越倾向于社区型的产品了。其实以前就听说过 react native 的大名了,但是对其有一些误解,以为其在 Android 和 iOS 每次调用原生的时候都要分别处理,以及我会用的前端框架也就 vue 了。因此想找找有没其他的。于是,就到了 weex 的了。

  • Weex
  • 刚开始就百度搜索关键字, 「vue」 「app」,大家都在说 Weex。不过也有说其迭代速度已经很慢了的。但是看了看文档,感觉自己对其还是比较有兴趣的。从看一脸懵逼的文档到放弃,居然用了两周的时间。 因为中间一直看到那些说已经不维护的消息,但是对照 github 上的发布时间,前几天还在更新代码。但是版本还没发。而且,网上说阿里系的 app 已经好久没有全应用都用 Weex 的方案了。这点我无从考证。但是初始化后,发现 Android 和 iOS 生成的编译 sdk 版本都好低。再加上我发现社区真的没有做起来。官方没有 issue ,都是 apache 的邮件组(阿里后来吧 weex 交给了 apache 基金会来维护)。而且所谓的插件市场甚至一直都上不去,直到有一次偶然发现好像是其域名重定向出了问题。但是基本也没什么内容。甚至调用原生接口都调不通。包括但不限于微信登录、高德地图等插件,有是有,该过期的都过期了,基本都用不了,最新的提交是 6 个月前。 可以看一下[Weex 和 React Native] 的对比文档。大部分人建议就是,如果从现有应用修改,比较适合用 Weex ,但是从头开发还是 React Native。 对了,还有一个从 Weex 衍生出来的项目, Eros。没有用。。用了那个,好像又回到了 DCloud。 然后经过两周的研究+没有写多少业务代码,一直配置运行环境来着。算了。。放弃了。 即使是阿里开源社区的产品,但是几乎没有人在弄的东西,也就是社区环境最怕的内容——没有支持者。最后,抛下对 React Native 的偏见,走向了人生的道路。 给大家看一下许久没更新的 Weex 文档

  • React Native
  • 目前卡壳在 Android 沉浸式状态栏,一直也不知道这个布局是什么样子的。 前几天用了两个小时差不多看懂了 reactjs,随后便将王妃送了出来。 优点就是

  • 大社区产品,很多插件都通过热情的开发者们补充了
  • 自定义项目集成
  • 视图、网络及存储都接好了原生
  • JSX 语法,用起来还是比较爽的 更何况,在第一次接触 React 和 React Native 当天,就已经开始搞下 Tab 一样。
  • 太困了,不说了,晚安

    补充

    现在已经开始用`Flutter`了。。

    发表评论

    您的邮箱地址不会被公开。 必填项已用 * 标注

    此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据