彬哥,我看今年前端分了俩方向啊,一个是 Flutter 和 React Native 这种,还有就是小程序,淘宝小程序这种微应用,我们公司让我做 React Native 这块儿,这是不是对我未来发展好些?以前技术栈还是 Vue,我最近转 React 了,刚开始写第一个项目,我还看了看 uni-app,学习成本更低一些,国内好像更吃香?到底第该学哪个?
前几天有个学生问我上面的问题,因为前端技术领域最不缺的就是新技术,前端开发者比较头疼的不是没有技术可用,而是可用的技术太多了,学不过来,也不知道选哪个。
其实类似的问题争论在 PC 时代就存在过,太阳底下没有什么新鲜事。甚至在我们生活中都有类似的选择问题。技术学习者要 ” 看技术是技术,然后看技术不是技术 ”。如果你打算理解一项技术的产生和优缺点,就去追问他的应用场景,或者生活中的应用场景。如果一项技术你找不到生活中的对应,很可能你根本就不理解这项技术,而只是官方 demo 或者别人示例代码的搬运工。
今天我就说说 Flutter、React Native、Ionic、NativeScript、小程序和 PWA 哪个值得学?
话说 long long ago,有一个土豪,他有两个儿子大明(IOS)和小明 (安卓),土豪琢磨孩子年龄大了该准备婚事了,那就得先有房子,另外的家里的门房和厢房都该翻盖了,所以他想好好的规划一番,对了还要做好防盗,不能让闲杂人等进来影响安全。
他找老大谈话征求老大对房子的意见,老大说我的婚房要豪华气派,要高级装修,要住起来非常的舒服,闭路电视、宽带,能通的就通上,反正也是折腾一回,盖房子就大事,盖一次争取就是村里最好的房子要住很多年呢。
他又找老二谈话征求老二对房子的意见,老二说我又不着急结婚,房子就是个住的地儿,我呢又在上学,反正怎么快怎么来吧,这样周末和暑假还可以过来玩。房子老了,到时候结婚了再翻盖也不迟,现在盖了将来也旧了,对了要方便一些,能让我的朋友们跟我随便造。
土豪一听都觉得有道理,他觉得都挺有道理,于是发了一个公告,寻找各路包工队帮盖房子。
于是发了一个招标公告:
本人土豪,家资殷实,诚招各路豪杰帮我家盖房要求:
1. 目前有主房两套,其余厢房、门房若干,要求尽可能一次性充分利用材料,一次采购和加工建筑材料,能够多个地方能用。比如搅拌机搅拌一次搅机开一次就能把各个房间用的水泥搅拌出来,能够做出各个房子能用的砖块和柱子。(维护一套代码,能够在跨平台运营,write once,run any where)
2. 房子的各项水电煤功能齐全。(能够充分利用设备的功能)
3. 房子后期维护方便,最好能让家人或者我的工人们也能改造房子。(学习容易)
4. 盖房成本要尽可能低。(开发和维护都省钱)
虽然土豪也觉得条件有些苛刻(跨平台的思路都是受质疑的),但是他想我有钱啊,我想试试(技术是在尝试和质疑中完善进步的)。
还别说,才招标就来了 5 路人马。每一路人马都身怀绝技。
他们分别是:
html5 派:以 html5 为首,可以说包队历史最老了,其中的 PWA 团队是新星,受人关注。
native 派:java、kotlin 两个团队瞄着小明的需求去的,Object- C 和 Swift 团队瞄着老大的需求去的,他们可以说最懂各自瞄准的需求了。
HybridApp 派:号称融合了 h5 派和 native 派的优势,有很多成熟的住宅建设经验,目前风头正劲。以前有 phonegap,后来有 cordova,最近 ionic 表现也很抢眼。
纯真派:后起之秀,被认为是建筑行业的未来,可以说综合其它各个派系的优点,一出手变表现惊艳,但是初出茅庐,经验上欠缺些。比如 NativeScript、React Native、Flutter.
小程序派:Taro、WePY、uni-app、mpvue、chameleon 这些团队在专业的领域比如旅馆建筑很有建树,实力不容小觑。
公开招标会开始了,招标主人人开始主持:
1. 各位都是建筑业的精英,我们实行集中陈述,互相答辩的方式。
第一个问题:
1. 目前有主房两套,其余厢房、门房若干,要求尽可能一次性充分利用材料,一次采购和加工建筑材料,能够多个地方能用。比如搅拌机搅拌一次搅机开一次就能把各个房间用的水泥搅拌出来,能够做出各个房子能用的砖块和柱子。(维护一套代码,能够在跨平台运营,write once,run any where)
这个需求各路豪杰谁想说说?
html5 派的 PWA 直接站起来,因为这个就是他的强项啊!
PWA 开口了,大家都知道 H5 作为资历最老的建筑团队,从一开始就主张所有平台通用,目前我们所有的建筑技术都是可以通用的,不管是住宅,商用还是,写字楼,相比 native 派只能在具体的领域很厉害,我们还是优势很明显的,而是我们有望成为下一代的通用标准。还记得我们当初我们公司的杰作 ajax 吗?不就成了数据交互事实标准了吗?
没想到还没到答辩环节,PWA 一开口就怼人了,但是这句话确实怼的 native 派没话说。
HybridApp 派,看 PWA 说完了,说到,大家看看淘宝以及各大主流平台都采用了我们的建筑方式,所以我不想多说,我们的建筑经验第一,相信 Flutter 你也认同吧。
虽然 Flutter 被人戳中了软肋,很不爽,但是还是点了点头。对于前辈还是要尊重的。
纯真派见 HybridApp 派坐下了,站起来,说到,我们这一派都是精英中的精英,比如 react native、nativeScrtip, 它没好意思说自己,我们在建筑业的表现大家也有目共睹了。
小程序派听着他们的阐述,因为看到土豪的那么多需求感觉自己实现不了,所以心虚想看看再说,所以暂时这一轮弃权。
好,主持人又开始说话了,我们看第二个问题:
2. 房子的各项水电煤功能齐全。(能够充分利用设备的功能)
刚才被怼的 native 派一下子站了起来,我就问一句话,说到能够把房子的功能盖到极致,我们派说第二,哪个团队敢说第一?H5 你们敢吗?
因为这个问题 native 派派优势性很大,所以过。
主持人继续,我们看第三个问题:
3. 房子后期维护方便,最好能让家人或者我的工人们也能改造房子。(学习容易)
h5 又站起来了,你就说我们干活快不快吧?native?
native 无话,
HybridApp 派,我们也不慢。
h5 很仔细的说,比我呢?
纯真派虽然维护挺快,但是因为自己用了 dart 所以让人去学还是存在一定困难的。
这个问题又过了,能让家人或者我的工人们也能改造房子。这点心虚,所以不说话。
主持人继续,我们看第四个问题:
4. 盖房成本要尽可能低。(开发和维护都省钱)
h5 又站起来了,你们就说我盖房子成本低不低吧?native。
native 确实贵,被 H5 怼的真忍不住反驳,你那个也要叫房子?四处漏风,水电都不通。
主持人说一会答辩,土豪皱了皱眉。
HybridApp 派和纯真派说,我们也不慢啊。
主持人一看这要杠上,所以说,这样吧我们开始答辩,大家说说你们打算怎么干,依次发言。
html5 说到,我打算搭一个木头架子(html),然后外面贴上铁皮,一刷油漆完事 (css),里面可以安个电风扇 (js)。
native 说到,你这个不就是活动板房吗?煤电燃气怎么解决?
PWA 说我们打算逐步解决这个问题,比如大明家可以安装空调,因为他家房子架子可以用钢筋的,门房因为比较老旧了,装空调费劲,但是我们可以装空调。
native,笑道,你是在盖猪圈呢吗?native 起来发言,我呢打算先挖坑,然后里面水泥浇筑,然后用压路机轧上 200 趟,然后我去山里拉石头,把石头磨得方方正正,然后垒起来,保证一百年不倒,重点是里面各种高级装修,闭路电视、监控只要是老大想装的,我们全能装。
HybridApp 笑了,你上次给村长儿子结婚盖的房子,人家儿子都上小学了,你完工了吗?
主持人说,你打算怎么干?
我呢主结构采用 native 的那套保证兼顾,装修和墙壁使用 h5 的,又快有时会。
纯真派问道,那前辈,活动板墙壁冬天取暖很费空调费啊,保暖性能也不好,怎么解决呢?
HybridApp, 无话。因为纯真派知道这次小程序就是来陪标的,所以根本不放在眼里,所以阐述自己的想法。
我能打地基的时候采用 native 的方式,而主体建筑我采用混凝土钢筋结构,虽然没有把石头打磨平整一整块石头那种方式坚固,但是也是绝对坚固能够满足建筑的坚固需求的。同时混凝土浇筑速度快,同时能够解决内部精装和 HybridApp 的建筑方式保暖、通风问题。
土豪心里似乎明朗了一些,基本上小程序打酱油、PWA 不能立马满足所有需求,H5 因为功能缺失出局,集中点就在 HybridApp 和纯真派上。HybridApp 虽然成熟,但是确实性能不好,功能上也不如纯真派来的直接,但是又不想重复村长儿子的悲剧。但是一想到纯真派的经验不足,就想多问一些。
于是主持人问到,纯真派你们能详细说说吗?
这句话无疑就相当于说,我觉得纯真派有戏,那么竞争就变成派系内部了,也就是三大主角。
react native、flutter、NativeScript .
react native 先发言,
我们隶属于 fackbook 公司,依托于 react,语法上沿用了 react,我们使用 javascript,可以很好的维护。
不用 HybridApp 的 Webview,彻底摆脱了 Webview 让人不爽的交互和性能问题,有较强的扩展性,这是因为 Native 端提供的是基本控件,JS 可以自由组合使用,可以直接使用 Native 原生的动画。
rn 说了一堆专业术语显得自己很专业听的土豪一头雾水,但是感觉很厉害。
flutter 打断道,说的好像你盖完老大的房子的东西就直接能用到老二家似的,况且你看看你建筑的那些组件的 bug 还用我说吗?
rn 说,我们确实存在一些问题,但是我们在尝试解决。
flutter 落井下石,尝试解决?就是一堆坑没解决呗。
rn 反击道,就算是没解决也比你还没遇到好吧?再说了你那个破 dart,你觉得非专业人员能学会吗?
NativeScript 一听这么说,心虚了,自己的东西比他们两个都复杂,赶紧闭嘴。
看来剩下就是 flutter 和 rn 的论战了,不过也没有什么新意,flutter 总是强调自己的砖瓦石灰各种模块多丰富,盖房子多快,性能多好,然后 rn 总强调自己的学习不用学其它语言就 js 就行。
想到这里,主持人说答辩结束,我总结一下,各方观点:
1.h5 开发快修改成本低于,能够跨平台,但是因为标准更新缓慢,所以功能支持不完善。
2.HybridApp,方案成熟,应用很多,性能不是很好(相比 flutter 和 rn)
3.native 功能全,但是不能跨平台,开发慢。
4.rn 学习成本低(比 HybridApp 高,比 flutter 低),坑比较多。
5.flutter 优势明显,但是需要学 dart,但是组建丰富。
是这样吗?
大家点头。
土豪考虑,综合一听其实王道还是 h5,奈何它太慢了,感觉不是别人做的太好了,而是它做的太差了。小程序不考虑了,native 不考虑成本太高,开发慢,不跨平台。因为大儿子着急结婚(主营业务、核心需求),所以采纳 HybridApp 比较稳妥,二儿子不着急结婚所以让 flutter 去盖(次要业务)。rn 就不考虑了,不过好像因为之前的厢房是 react 盖的,所以 react native 接受翻盖会容易些,所以这块给他们吧。
所以最终宣布:
大儿子的房子 HybridApp 中标,
二儿子的房子 flutter 中标,
厢房和门房因为之前就是 react 弄的,所以 reaact native 中标!
3 月 23 号,前端职业规划师 Maxwell,在线 live 为大家讲解跳槽、面试相关的实战攻略。