我为什么要使用Angular?[关闭]


20

从基本的Angular教程来看,似乎所做的只是从API中获取一些JSON并显示它。此外,还有双重绑定魔术。

但是,为什么我要使用它来代替后端解决方案(例如Rails),后者在后端中构建视图并将其提供给用户,而一切都已经就绪?有哪些用例?

Answers:


26

TLDR;

Angular帮助您处理丰富的用户界面固有的复杂性。随着UI复杂度的增加,在服务器上生成页面的传统模型变得越来越复杂。Angular使您可以将UI分解为可管理的块,并使您可以将UI与实现分开。这使得服务器端页面的生成变得非常容易,但是当您转向纯基于JavaScript的应用程序时,Angular确实可以发挥作用。Trello是此类应用程序的一个很好的例子。

长话

Angular并不是真正针对可以通过在服务器上生成所有内容并将其发送出去而轻松实现的站点。此外,尽管这是一种非常好的方法,适用于Internet上的许多站点和应用程序,但是当您尝试增加站点中的交互性级别时,使其保持工作状态变得越来越复杂(因此很困难)。

最终,解决此问题的方法是将UI越来越多地推入等式的Javascript端。Angular使您可以将UI分解为各个组件,从而使外观和工作方式之间清晰可见。然后,您可以在服务器上构建相当简单的页面,并且JS前端用于创建丰富的UI,该UI可以分别调用服务器返回所需的数据。

不过,有一点要说明,您要做的就是为一个存根页面提供服务器,该存根页面可加载完全基于javascript的应用程序。最好的Angular真正用例的例子是Trello(它使用Backbone,而不是Angular,但它是相同的用例)。有一个站点http://builtwith.angularjs.org/,其中有更多使用Angular的示例站点。

那么简短的答案呢?Angular使您可以将UI分解为组件,并最终完全使用javascript,从而可以轻松创建丰富,高度交互的用户界面。


3
AngularJ并没有提供外观,逻辑和逻辑的清晰分离。
rsman 2013年

13
@rsman,显然可以。数据绑定的全部要点是,您无需编写一堆DOM操作代码,而是为您做一些角操作,因此,请您定义外观,定义交互等的工作方式,但是要避免必须将这两个代码与可处理交互的代码中的外观更新的代码结合在一起。
guysherman

3
在示例中使用的Trello不使用Angular blog.fogcreek.com/the-trello-tech-stack
JAMESSTONEco 2014年

1
实际上,@ jamesstoneco确实没有,我只是使用Trello作为纯客户端JS应用程序的示例。这是最早做到这一点的方法之一。
guysherman

7

它是关于使响应界面更加响应。双重绑定,依赖项注入等使创建动态页面变得非常容易。您可以在Angular中编写指令,从而为您提供一种声明性的方式构造视图。

例如,在当前项目中,我们有一个视图,该视图使用数百行JavaScript代码以提供响应式用户体验。即使这样,该页面还是有一些bug,并且很难维护。我们开始四处寻找更好的选择,并研究了ribs.js和kickout.js。最终,我们尝试了Angular。我们仅用几行代码就可以创建一个响应更快,更易于维护的页面。所有的DOM操作代码已一去不复返了。所有笨拙的后端视图创作都已经消失了,必须将其提取并插入正确的位置。使模型和视图保持同步的所有代码都消失了。有了这一经验,决定迁移到Angular变得容易了,到目前为止,我们并不后悔。


“所有的DOM操作代码都消失了。” 我认为这是最重要的事情。
弯曲

5

Angular用于开发单页应用程序,它有助于为您的应用程序提供坚实的框架。表单也很不错,而复杂且拥挤的UI却有大量数据,效果不佳。首先,双向数据绑定是“神奇的”,但您必须知道,最新的框架(包括Angular 2本身)已从双向数据绑定转移到更简单的数据流/事件流方法(告诉我们故事太长了)。

我还必须警告您,Angular没有确定的做事方式,有时会提供过多的方法来给猫咪剥皮,这会使学习曲线更加陡峭。另外,如果要缩放Angular应用程序,还必须了解其内部机制以及对性能的可能影响。一旦执行了此操作,并且一旦建立了一致的实体设计模式,天空就是极限。但是您需要花费时间。

也就是说,您的问题似乎更多是关于SPA的用例,而不是Angular本身。

单页应用程序的用例用于使Web应用程序具有强大的UI / UX和整体上更好的应用程序感觉。不必重新加载页面,可以节省渲染时间和带宽。您还将数据和演示文稿分开,真棒。您的申请成为:

  • 静态文件,包括index.html
  • REST API服务数据
  • 数据驱动的前端应用程序
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.