Javascript AngularJS是否仅用于单页应用程序(SPA)?

Javascript AngularJS是否仅用于单页应用程序(SPA)?,javascript,node.js,angularjs,Javascript,Node.js,Angularjs,我们正在寻找构建我们正在创建的应用程序前端的选项,并试图评估一个对我们有用的工具,为我们提供前进的最佳平台 这是一个项目。我们最初的计划是使用Express并沿着这条路线走,但我们决定在开始这一阶段之前,最好先回顾一下外面的情况。我们的应用程序有几个我们认为不适合单页模型的区域,因为它们是从应用程序的角度关联的,而不是从一个视图关联的 我们已经看到了一些我们可以用来构建客户端的框架,比如,等等,还有AngularJS 这可能是一个相当明显的问题,但我们似乎无法解释AngularJS是纯粹用于单页

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

这是一个项目。我们最初的计划是使用Express并沿着这条路线走,但我们决定在开始这一阶段之前,最好先回顾一下外面的情况。我们的应用程序有几个我们认为不适合单页模型的区域,因为它们是从应用程序的角度关联的,而不是从一个视图关联的

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

这可能是一个相当明显的问题,但我们似乎无法解释AngularJS是纯粹用于单页应用程序还是可以用于多页应用程序,例如Express


2013年7月17日更新 为了让大家了解情况,我将在整个过程中更新这个问题。现在,我们将一起构建一切,我们将看到它的性能如何。我们已经联系了一些比我们更适合AngularJS的人,并提出了关于拆分共享上下文但在单个页面上工作可能太大的大型应用程序的问题

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


2016年6月18日更新该项目跌入悬崖,因此我们从未抽出时间做过太多工作。最近,我们再次使用它,但不再使用angular,而是使用React。我们仍在使用上一次更新中概述的体系结构,其中我们使用express和self-contain应用程序,因此,例如,我们在express中有一个为React chat应用程序提供服务的
/chat
路由,我们有另一个为projects应用程序提供服务的路由
/projects
,等等。我们看它的方式是,每个应用程序在其功能集方面都是一个聚合根,它需要能够独立,才能将其本身视为一个应用程序。从技术上讲,所有的信息都在那里,它只是基本的express,以及您想要使用的任何客户端应用程序构建功能。

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

除了客户端路由之外,您还拥有大量功能:

  • 双向绑定
  • 模板
  • 货币格式
  • 多元化
  • 可重用控件
  • RESTful api处理
  • AJAX处理
  • 模块化
  • 依赖注入
认为所有这些“只能在一个页面应用程序中使用”是疯狂的。当然不是。。这就像说“Jquery只适用于带有动画的项目”


如果它适合你的项目,就使用它。

我一开始也在为Angular的“如何”而挣扎。后来有一天我突然意识到:“它仍然是javascript”。关于Angular(这本书中我最喜欢的一本)的详细信息,有很多例子。要记住的最重要的事情是加载js文件,就像在任何其他项目中一样。您所要做的就是确保不同的页面引用了正确的角度对象(控制器、视图等),并且您已关闭并运行。我希望这是有道理的,但答案太简单了,我忽略了它。

也许我的经验会对某些人有用。我们按逻辑划分了项目。一个SPA我们用于feed,另一个用于处理地图,另一个用于编辑用户配置文件等。例如,我们有三个应用程序:feed、user和map。我在单独的URL中使用它,如下所示:

https://host/feed/#/top/
https://host/user/#/edit/1/
https://host/map/favorites/#/add/
每个应用程序在应用程序中的状态之间都有自己的本地路由映射。 我认为这是一个很好的实践,因为每个应用程序只使用它真正需要的自己的上下文和负载依赖关系。此外,它对于调试和集成过程也是非常好的实践

事实上,您可以很容易地混合使用SPA应用程序,例如,提要将是带有angularjs应用程序的url,带有reactjs的用户应用程序,并映射到backbone.js应用程序

关于你的问题:

Angular不仅适用于SPA,Angular也适用于SPA应用,而且没有人愿意为各种SPA应用构建MPA应用。但是考虑到你的url架构,不要忘记你的应用程序的SEO可用性

我也支持这个想法:

项目和应用程序之间有什么区别?应用程序就是一个网络 执行某些操作的应用程序—例如,网络日志系统、数据库 公共记录或简单的民意测验应用程序。项目是一组 特定网站的配置和应用程序。项目可以包含 多个应用程序。一个应用程序可以位于多个项目中


如果您只需要几个带有客户端数据绑定的页面,我会选择Knockout和Javascript名称空间

Knockout非常好,尤其是当您需要简单的向后兼容性并且具有相当直接的页面时。如果您使用的是第三方组件,那么Knockout的自定义绑定非常简单,易于使用

Javascript名称空间允许您保持代码的独立性和可管理性

var myCo = myCo || {};
myCo.page = {
    init: function(){ ... },
    ...
}
并在加载其他脚本后在脚本标记中

<script>
    myCo.init();
</script>

myCo.init();
关键是,当你需要的时候,你可以使用任何你想要的工具。需要数据绑定吗?击倒(或任何你喜欢的)。需要路由吗?sammy.js(或者你喜欢的任何东西)

客户机代码可以是简单的,也可以是共同的