- 《架构师》2020年4月
- InfoQ中文站
- 3字
- 2020-08-03 16:42:45
卷首语
唱唱反调:风口上的技术不要盲目追
对于前端领域的开发者来说,“学不动了”虽然更多是一种调侃,但也真实地反映出了他们面对频繁出新的前端技术时又爱又恨的心情。在经历了移动互联网的大爆发后,前端领域的边界不断扩张,新技术、新概念、新框架层出不穷。这在一定程度上迎合了开发者喜欢追踪热门框架和技术最新发展的天性,但同时也带来了新问题。热门框架那么多,到底该选哪个?新技术引入并非毫无代价,一味追求新技术是不是合理?最火、最流行的技术一定适合你所在的团队吗?
在大前端领域,我们已经看到了太多技术风口,关于如何做好前端技术选型这件事,我们希望能从不一样的视角聊一聊。本文整理自近期与阅文集团技术专家、前百度T8资深研发工程师彭星的采访交流。
对于新框架、新技术、新编程语言怎么选,最简单的一种方式是互联网大厂选什么,跟着选就是了。这其实是在技术选型上偷懒,却也是当前业界普遍存在的情况:很多公司在前沿技术方向上盲目跟风互联网大厂,并没有好好考虑这些技术方案是否真的适合自己。
比如,企业官网是不是应该用MVVM框架来做?彭星的答案是不应该,在他看来,企业官网需要SEO,交互少,传统的服务器端渲染是最好的解决方法。虽然用Node.js做React/Vue的SSR也能解决SEO问题,但这其实是把简单问题复杂化了,不仅费人费事还费财。
说到底,大厂在技术探索上投入很大的人力物力是有理由的,他们的业务模块多且复杂,既需要保留解决方案的灵活性,也需要可维护性,但这些不应该是中小企业优先关注的问题。
• 互联网大厂、传统企业和中小型企业,在前端技术选型上应该有不同的侧重点。
• 互联网大厂,核心技术自研非常有必要,因为只有自己掌握核心技术才能不受人制约,所以大厂在技术探索上投入很大的人力物力。大厂的二级业务才会选择使用内部自研的或者社区影响力大的技术方案。
• 传统企业,需要结合自身企业类型来选择前端技术方案。传统企业往往需要承接各个平台过来的流量,载体一般是网站和小程序,小程序不用多说,网站还是主要看是否需要SEO,是否便于在主流平台进行分享传播,一般选择后端直出的框架配合jQuery即可。
• 中小型企业,这类型的企业有一定的研发能力,业务类型多样,以Native App和小程序居多,网站只是App引流工具或者活动页面。Native的解决方案取决于业务类型,只要不是非常复杂且对可靠性要求很高的应用,Flutter、RN等跨平台方案是很好的选择。
综上所述,技术选型首先还是要参考业务需求,有几个通用的步骤可以参照:
• 首先看自身的主要问题是什么,业务需要什么;
• 再看业界有什么解决方案,一定要结合自身业务的主要诉求;
• 方案决定后,选择框架,选择社区大而活跃的。
对于大前端领域现在很火的前沿技术,如Vue、React、Flutter这三大框架,以及Serverless等,前端团队如何判断这些技术是否适合自己?
彭星参照上述技术选型的几个步骤给出了一些建议:
首先看业务的形态是什么,后台管理系统、移动端网站、移动端App还是其他形态。
Vue/React解决的问题类似,主要是富交互场景,比如管理系统,或者移动端Web App。当然他们都可以作为Hybrid的前端框架继承在App里,如果是在Vue和React中挑一个的话,大型系统选择Angular,有洁癖选择React。
Flutter的选择就很简单了,移动端想跨端、节省人力、愿意学Dart就可以,只是iOS上的动态更新要费点事。Flutter现在最主要的竞品其实是React Native, RN由于苹果的那条传言已久的禁令,受到的影响不小,如果担心这个,可以不选RN。
对于过去一年十分火爆的Serverless,彭星认为它的发展有点超出自己的预期。
在我看来,Serverless还早了点,再者,它解决的问题也不是前端圈子首先应该关注的问题,我也没觉得现在运维成本有多高,反而从现在一个容器里将业务拆成一个个函数的一次性成本有点高。
它在一定程度上会让开发者对架构和代码的控制力变弱,想做优化,想做改进,很难,你只能靠云帮你做。
还是那句话,选最合适的,而不是最好的,更不是最『流行』的。