热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

唱唱反调:风口上的技术不要盲目追

  对于前端领域的开发者来说,“学不动了”虽然更多是一种调侃,但也真实地反映出了他们面对频繁出新的前端技术时又爱又恨的心情。在经历了移动互联网的大爆发后,前端领域的边界不

 

 

对于前端领域的开发者来说,“学不动了”虽然更多是一种调侃,但也真实地反映出了他们面对频繁出新的前端技术时又爱又恨的心情。在经历了移动互联网的大爆发后,前端领域的边界不断扩张,新技术、新概念、新框架层出不穷。这在一定程度上迎合了开发者喜欢追踪热门框架和技术最新发展的天性,但同时也带来了新问题。热门框架那么多,到底该选哪个?新技术引入并非毫无代价,一味追求新技术是不是合理?最火、最流行的技术一定适合你所在的团队吗?

在大前端领域,我们已经看到了太多技术风口,关于如何做好前端技术选型这件事,我们希望能从不一样的视角聊一聊。为此,InfoQ 近期采访了阅文集团技术专家、前百度 T8 资深研发工程师彭星,谈谈他对目前大前端发展趋势和架构演进的理解,并总结了他在技术方向选择和方案选型上的经验,希望能给大家提供一些参考。另外,彭星是 GMTC 全球大前端技术大会(北京站)2020 大前端架构演进专题的出品人,该专题将通过解读行业具体实践案例明晰前端架构演进的路径和未来方向,感兴趣的同学可以关注。

 

大前端架构十年演进

彭星进入淘宝和百度实习的时候是 2010 年,到现在刚好十年。回顾过去这十年,前端领域经历了一场不大不小的变革。

2010 年, AJAX 已经应用多年,十分成熟,虽然出现了 backbone 这样的 MVC 框架,但真的用 MVC 框架开发用户产品的并不多,绝大部分是内部管理系统。这个时期主流前端是开发后端模板,通过服务器端渲染,AJAX 用来做页面内容的局部更新。要说 2010 年前对业界影响比较大的一件事情,就是 Chrome 团队开发的 v8 引擎,大幅提升了 JS 的性能。这时候还没有大前端这一说法。

同年,基于 v8 引擎的 Node.js 出世,使得前端开发人员可以用 JS 编写服务器端代码,接管渲染层,开启了大前端的大门。不过 Node.js 在服务端使用真正被开发者接受是在 2012 到 2013 年左右,前后端分离开始变得流行,这时候的前端包括前端和渲染层。

再后来就是改变世界的移动时代的来临,流量逐渐从 PC 分流到移动平台。Web 相比 Native,具有跨平台、开发成本低、周期短、发布周期短等优势,在移动开发上赢得了不小的市场。这一时期出现了 Hybrid 混合开发 App,结合了 Web 和 Native,谁也没能替代掉谁。

但是,Hybrid 毕竟也是 WebView,性能相比 Native App 依然存在不足,而在手机这样小的屏幕上,用户体验尤其重要。想要 Native 般的体验,又想要 Web 跨平台、动态发布等优点,并不容易,但办法总是比困难多,React Native 的出现,将两者的优点融合在一起。这个时候大前端的边界再度扩大,涵盖了前端、渲染层和端开发。

然后就是近两年小程序和 Flutter 的流行,使得大前端的概念和范畴进一步巩固。

这期间不断涌现的新技术给前端开发者和前端团队 Leader 带来的困扰是:那么多新框架、新技术、新编程语言,怎么选?

 

盲目跟风不可取

最简单的一种方式是互联网大厂选什么,跟着选就是了。这其实是在技术选型上偷懒,却也是当前业界普遍存在的情况:很多公司在前沿技术方向上盲目跟风互联网大厂,并没有好好考虑这些技术方案是否真的适合自己。

比如,企业官网是不是应该用 MVVM 框架来做?彭星的答案是不应该,在他看来,企业官网需要 SEO,交互少,传统的服务器端渲染是最好的解决方法。虽然用 Node.js 做 React/Vue 的 SSR 也能解决 SEO 问题,但这其实是把简单问题复杂化了,不仅费人费事还费财。

彭星认为,大厂在技术探索上投入很大的人力物力是有理由的,他们的业务模块多且复杂,既需要保留解决方案的灵活性,也需要可维护性,但这些不应该是中小企业优先关注的问题。

彭星表示,互联网大厂、传统企业和中小型企业,在前端技术选型上应该有不同的侧重点:

互联网大厂,核心技术自研非常有必要,因为只有自己掌握核心技术才能不受人制约,所以大厂在技术探索上投入很大的人力物力。大厂的二级业务才会选择使用内部自研的或者社区影响力大的技术方案。

传统企业,需要结合自身企业类型来选择前端技术方案。传统企业往往需要承接各个平台过来的流量,载体一般是网站和小程序,小程序不用多说,网站还是主要看是否需要 SEO,是否便于在主流平台进行分享传播,一般选择后端直出的框架配合 jQuery 即可。

中小型企业,这类型的企业有一定的研发能力,业务类型多样,以 Native App 和小程序居多,网站只是 App 引流工具或者活动页面。Native 的解决方案取决于业务类型,只要不是非常复杂且对可靠性要求很高的应用, Flutter、RN 等跨平台方案是很好的选择。

综上所述,技术选型首先还是要参考业务需求,“同时也呼吁同行,不要为了达到一些目的而大肆鼓吹,这对相信你的开发者很不负责”,彭星进一步补充。

 

前端技术选型经验小结

彭星毕业后在百度工作了 9 年,期间负责百度搜索团队的前端技术,曾主导百度搜索前端的优化和重构工作;2020 年加入阅文集团负责创新中台团队,团队成员共有 50 多人,包含了前端、客户端、服务端等不同角色,是名副其实的大前端 + 的团队,集团的新产品都从这里孵化。虽然新老东家的前端团队规模、主要业务均有不同,关注的技术点也有差异,但在技术选型上却有一点是相同的,那就是以实用为主。

彭星表示,阅文对于前端技术的关注点主要是实用,要能解决业务中的问题,同时要有技术架构上的灵活性,由于业务的复杂度不高,因此技术一般都是拿来直接用,比较方便;百度的体量更大,每个大的团队关注点也会有一些区别,彭星之前所在的百度搜索团队,对于前端的关注点同样是实用为主,因为搜索系统庞大而复杂,也会关注前端技术能否解决大型系统中的组织结构灵活性和可维护性问题,同时还要求性能最好,一般很少直接使用业界的技术,而是吸收加以改善,再用到项目中。

彭星在做技术选型时一般会参照以下几个步骤:

首先看自身的主要问题是什么, 业务需要什么;

再看业界有什么解决方案,一定要结合自身业务的主要诉求;

方案决定后,选择框架,选择社区大而活跃的。

对于大前端领域现在很火的前沿技术,如 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 还早了点,再者,它解决的问题也不是前端圈子首先应该关注的问题,我也没觉得现在运维成本有多高,反而从现在一个容器里将业务拆成一个个函数的一次性成本有点高。



它在一定程度上会让开发者对架构和代码的控制力变弱,想做优化,想做改进,很难,你只能靠云帮你做。还是那句话,选最合适的,而不是最好的,更不是最『流行』的。


对于未来,彭星持续看好前端和端融合的方向,他负责的团队也会在这个方向上继续投入人力。在他看来,前端和端融合带来的收益是最直接和明显的,人力投入能减少 50% 左右,非常可观。

 

作者丨蔡芳芳

本文来自博客园,作者:古道轻风,转载请注明原文链接:https://www.cnblogs.com/88223100/p/Dont-blindly-pursue-the-technology-on-the-air-outlet.html



推荐阅读
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • 探讨低代码行业发展现状,分析其未能催生大型企业的原因,包括市场需求、技术局限及商业模型等方面。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 腾讯云移动推送TPNS(Tencent Push Notification Service)为APP开发者和运营人员提供了一站式、高效、稳定的推送解决方案,帮助提升用户活跃度和运营效率。 ... [详细]
  • ABP框架是ASP.NET Boilerplate的简称,它不仅是一个开源且文档丰富的应用程序框架,还提供了一套基于领域驱动设计(DDD)的最佳实践架构模型。本文将详细介绍ABP框架的特点、项目结构及其在Web API优先架构中的应用。 ... [详细]
  • 本文讲述了一位80后的普通男性程序员,尽管没有高学历,但通过不断的努力和学习,在IT行业中逐渐找到了自己的位置。从最初的仓库管理员到现在的多技能开发者,他的职业生涯充满了挑战与机遇。 ... [详细]
  • 深入探讨前端代码优化策略
    本文深入讨论了前端开发中代码优化的关键技术,包括JavaScript、HTML和CSS的优化方法,旨在提升网页加载速度和用户体验。 ... [详细]
  • 近期尝试从www.hub.sciverse.com网站通过编程手段获取数据时遇到问题,起初尝试使用WebBrowser控件进行数据抓取,但发现使用GET方法翻页时,返回的HTML代码始终相同。进一步探究后了解到,该网站的数据是通过Ajax异步加载的,可通过HTTP查看详细的JSON响应。 ... [详细]
  • Python 领跑!2019年2月编程语言排名更新
    根据最新的编程语言流行指数(PYPL)排行榜,Python 在2019年2月的份额达到了26.42%,稳坐榜首位置。 ... [详细]
  • 小编给大家分享一下Vue3中如何提高开发效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获, ... [详细]
  • 本文提供了《汇编语言 第3版》中检测点11.2的详细参考答案,包括了各指令执行后的状态标志分析。 ... [详细]
  • 本文总结了软件工程课程M1和M2阶段的个人收获,包括项目开发中的技术学习、团队协作及管理经验。同时,对《构建之法》一书中的相关问题进行了理解和分析。 ... [详细]
  • 本文将详细介绍如何配置JDK 8u101的环境变量,包括下载、安装和环境变量的设置步骤。适用于64位和32位操作系统。 ... [详细]
  • 本文作者是一位普通二本学校的毕业生,尽管学校背景不如211、985高校,但他通过自身的努力学习数据结构、组成原理和操作系统等课程,认为自己的能力并不逊色于名牌大学的毕业生。文章详细描述了他在不同城市求职的经历以及对自身能力和未来发展的看法。 ... [详细]
  • 本文将详细探讨PHP中C的作用,并对比其他编程语言如Java和C的特点及其适用场景。 ... [详细]
author-avatar
点燃半吱煙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有