Google AngularJS框架 – 值得冒险吗?

我被要求为我们的一个客户构build一个小型Web应用程序,并认为这可能是一个尝试构buildWeb应用程序的不同框架的好机会。 我们构build的大多数应用程序都基于asp.net web表单,而且我们还没有在MVC体系结构中做过任何事情,但是我渴望用合适的工具以更加结构化的方式开发Web应用程序。

我一直在研究像asp.net MVC和喜欢看起来相当不错的东西,但我想知道是否有什么要说的使用像谷歌AngularJS框架的东西。

如果可能的话,我仍然希望能够用c#编写我的服务器端代码,而且我还没有研究过AngularJS足以知道这是否可能,尽pipe我假设我可以使用Web服务。

有没有人有使用AngularJS开发一个应用程序的经验,如果是这样的话,怎么样,你可以指点我正确的方向一些教程?

在过去的几个月中,我们一直在AngularJS上开发一个Swing胖客户端应用程序的端口,我认为这是值得推荐的。 至于学习资源去,看看官方的项目网站(并确保阅读教程)和邮件列表(作者是非常有帮助的)。

好东西:

  • 很好的可testing性
  • 双向数据绑定是一个非常强大的function,一旦你“得到它”
  • IMO的AngularJS模板比使用数据属性或“特殊的”CSS类来标记做某事的元素要脆弱得多
  • 它大大减less了使用jquery插件的需求,因为在AngularJS中实现这个function非常简单(像树,选项卡,手风琴等东西)

坏的东西:

  • 学习曲线似乎非常陡峭(我没有太多的问题,但我看到一些人与它斗争)
  • 在AngularJSvalidation暂时吸引(一个新的实现方式)
  • 并不是所有的库/ jquery插件都能很好的和Angular一起玩,通常你必须包装它们
  • API仍然在被抛光,所以期待突然的变化(不是频繁的发布和非常好的更新日志的大问题)
  • 性能是确定的,直到页面上的数千个绑定 – 大多数情况下,这不是一个限制,但有些情况下,这可能是一个问题。

一些指针(如果你决定学习AngularJS):

  • 有些人真的过度使用小部件。 根据我的经验,使用HTML“partials”+服务要好得多,而且只能偶尔使用小部件。
  • 阅读库的源代码 – 这是学习angular度的最好的地方
  • 在服务/控制器中没有DOM操作
  • 如果你使用CSS类来绑定事件,你做错了

+1 @ psycho的回答

AngularJS是客户端框架,所以你可以在服务器上使用任何语言。 它的devise与jQuery一起工作良好,重点在于testing…

以下是您可能会觉得有用的一些资源:

  • 教程: http ://docs.angularjs.org/#!/ tutorial
  • API DOCS: http ://docs.angularjs.org/#!/api
  • 开发者指南: http : //docs.angularjs.org/#!/ guide

一些示例应用:

适用于SenchaTouch的适配器: https : //github.com/tigbro/sencha-touch-angular-adapter

适用于jQ Mobile的适配器: https : //github.com/tigbro/jquery-mobile-angular-adapter

随意问任何问题在邮件列表上 !

我们仍然处于testing阶段,但是在AngularJS的支持下,Google已经有了几个内部应用程序。


更新(2012年7月26日):

AngularJS v1.0已经发布。

对于一些公共AngularJS驱动的应用程序,请查看http://builtwith.angularjs.org

恕我直言,他们可能有困难支持客户开发的东西是不专业的。 你必须记住,你的客户将很难聘请有经验的Angular专业人员,或培训他们自己的人去攀登这个“陡峭的学习曲线”。 而且,到目前为止,文档并不是那么好。 您能否轻松地在一瞬间回答这个问题:“我怎样才能将我的shiny的Angular应用程序连接到我的客户的数据库? 你的客户可以在未来的某个时候轻松地抓住一些现有的代码,并适应未来的潜在需求? 说实话。

比较老的可靠LAMP发展和Angular。 对于一个“小型networking应用程序”,我真的相信一个专业人士应该给他的客户一些可维护和简单的东西。

这并不是说,Angular不酷,性感等等,但你有客户的未来可维护性除了最新的框架时尚思考。 轻轻一点会是我的build议。 先用Angularbuild立你自己的网站,然后在你给予一些信任的客户端的神话般的新技能之前,看看你的想法。

我记得几个月前,我在脑海里读到了这个SO线程,我们决定继续使用AngularJS,并且决定在这个项目上做出最好的决定。

我们正在使用AngularJS + ASP.NET MVC4 REST WebAPI。

在这样一个很好的客户端Javascript MVC框架之后,大多数人会粗略地说,你只需要在服务器端与业务逻辑层进行交互的REST API层,而在服务器端没有MVC(ASP.NET MVC / Spring / Structs会感觉像是旧的记忆)。

你会发现Angular-UI的好东西(esp ng-grid)

在我们的项目结束后不久,我们可能会把我们为开源世界写的一些指令。

我一直在研究AngularJS的好处好几个月,作为我创build的产品的核心框架。 AJS有许多方面值得学习。 是的,有一点点的学习曲线,但它非常值得,尤其是如果你希望有更多的客户端function的控制。

JQuery在运行时操作DOM,而AJS则位于JS渲染生命周期中。 这使您可以通过创buildHTML元素和属性来教导DOM新技巧。 这是非常非常强大的 正如你能够做的是引入新的元素行为,无论你的目的和需要。 在AJS中,这些自定义HTML属性/元素称为指令。 借助制定自己的指令的能力,您可以构build当前HTML所不具备的function,并推出可在现在和将来在所有现代浏览器上运行的function。 在诱发新行为的许多方法中,AJS似乎是最安全的方向,因为他们select实施它。

在AJS中,JQuery有很大的性能提升。

我喜欢双向数据绑定的简单性,以及客户端MVC模式中关注点的分离,正如上面所指出的,它提供了很好的可testing性。 范围对象是视图(HTML),模型(您的数据)和您的自定义控制器之间的粘合剂。 范围提供对父属性的访问,并且可以在兄弟级别被隔离,这对于一些可重用的模板是重要的。

可以在您的应用程序中创build和重用模板,其中可以包含0个或更多自定义指令。

我一直在使用诸如PRISM和MEF之类的框架,但是我发现AJS具有与这些.NET框架中存在的大部分相同的function,但占用了29K的空间。 有传言说,他们正在懒惰加载,如果提供将提供一些非常有趣的LOBtypes的能力。

有一些正在为AJS构build的UI框架,但是可以根据需要包装任何第三方控件库,给予一点努力。 诀窍是确保当这些第三方控件引起变化时,确保使用其应用方法正确通知AJS。

如果在VS 2012中将AJS与MS TypeScript结合起来,就可以pipe理和构build一些非常令人印象深刻的项目,这些项目对于那些对VS中的项目更加适应的项目来说是非常有效的。

有很多其他的理由来看待AJS,但是如果你正在考虑像KnockOut这样的框架,我会强烈推荐AJS,而不pipe它是否被感知到的学习曲线。 Knockout是一个库,AJS是一个框架。

到目前为止,我认为Google的Angular很棒。 特别是像数据绑定和dependency injection。

对于其他js框架,还有knockout.js,backbone.js等,这里有一些post: backbone.js和/或knockout.js中的angular.js示例

我意识到这个post已经老了,你还没有和Angular一起走过,但是我有一个类似于你的背景,在提问的时候我和你一样。

所以为了未来的访问者的利益,一些“风险”和资源的链接,我觉得有用…

  • 正如很多人已经提到的,Angular可以有一个非常陡峭的学习曲线“不仅我,而且我认为高度聪明的开发人员的同事,已经与一些基本概念挣扎” AngularJS是惊人的…和地狱 (链接也有一些很好的教程链接,你要求的),版本2的东西看起来更像Java ,这不会是你的C#背景的问题,在我看来,指令很难理解,没有详细的注释和等等。
  • 在某些情况下,angular度performance可能很差,特别是在大量元素上使用ng-repeat时, 考虑到AngularJS和Scaylr的经验中的 速度和慢度 。 其他人已经提到,性能确实会降低到2000左右的限制要素,但是通常会遇到关于如何使用超过许多元素的应用程序可能不是一个好应用程序的争论。 记住,如果你有合法的用例需要许多绑定的对象。
  • Angular 在贡献者方面很受欢迎,但是在生产使用方面排名靠后,比如jQuery。 寻找Angular开发人员可能会很困难,而jQuery或其他开发人员的转换有“陡峭的学习曲线”来处理。
  • 因为Angular是年轻的,所以你不能保证它会获得足够的吸引力,使你的新的Angular技能可以被使用,并且你的新应用程序不会很快成为遗留代码
  • 在v1.2中,Angular不支持IE7及以下版本, v1.3将会放弃IE8 。 对于> = IE9,您需要遵循一些特殊的编码习惯 。
  • 您可能习惯使用的许多JavaScript小部件,插件和库不能在没有大量修改的情况下与Angular一起使用,人们通常build议在Angular中重新编写您的组件 。
  • 更新2014年3月:2个月后,试图build立一个非平凡的密集function的单页应用程序:有许多版本的angular,很难说哪个是最好的或最稳定的。 这将取决于你用什么编码。 我发现一些错误Angular是通过升级到更高版本来修复的,其他的通过回退到更早版本来修复。 我从来没有这样用jQuery去购物的版本。
  • 更新2014年5月:年轻,破碎的工具。 巴塔朗是伟大的,直到它不工作 。 我不能相信,直到他们解决这个问题。

最后,我find了三个最好的资源来学习这些东西

  • 托德格言的终极指南 ,和
  • 更新2014年4月: 这个电子书章节是相当惊人的。 我还没有买书的其余部分,但这个概念太棒了
  • 一个完整的非平凡的应用程序写在Angular ( 随书是好的,但没有真正谈论的非平凡的应用程序,因为他们似乎在他们的网站上宣传)

我会对此表示赞同,并检查出John Papa的hottowel实现方式。