AngularJS网站:单个SPA与多个SPA应用程序/组件

时间:2014-07-22 06:03:20

标签: angularjs single-page-application

这个问题一直困扰着我。

如果您正在使用Angular构建具有多种功能的网站,那么建立一个巨大的SPA或将网站分解为功能性的应用程序"会更好吗?并为每个应用程序构建SPA?

例如,我们有一个社交媒体网站,其中包含通知Feed,用户个人资料,报告和群组。您是将所有这些功能构建到单个SPA中,还是构建4个不同的SPA并让后端框架路由到正确的SPA?

e.g。

www.mywebsite.foo#/曲线/ 12345 /教育

VS

www.mywebsite.foo/profile/12345#/education

我个人更赞成后一种方法,因为它减少了应用的大小,但它确实需要在应用之间导航时重新加载页面。

2 个答案:

答案 0 :(得分:1)

Mark Collings在你的文章中谈到了一件事:

https://markwillcollins.silvrback.com/7-things-i-wish-i-knew-about-angularjs

" 3。结构至关重要......"

他建议在开始工作之前计划每一页。

然后,我相信,您将发现满足您特定需求的最佳方法。

我更喜欢孤立于小型服务,因为我没有看到使用require.js或类似方法在复杂的加载层次中共享小部分javascript的优势。

答案 1 :(得分:1)

所以,这是我所学到的以及我所做的:

我的服务器有默认路由:

  var express = require('express');
  var router = express.Router();

  ... 

  router.get('*', function(req, res) {
    res.sendfile(path.resolve(__dirname + '/../../../build/index.html')); // Send index.html for HTML5Mode
  });

  return router;

所以,我的网站上可以有多个SPA,因为我只是为它们发送了不同的html模板。 HTML5风格的应用程序需要选择上面的默认应用程序。

什么属于单一SPA?

用户体验中相互关联的所有状态。在应用程序之间共享状态(例如,身份验证)将是复杂的。当然,他们都可以访问服务器的完整状态。

什么时候有用?

如果您有明确显示不同用例的模型,例如两种不同登录用户。或两个不同的地方'他们登录。

要获得什么?

  • 如果你是"仪表板"应用程序会加载一堆图形代码,但是您的"着陆页"应用程序并不需要它,您可以为最终用户提供更好的体验。
  • 如果用户体验不同,则将不同的代码存储在不同的地方更容易管理。
  • 就我而言,还有一个SEO好处渲染"着陆页"服务器上的模板。

在尝试之前,您可能不知道自己真正需要什么。所以我建议收集依赖于登录到同一个应用程序的所有内容。默认应用应包含“匿名访问者”#39;经验。