都 9012 了,该选择 Angular、React,还是 Vue?

2019-04-18 15:23:37 +08:00
 powertoolsteam

转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。


尽管 Web 开发的典型应用场景除了将服务器用作平台、浏览器用作客户端之外,几乎很少活跃于其他业务领域,但不可否认 JavaScript 语言和框架的使用已经成为了主流。Angular、React 和 Vue,作为 JavaScript 的三大框架已逐步发展成熟,三者的差异性也越发明显,假设 JavaScript 还会继续流行十年左右,未来十年,你将会作何选择?

Angular

AngularJS 自 2009 年诞生,至今已有十年历史。在这短短十年中,其对 Web 社区的发展产生了十分深远的影响。作为一款优秀的 JavaScript 框架,在其推出一年后,便在全球引起了广泛关注,如今更是在 Google 的 600 多款产品中得以成功运用,如 Firebase 控制台、谷歌分析、谷歌快车、谷歌云等。

AngularJS 有着诸多核心特性,包含:MVC ( Model – view – controller )、模块化、自动化双向数据绑定、语义化标签、依赖注入等。Angular 最新版 7.0.0 已于 2018 年 10 月发布,下一版本预计将于今年第二季度正式上线。以下是 Angular 7 针对性能、命令行工具和 Material Design 组件的优化项:

React

Angular 的出现,在 Web 社区引发了强烈轰动。两年后,Facebook 也推出了一款同样具备丰富功能的 JavaScript UI 组件库—— React。

使用 React,意味着您将用一种更简约的方式开始前端开发,这也是大部分开发人员所期待的:

不多,却正好够用,您完全可以根据自己的需要,自由添加任何组件库,它们包括:

组件功能:React VS Angular

Angular 提供了比 React 更多开箱即用的功能,如:

当然,Google 工程师已经意识到了这个问题,也在一定程度上致力于简化 Angular 框架的复杂性,希望在 Angular 8 中能让人耳目一新。

Vue

在 React 与 Angular 孰优孰劣的讨论逐步升温的时候,另一个 JavaScript 框架 Vue 抵达了现场,使得这场最优 Web 开发框架的角逐变得更加白热化。

Vue.js 是由 Google 的核心开发工程师——尤雨溪( Evan You )所创建的框架,作为一个比 React 和 Angular 都更年轻的框架,Vue 从它们那里借鉴了好的部分,即函数式和面向对象编程的混合体。2014 年 2 月(在微软收购 GitHub 平台四年之前),Evan You 在 GitHub 上发布了第一个稳定版本的 Vue,标志着一个构建数据驱动的 Web UI 的渐进式框架就此诞生。

尽管没有得到谷歌和 Facebook 等科技巨头的支持,但自 2018 年以来,Vue 一直受到开发者的广泛关注。从去年几大主流前端开发框架的热度来看,大多数知晓 Vue 的开发者都表示有兴趣学习它。

也许,那些已经熟练掌握 Angular 和 React 前端框架的开发人员也应该花些时间去了解一下这个简单、小巧、省心的前端框架,希望下面的内容能对你有所帮助。

学习曲线:React VS Vue

如果前端框架的学习不包含 TypeScript (即便 TypeScript 通常被认为是 JavaScript 的增集,但要完全掌握仍需要学习额外的类处理过程),那么 React 和 Vue 的学习速率都高于 Angular。

相对于 React,许多初学者认为 Vue 的学习成本更低,因为它提供了更加丰富的资源文档和中文支持。事实上,Vue 和 React 学习速率的实际情况是大致相同的,由于大部分 Vue 的学习资料直接以单个 Web 应用程序的开发实践开始,直观且清晰的代码逻辑的确可以帮助初学者更快入门,但是,随着学习内容的深入,当您需要开发复杂的 Web 应用程序时,花哨灵活的指令和逻辑反而会让人觉得 Vue 比 React 更难掌控。

技术社区:React VS Vue

React 是一个已经存在近十年的 Facebook 开源项目,因此它拥有更加成熟的技术社区支持。尽管 Vue 已经成功地在短短几年间吸引了相当多的追随者,但在它真正建立出一整套完善且丰富的生态系统之前,仍需要更多人和时间的打磨。

当你看到许多使用 Vue 完成的项目时,你会注意到,其整体的设计理念更趋向现代化,这是因为 Vue 仍是一个相对较新的框架,比如,这个示例。 众多周知,React 所包含的工具、组件库和代码包的数量更多,但 Vue 灵巧、精致和简单却更加令人印象深刻

安全性:React VS Vue

前端几乎无安全可言!当然,这里所指的安全性,仅仅是 React 和 Vue 这两个框架之间的对比,相对于 React,Vue 更为小众且不同,因此在面对大规模黑客攻击的时候,React 更容易成为目标。

Vue 和 React 同样都容易受到跨站点脚本( XSS )攻击,这也是 Web 应用程序中最为常见的安全漏洞。XSS 攻击允许攻击者将客户端脚本注入到其他用户查看的网页中,以影响其关联的任何 JavaScript Web 应用程序。 PS:缓解此问题的最佳方法是将数据保存在脚本之外,加入黑名单机制并从白名单中进行数据验证。

灵活性:React VS Vue

这也是争议最大的地方。React 专注于 UI,所以在构建 UI 组件时可以从它那里获得很好的支持。Vue 作为一个渐进式框架,只允许使用最基本的功能来构建应用程序,但同时也提供了一些开箱即用的东西:如,用于状态管理的 Vuex、用于应用程序 URL 管理的 Vue Router、Vue 服务器端渲染。

Vue 剥离了许多元素,相比之下 React 更加全面。但如果您正在寻找一种精简、新颖、简单易学、样板代码少、高性能、灵活且完整的前端框架,Vue 更加适合;当然,如果您打算使用低版本 jQuery 代码,Vue 也同样支持。

React 的灵活性则更多依赖于其背后强大的技术社区,在 Facebook 的强力支撑下( Facebook 的 React 团队包括了 10 名专职开发人员),提供了更多工具、UI 库和教程。

如果您的开发理念更趋向全栈文化、跨平台、保持独特、引领潮流而不是跟随,那么您一定会喜欢 Vue ;但如果您的项目需要大量熟练使用该框架的前端开发者、大量的工具及第三方库,那么您最好使用 React。不过小孩子才做选择,您最需要的应该是一个全面兼容 Angular、React 和 Vue 的前端开发工具包—— WijmoJS

Vue 的未来

截至 2019 年初,Angular、React 和 Vue 之间的竞争持续升温,越来越多的开发人员开始抛弃 Google 项目,就商业开发工具的提供者而言,Vue 的未来一片光明。

为开发速度更快的 Web 应用程序而选择了 Vue 的人有明显的增长,Vue 很有趣,开发起来也很简单。虽然,React 依托于其庞大的生态圈,在目前为止,处理更复杂的 Web 项目时占据优势,但随着前端社区内大量 Vue 追随者的出现、Vue 社区稳定增长的良好氛围,都在暗示着 Vue 很快就会变得像 React 一样受欢迎。

Angular、React,还是 Vue ?

作者尽量保持着公正的态度,客观地分析了上述三个前端框架,而作为前端开发者,面对 Angular、React 和 Vue,你会作何选择?为什么?如果您有任何问题或意见,欢迎在文末回复讨论。

16080 次点击
所在节点    推广
76 条回复
vevlins
2019-04-19 00:54:06 +08:00
毫无疑问 react.
更清晰简洁的单向数据流,更强大的社区,更灵活的 jsx(vue 的 jsx 约等于💩)

当然 vue 的语法糖多不少,省的自己去实现了,mvvm 看起来也比单向数据流写的代码更少,小项目可以,大项目算了吧,不够灵活.
kid1412621
2019-04-19 01:21:51 +08:00
@wc951 什么逻辑?
ymj123
2019-04-19 02:10:26 +08:00
@wc951 同意,angular 读起来很 Java,可能是因为我兰姆达表达式比较多?
AltairT
2019-04-19 02:21:33 +08:00
看了你几个历史帖子,感觉你应该发到推广节点。
impl
2019-04-19 02:36:19 +08:00
react 最近新出的 hooks 挺好用
hantsy
2019-04-19 08:07:30 +08:00
对于熟悉 Backend 开发,特别 Java/Spring 那一套的,Angular 是首选,从 Java 到 Typescript,从 Spring DI 到 Angular Dependency Injection, 从 Reactor 到 RxJS,几乎没有任何障碍,学习曲线最小。

另外必须提一下的是 Angular CLI,和最新的 Angular schematics 体系(很多第三方包已经支持),使用 ng add 可以完成以前很多的复杂配置过程。这是其它两种完成不具备的。

还有 Angular 是全栈的工具集,不像 React 只解决 UI Component 问题。

React 我觉得比较独特的(个人感觉也是比诡异的)是它的 jsx 模板和 props 设计, props 能够传递 function。 另外我有点不舒服的是嵌套几层的 high order functions。

我优先选择 Angular 而不是 React 的另外一个原因,React 对 ES6, Typescript 支持响应太慢,自己的 Flow 类型检测坚持那么多年还是最后放弃了。我第一次看到 React 的时候,在项目已经在使用 ES6/babel/gulp 来写 AngularJS,要回到用 ES5 写代码,实在太难受。由于当时 Angular2+的开发周期很长,顺便看其它方案,React 最终我还是选择观望。

当然现在 React 体系还是不错的, 对开发人员来讲多了一种选择。
SuperMonster009
2019-04-19 08:10:27 +08:00
当然是 Vanilla JS,哈哈
twy
2019-04-19 08:52:43 +08:00
jquery 一把梭
ourleven
2019-04-19 08:58:02 +08:00
Vue,不解释
qsbaq
2019-04-19 09:04:54 +08:00
jquery 一把梭
askfilm
2019-04-19 09:06:30 +08:00
jquery +1
roshad
2019-04-19 09:06:39 +08:00
jq 和 vue angular react 不是一类东西把?
kinghly
2019-04-19 09:07:05 +08:00
无所谓,都是工具
tedzhou1221
2019-04-19 09:12:00 +08:00
Vue,Java 招聘是加份项
elone
2019-04-19 09:13:43 +08:00
坚定不移 Angular, 少了很多选择第三方库的头疼问题。
0xABCD
2019-04-19 09:16:42 +08:00
其实这是一个广告贴
Chenamy2017
2019-04-19 09:16:49 +08:00
我在用 vue,但真的不知道那个好
oma1989
2019-04-19 09:22:52 +08:00
angular
hjdtl
2019-04-19 09:27:30 +08:00
醉翁之意不在酒吧,建议发到推广节点
gouflv
2019-04-19 09:28:08 +08:00
我的需求: typescript、jsx、快速上手,ng 首先下场。
然后,react 和 vue 的对比:
ts 的支持: react +1
jsx 的写法: react +1
组件的声明方式: 大家都支持 class style,平手
数据响应式: vue 自带,react 需要依赖 mobx,平手
flux 的状态管理: redux 和 vuex 我都不用,忽略
脚手架和工具生态:
cra 可以说是惨败,不灵活,比如想自定义配置,需要装第三方配置工具或者 reject ;
生态更新慢,经常因为版本升级导致会和第三方库的 ts 类型冲突;
路由,rr 只能用旧版,reach router 更新慢
所以,vue +3

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/556428

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX