nickking 2019-07-01
彬哥,我看今年前端分了俩方向啊,一个是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为大家讲解跳槽、面试相关的实战攻略。