我正在开发一个使用 DurandalJS 构建的 SPA,它托管在 app.example.com
上。 API 托管在 api.example.com
上。我们现在计划为自己添加后端管理,以忽略我们的客户。我们每个人都有一个帐户,我们将能够管理我们的客户资料。
我们要弄清楚的是在哪里托管后端。
如果我们将其保留在
app
子域中,我们只需向现有应用程序添加一个新 Angular 色 (admin),但这将允许普通用户登录 ti如果我们的凭证以某种方式泄露了后端。如果我们将现有的应用程序克隆到
admin.example.com
,我们将始终需要担心代码是否同步,但这样会更安全,因为admin
子域将不对公众开放,管理员登录将需要一组不同的 API 和私钥。
我们应该如何处理?如果我们选择 #2,是否有更好的方法在两个应用程序之间共享代码而不会带来额外的麻烦?
最佳答案
我个人喜欢第二种方法来处理不同的子域。 复制代码库并不是真正必要的,因为您可以利用 RequireJS 提供的很酷的功能将别名映射到您的模块。这里的重要性在于,通过将业务逻辑提取到模块中,您可以服务于不同的实现。
我创建了一个名为 durandal-multisite 的小型 GitHub Repo详细说明您将如何进行。
总体思路是:
- 保持相同的 View 模型/ View
- 提取业务逻辑(无论如何都应该遵循正确的 SoC)
- 创建 2 个 main.js 实现(前端/后端)
- 各自的 main.js 设置一个 RequireJS 映射到你的 View 模型请求的别名 然后交付具体的模块实现
关于javascript - SPA : Separating backend administration from client side,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24938918/