「前端架构」选择正确的框架React,Angular或Vue

我们必须承认 , 我们在这些框架方面有着极不平等的经验 。 然而 , 我们将尽量保持公正 , 并弄清楚React何时可能不是最佳选择 , 但首先 , 简短介绍:

  • React是Facebook维护的最流行的框架 。 所有的酷孩子 , 以及经验丰富的工程师都喜欢它 。
  • 我们有Angular感谢谷歌 。 它是企业中最古老、最著名的 。
  • Evan You从他以前在Google的工作经验中提取出他喜欢AngularJS的部分 , 从而创建了轻量级Vue 。 这是亚洲最流行的框架 。
框架设计Vue和Angular共享类似的设计 , 尽管Angular是一个复杂的平台 , 而不仅仅是一个小库 。 另一方面 , React具有独特的设计 , 具有单向数据绑定和虚拟DOM 。
React设计原则React是基于可组合组件的思想构建的 。 它们是隔离的 , 在大多数情况下 , 只公开props 接口 。 它使团队协作更加容易 , 因为不同的人可以创建各种协同工作的组件 。 对组件进行更改也是一件轻而易举的事 , 而且这很少会导致整个代码库的更改链 。
【「前端架构」选择正确的框架React,Angular或Vue】在React中 , 组件不会直接呈现给Dom 。 render方法返回需要呈现的内容的描述 , React有一种快速而聪明的方法将其应用于DOM 。
这个框架是关于组件层次结构的单向数据流 。 子组件不知道它们的父组件 , 只接收来自它们的props。 将函数作为属性传递是修改父组件状态的常见做法 。 它使得所有的东西都是松散耦合的、模块化的、快速的 。
Angular 是为了企业Angular更像是一个使用HTML和TypeScript构建应用程序的平台 。 它由不同的TypeScript库组成 , 可以导入到项目中 , 比如路由或ajax调用 。
Angular应用程序总是有一个支持引导的根模块 , 通常有一堆特性模块 。 NgModules是将相关代码收集到功能组件中的基本构建块 。
组件为屏幕元素定义视图 , 并使用与视图不直接相关的特定功能的服务 。 它利用依赖注入使所有东西松散耦合和模块化 。
应用程序代码广泛地使用decorator为Angular提供额外的元数据 。
对于视图 , 它有自己的模板语言 , 带有指令和绑定标记 , 可以根据数据动态呈现HTML 。 还有一个事件绑定可以让你的应用程序响应用户输入 。 与react不同 , 数据流是双向的 。
Vue,两者兼而有之Vue试图用最简单的API提供可组合视图组件和反应式(reactive )数据绑定的好处 。 Vue有一篇文章从其他框架的角度将其与其他框架进行了比较 , 值得一读 , 尤其是如果您已经熟悉其他两种框架之一的话 。
Vue不是Angular那样的平台 , 而是像React一样的接口框架 。 与Angular一样 , 它支持双向数据绑定 , 但组件之间的单向父子数据流是默认设置 。 它还有一个独特的模板语言 , 并且不像React那样使用虚拟DOM 。
Vue中的组件与Web组件规范中的自定义元素非常相似 。 他们故意按照规范对语法进行建模 。 但是 , Vue组件在每个浏览器中都受支持 , 具有跨组件数据流、自定义事件通信和其他基本功能 。
框架的优势
「前端架构」选择正确的框架React,Angular或Vue文章插图
每个框架都有它最好的部分 。 React使开发变得轻而易举 , Angular主要专注于企业 , 而Vue则是最轻量级的 。
React优点如果你问我们React最喜欢什么 , 那应该是JSX(TypeScript是TSX) 。 它是JavaScript的语法扩展 , 可以为组件编写类似HTML的呈现代码:
function Hello({ name }) { return Hello {name}; }
如果没有JSX , 编写React代码会非常痛苦:
function Hello({ name }) { return React.createElement("div", null, `Hello ${name}`); }
上面的JSX在幕后被翻译成了非常相似的JavaScript 。 想象一下用它编写复杂的组件层次结构 。 你可以玩一下the online Babel compiler 来获得这个想法 。
React团队非常关注API的稳定性 。 对于像Facebook、Twitter和Airbnb这样在生产中使用React的大公司来说 , 这一点至关重要 。 这些api与最初的版本相比没有太大变化 。 当他们决定删除某些内容时 , 他们首先将其标记为已弃用 , 这将触发linter和debug生成警告 。
作为一个视图库 , react通过互操作性得到了了巨大的好处 。 您可以快速将其放入现有项目中 , 并仅将其用于组件的一个子集 。
对于性能 , 它使用“拉动”方法 。 与其他在新数据可用时执行计算的框架不同 , React可以安排生命周期方法来延迟应用更改 。
开发经验是React团队的首要任务 。 它们维护有用的React DevTools , 并尝试使框架抛出的警告真正有用 。
在React 16.8中引入React钩子使得几乎整个应用程序都可以使用短功能组件 。 函数式风格使代码更易于编写、阅读和理解 。