AngularJS仅适用于单页面应用程序(SPA)吗?

Mod*_*ika 200 javascript node.js angularjs

我们正在寻找构建我们正在创建的应用程序前端的选项,并且正在尝试评估一个对我们有用的工具,并为我们提供最佳的平台.

这是一个Node.js项目.我们最初的计划是使用Express并沿着这条路走下去,但我们决定在开始这个阶段之前,最好回顾一下那里的情况.我们的应用程序有几个我们认为不适合单页模型的领域,因为它们从应用程序的角度来看是相关的,而不是从视图中看.

我们已经看到了一些可以用来构建客户端的框架,比如Backbone.js,Meteor等,还有AngularJS.

这可能是一个相当明显的问题,但是如果AngularJS纯粹用于单页面应用程序,或者它可以用于Express等多页面应用程序,我们似乎无法破译.


更新2013年7月17日 为了让人们保持在循环中,我将在整个过程中更新这个问题.我们现在要一起构建所有内容,我们将看到它的表现如何.我们已经联系了一些比我们更有资格使用AngularJS的人,并且提出了关于拆分共享上下文的更大应用程序的问题,但是在单个页面上工作可能太大.

我们的共识是,我们可以提供多个静态页面并创建仅与这些页面一起使用的AngularJS应用程序,有效地创建SPA集合并使用标准链接将这些应用程序链接在一起.现在我们的用例非常具体,因为我们的解决方案有几个应用程序,正如我所说,我们将首先尝试单个代码库并从那里进行优化.

更新2016年6月18日该项目陷入悬崖,所以我们从来没有完成过多的工作.我们最近再次提起它,但不再使用角度而是使用React.我们仍在使用上一次更新中概述的体系结构,我们使用快速和自包含应用程序,因此,例如,我们/chat在快递中有一条路线用于提供我们的React聊天应用程序,我们有另一条路线/projects来提供项目应用程序和等等.我们有点看待它的方式是每个应用程序在其功能集方面是一个聚合根,它需要能够独立,因为它本身被视为一个应用程序.从技术上讲,所有的信息都在那里,它只是基本的表达,以及你想要使用的客户端应用程序构建良好的任何风格.

Ben*_*esh 215

一点也不.您可以使用Angular构建各种应用程序.客户端路由只是其中的一小部分.

您有一大堆功能,可以在客户端路由之外使您受益:

  • 双向绑定
  • 模板
  • 货币格式
  • 多元化
  • 可重复使用的控件
  • RESTful api处理
  • AJAX处理
  • 模块化
  • 依赖注入

认为所有这些"只能用于单页面应用程序"真是太疯狂了.当然不是......就像说"Jquery仅适用于带动画的项目".

如果它适合您的项目,请使用它.

  • 另一点需要提及的是,Angular甚至不需要用于整页 - 它可以集成到现有系统中以构建组件,即遗留应用程序中的复杂小部件或插件. (42认同)
  • @Blesh,谢谢你的回答,这很有意义,但我们正在努力寻找的是"我们如何使用它构建多页面应用程序,这就是问题发布的原因,这确实是一个不同的问题,所以你的回答是但是,例如我们可以将angular.js与express.js一起使用,或者类似于浪费时间和过度复杂. (2认同)

小智 16

我最初也和Angular一起讨论"如何".然后有一天,我突然意识到:"它仍然是javascript".关于Angular(我最喜欢的一个以及https://github.com/angular-app/angular-app)这本书的内容有很多例子.要记住的最重要的事情是加载js文件就像在任何其他项目中一样.您所要做的就是确保不同的页面引用正确的Angular对象(控制器,视图等)并且您已经关闭并运行.我希望这是有道理的,但答案很简单,我忽略了它.


the*_*dor 6

也许我的经历会对某人有用.我们逻辑地拆分我们的项目.我们使用一个SPA用于Feed,另一个用于处理地图,另一个用于编辑用户个人资料等.例如,我们有三个应用:Feed,用户和地图.我在分隔的网址中使用它,如下所示:

https://host/feed/#/top/
https://host/user/#/edit/1/
https://host/map/favorites/#/add/
Run Code Online (Sandbox Code Playgroud)

这些应用程序中的每一个都在应用程序中的状态之间具有自己的本地路由映射.我认为这是一个很好的做法,因为每个应用程序只能使用它自己的上下文和它真正需要的加载依赖项.此外,它的实践非常适合调试和集成过程.

实际上,您可以非常轻松地混合使用SPA应用程序,例如,feed将是带有angularjs应用程序的url,带有reactjs的用户应用程序,并映射到backbone.js应用程序.

回答你的问题:

Angular不仅仅适用于SPA,Angular对SPA应用程序起到了良好和快速的作用,但没有人愿意为各种SPA应用程序构建MPA应用程序.但是考虑一下你的url架构,不要忘记你的应用程序的SEO可用性.

我也支持这个想法:

项目和应用程序之间有什么区别?应用程序是执行某些操作的Web应用程序 - 例如,Weblog系统,公共记录数据库或简单的轮询应用程序.项目是特定网站的配置和应用程序的集合.项目可以包含多个应用程序.一个应用程序可以在多个项目中.