javascript - SPA : Separating backend administration from client side

标签 javascript single-page-application durandal durandal-2.0

我正在开发一个使用 DurandalJS 构建的 SPA,它托管在 app.example.com 上。 API 托管在 api.example.com 上。我们现在计划为自己添加后端管理,以忽略我们的客户。我们每个人都有一个帐户,我们将能够管理我们的客户资料。

我们要弄清楚的是在哪里托管后端。

  1. 如果我们将其保留在 app 子域中,我们只需向现有应用程序添加一个新 Angular 色 (admin),但这将允许普通用户登录 ti如果我们的凭证以某种方式泄露了后端。

  2. 如果我们将现有的应用程序克隆到 admin.example.com,我们将始终需要担心代码是否同步,但这样会更安全,因为 admin 子域将不对公众开放,管理员登录将需要一组不同的 API 和私钥。

我们应该如何处理?如果我们选择 #2,是否有更好的方法在两个应用程序之间共享代码而不会带来额外的麻烦?

最佳答案

我个人喜欢第二种方法来处理不同的子域。 复制代码库并不是真正必要的,因为您可以利用 RequireJS 提供的很酷的功能将别名映射到您的模块。这里的重要性在于,通过将业务逻辑提取到模块中,您可以服务于不同的实现。

我创建了一个名为 durandal-multisite 的小型 GitHub Repo详细说明您将如何进行。

总体思路是:

  1. 保持相同的 View 模型/ View
  2. 提取业务逻辑(无论如何都应该遵循正确的 SoC)
  3. 创建 2 个 main.js 实现(前端/后端)
  4. 各自的 main.js 设置一个 RequireJS 映射到你的 View 模型请求的别名 然后交付具体的模块实现

关于javascript - SPA : Separating backend administration from client side,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24938918/

相关文章:

angularjs - 如何使用htaccess将所有请求重定向到react或angular中的索引?

javascript - Knockout.js:更改Observable的值不会更改html中属性的值

javascript - durandal 中的 igCombo 绑定(bind) selectedItems

javascript - getJSON 未获取数据

javascript - 对象仅在 IE8 上不支持此属性或方法

javascript - 如何使用indexOf在数组中查找函数

java - 单页应用。模板管理的安全性

javascript - 求和函数柯里化(Currying)

reactjs - 前端 SPA 应用程序的日志记录和监控

mvvm - 如何将FusionChart集成到使用Durandal和Knockout开发的SPA应用程序中?