背景:
在进行技术栈的选择时,决策过程往往涉及多个层面的考量,尤其是当选项众多且技术日益成熟的今天。React 和 Vue 作为当下流行的前端框架,各有其独特的优势和特点。然而,决定使用哪一个并不仅仅是技术层面的比较。
-
要回答这个问题,我们应该建立一个基本的认知,即
技术是为业务提供服务的
,所以我们的回答最后一定要回落到业务上,可以给业务带来什么价值,例如更快的开发效率支持业务快速迭代,更稳定的技术支持减少业务崩溃带来的资损,更佳的用户体现让用户沉浸式享受愿意支付更多的订单。总结下无非就是性能,效率,稳定性
这三个问题。 -
只是这样依然不够 这只是更好的维护了现有业务基本盘。我们还应考虑是否可以降低业务的运营成本,提高业务的应用场景。即
开源节流
,增加收益. 😂(可不是 开猿节流啊)
总结下本文将以技术是为业务提供服务的
为核心,从技术出发,配合性能,效率,稳定性
这些因素,从业务发展以及未来的规划
, 团队和组织文化的适配
,框架本身的差异&发展
这三个方面,提出合理的参考意见,以达到技术赋能业务
的效果。
业务发展以及未来的规划
面向未来 业务的扩展性
企业需要评估其业务方向和未来的发展规划。对于面向C端的H5业务,技术选型需要考虑的不仅是当前的端内或浏览器环境,更重要的是预见未来可能拓展的流量渠道,如微信小程序、支付宝小程序、快应用等。这些平台因其在移动端的广泛应用成为了新的流量高地。
React 的开发模式与小程序较为贴合,特别是在状态管理和组件化结构上与小程序的WXML有许多相似之处,使得从 React 开发体验上迁移到小程序开发相对容易。这种相似性可以减少学习曲线,加快开发速度,更重要的是能够有力支撑快速变化的业务需求,以提高业务的交付效率。
业务性能问题的解决方案
C端对于用户体验和性能是有较高的要求的, 在默认的csr模式不能满足性能要求时 我们可以采用其他的技术栈来改善我们的性能。
例如常见的ssr,ssg等。这些react有next框架可以提供低成本,良好的能力支持。对于vue也有相应的nuxt框架提供能力支持。虽然两者在功能上都能满足大部分需求,但在二级框架
的生态建设上,React 的 Next.js 显示了更大的活跃度和丰富性。例如,Next.js 在社区中拥有广泛的用户和贡献者。更活跃的社区意味着更多的插件、工具和解决方案,也意味着遇到问题时能更快找到帮助和修复。
能力上限
不同技术栈的覆盖能力直接影响到应用的跨平台支持和用户体验。对于那些希望不仅在网页端,还能拓展到移动 APP 的业务场景,选择覆盖面更广的技术栈尤为重要。
React 的官方团队维护的 React Native 框架允许开发者使用 React 技术栈构建原生移动应用。这种共享技术栈的模式不仅减少了重复劳动,还确保了高质量的用户体验。React Native 已被广泛应用于许多知名企业的 APP 开发中,社区活跃、资源丰富,有助于团队快速上手和解决问题。
Vue 的生态中有 uni-app 框架,可以帮助开发者构建跨平台应用。然而,与 React Native 相比,uni-app 在实际应用中的广泛度、社区支持和资源丰富度上存在差距。
团队方面
内部基建
公司层面对不同技术栈的支持度也是决策中不可忽视的重要因素。一个成熟的技术生态系统和内部共享的基础设施,可以极大地提高开发的效率
,减少重复造轮子的工作。例如内部组件库、开发工具、项目模板、脚手架工具、自动化测试框架和 CI/CD 流程。新项目将能够直接受益于这些基础设施。开发者不仅可以快速搭建项目结构,还可以直接使用已经被验证和优化的组件和工具,确保产品质量和一致性。
从公司已有的技术资产和资源支持角度出发,选择与之兼容性强、可复用性高的技术栈,无疑能加速开发流程,降低开发成本
。
成员技术熟练度
团队成员对于特定技术栈的熟练程度直接影响到项目的开发效率和代码质量
,进而影响产品的稳定性和可维护性
。如果团队中绝大多数成员都对 Vue 有深入的了解和实战经验,那么即使 react 在某些方面有轻微优势,选择 vue 也是更加合理的。因为开发者可以利用现有的知识和经验迅速开展工作,减少上手学习的时间,同时能够更有效地利用现有的最佳实践和解决方案来应对开发中的问题。
反之, 在一个以 vue 技能为主的团队中引入 React, 可能需要额外的培训和学习周期,而在项目初期可能会因为缺乏经验而导致开发速度较慢和出错率增高。
框架本身
框架理念
React 的设计理念强调声明式编程,通过组件化的方式提供了高度的代码复用性和模块化。这对于构建大型、复杂且动态的用户界面尤其有利。React 的虚拟 DOM 和高效的更新算法(Reconciliation)使其在处理频繁数据更新的应用(如单页应用)中表现出色。
Vue 的三段式设计则更加易于上手,提供了渐进式的开发体验。它通过指令(Directives)扩展 HTML,使得创建动态内容变得非常直观。Vue 的响应式系统直接映射了数据模型到视图层,这使得数据驱动的应用开发变得简单。在编译时可以实现多种优化手段 让开发者不必手动实现一些基础的性能优化。
学习成本、心智负担
React 提出了很多的高级理念如 Hooks、Context等等,详细参考 面试官:react用三年多了? 来看看下面的知识点你是如何理解的... 这些理念导致了学习曲线相对陡峭的问题。而且因为其自身框架的设计问题导致天生存在过度渲染,需要开发者花费时间和精力去手动做一些性能优化的实现。
Vue 拥有较大的生态系统和广泛的社区支持,提供了大量的资源和工具,在易用性和简洁性方面表现较好,其单文件组件结构和直观的模板语法使新开发者能够更快地上手和适应。
发展方向
React 最近几年有点倾向于"元框架",其未来的发展重点是服务端渲染和大规模生态系统的构建。通过像 Next.js 这样的上层框架,React 不仅限于客户端渲染,还能提供 SSR、SSG 的解决方案,支持更广泛的应用场景。
Vue 的发展侧重点仍在于渐进式框架本身,提供更易用、更高效的客户端开发体验。尽管 Vue 也支持 SSR,但其主要吸引力仍然是其简单、直观的开发体验,而这往往意味着高效和稳定。