<

那么多前端新技术,哪个值得学?

老师,我看今年前端分了俩方向啊,一个是Flutter和React Native这种,还有就是小程序,淘宝小程序这种微应用,我们公司让我做React Native这块儿,这是不是对我未来发展好些?以前技术栈还是Vue,我最近转React了,刚开始写第一个项目,我还看了看uni-app,学习成本更低一些,国内好像更吃香?到底第该学哪个?

 

img

 

前几天有个学生问我上面的问题,因为前端技术领域最不缺的就是新技术,前端开发者比较头疼的不是没有技术可用,而是可用的技术太多了,学不过来,也不知道选哪个。

 

其实类似的问题争论在PC时代就存在过,太阳底下没有什么新鲜事。甚至在我们生活中都有类似的选择问题。技术学习者要"看技术是技术,然后看技术不是技术"。如果你打算理解一项技术的产生和优缺点,就去追问他的应用场景,或者生活中的应用场景。如果一项技术你找不到生活中的对应,很可能你根本就不理解这项技术,而只是官方demo或者别人示例代码的搬运工。

 

今天我就说说,Flutter 、React Native 、 Ionic、 NativeScript 、小程序和PWA哪个值得学?

 

话说long long ago,有一个土豪,他有两个儿子大明(IOS)和小明(安卓),土豪琢磨孩子年龄大了该准备婚事了,那就得先有房子,另外的家里的门房和厢房都该翻盖了,所以他想好好的规划一番,对了还要做好防盗,不能让闲杂人等进来影响安全。

 

他找老大谈话征求老大对房子的意见。

老大说,我的婚房要豪华气派,要高级装修,要住起来非常的舒服,闭路电视、宽带,能通的就通上,反正也是折腾一回,盖房子就大事,盖一次争取就是村里最好的房子要住很多年呢。

 

他又和老二谈话,征求老二对房子的意见。

 

老二说,我又不着急结婚,房子就是个住的地儿,我呢又在上学,反正怎么快怎么来吧,这样周末和暑假还可以过来玩。房子老了,到时候结婚了再翻盖也不迟,现在盖了将来也旧了,对了要方便一些,能让我的朋友们跟我随便造。

 

土豪一听都觉得有道理,他觉得都挺有道理,于是发了一个公告,寻找各路包工队帮盖房子。

img

 

于是发了一个招标公告

本人土豪,家资殷实,诚招各路豪杰帮我家盖房要求:

  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 这些团队在专业的领域比如旅馆建筑很有建树,实力不容小觑。

 

公开招标会开始了,招标主人人开始主持:

 

各位都是建筑业的精英,我们实行集中陈述,互相答辩的方式。

 

第一个问题

目前有主房两套,其余厢房、门房若干,要求尽可能一次性充分利用材料,一次采购和加工建筑材料,能够多个地方能用。比如搅拌机搅拌一次搅机开一次就能把各个房间用的水泥搅拌出来,能够做出各个房子能用的砖块和柱子。(维护一套代码,能够在跨平台运营,write once,run any where)

img

 

这个需求各路豪杰谁想说说?

 

html5派的PWA直接站起来,因为这个就是他的强项啊!

 

PWA开口了,大家都知道H5作为资历最老的建筑团队,从一开始就主张所有平台通用,目前我们所有的建筑技术都是可以通用的,不管是住宅,商用还是,写字楼,相比Native派只能在具体的领域很厉害,我们还是优势很明显的,而是我们有望成为下一代的通用标准。还记得当初我们公司的杰作ajax吗?不就成了数据交互事实标准了吗?

 

没想到还没到答辩环节,PWA一开口就怼人了,但是这句话确实怼的Native派没话说。

 

HybridApp派,看PWA说完了,说到,大家看看淘宝以及各大主流平台都采用了我们的建筑方式,所以我不想多说,我们的建筑经验第一,相信Flutter你也认同吧。

 

虽然Flutter被人戳中了软肋,很不爽,但是还是点了点头。对于前辈还是要尊重的。

 

纯真派见HybridApp派坐下了,站起来,说到,我们这一派都是精英中的精英,比如React Native、NativeScrtip,它不好意思的说自己,我们在建筑业的表现大家也有目共睹了!

 

小程序派听着他们的阐述,因为看到土豪的那么多需求感觉自己实现不了,所以心虚想看看再说,所以暂时这一轮弃权。

 

第二个问题

房子的各项水电煤功能齐全。(能够充分利用设备的功能)

img

 

刚才被怼的Native派一下子站了起来,我就问一句话,说到能够把房子的功能盖到极致,我们派说第二,哪个团队敢说第一?H5你们敢吗?

 

因为这个问题Native派的优势性很大,所以,过!

 

第三个问题

房子后期维护方便,最好能让家人或者我的工人们也能改造房子。(学习容易)

 

h5又站起来了,你就说我们干活快不快吧?Native?

 

Native无话。

 

HybridApp派,我们也不慢。

 

h5很仔细的说,比我呢?

 

纯真派虽然维护挺快,但是因为自己用了dart所以让人去学还是存在一定困难的。

 

这个问题又过了,能让家人或者我的工人们也能改造房子。这点心虚,所以不说话。

 

第四个问题

盖房成本要尽可能降低。(开发和维护都省钱)

img

h5又站起来了,你们就说我盖房子成本低不低吧?Native。

 

Native确实贵,被H5怼的真忍不住反驳,你那个也要叫房子???四处漏风,水电都不通。

 

主持人说一会答辩,土豪皱了皱眉。

 

HybridApp派和纯真派说,我们也不慢啊。

 

主持人一看这要杠上,所以说,这样吧我们开始答辩,大家说说你们打算怎么干,依次发言。

 

html5说到,我打算搭一个木头架子(html),然后外面贴上铁皮,一刷油漆完事(css),里面可以安个电风扇(js)。

 

Native说到,你这个不就是活动板房吗?煤电燃气怎么解决?

 

PWA说我们打算逐步解决这个问题,比如大明家可以安装空调,因为他家房子架子可以用钢筋的,门房因为比较老旧了,装空调费劲,但是我们可以装空调。

 

Native,笑道,你是在盖猪圈呢吗?Native起来发言,我呢打算先挖坑,然后里面水泥浇筑,然后用压路机轧上200趟,然后我去山里拉石头,把石头磨得方方正正,然后垒起来,保证一百年不倒,重点是里面各种高级装修,闭路电视、监控只要是老大想装的,我们全能装。

 

HybridApp笑了,你上次给村长儿子结婚盖的房子,现在人家儿子都上小学了,你完工了吗?

 

主持人说,你打算怎么干?

 

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接受翻盖会容易些,所以这块给他们吧。

img

 

所以最终宣布:

大儿子的房子HybridApp中标,二儿子的房子Flutter中标,厢房和门房因为之前就是React弄的,所以Reaact Native中标!