4

我刚开始使用 Angular Universal 并且对“同构”javascript 是全新的。

我对如何拥有一个逻辑路由系统有点困惑,你是不是打算将 Angular Universal 构建为典型的节点休息 api?或者它只是为了立即提供客户端代码,并从外部源/rest api 检索数据?

以角度通用入门套件为例,它从这些路线开始;

app.get('/', ngApp);
app.get('/about', ngApp);
app.get('/about/*', ngApp);
app.get('/home', ngApp);
app.get('/home/*', ngApp);

那么在此旁边包含一个 node/express/mongo api 来获取/发布数据是否合乎逻辑?IE;

const bearRoutes = require('./routes/bear')
app.use('/', bearRoutes)

如果是,您会使用散列策略来区分 URL 吗?

与将所有内容托管在一起相比,使用来自外部 api 的通用服务在 angular2 应用程序上提供数据之间是否存在明显的性能差异?

感谢您的任何建议!

4

1 回答 1

6

我对如何拥有一个逻辑路由系统有点困惑,你是不是打算将 Angular Universal 构建为典型的节点休息 api?

是的。angular-universal采用这种哲学。您在服务器端构建路由,因为一切都是在服务器端构建的。

那么在此旁边包含一个 node/express/mongo api 来获取/发布数据是否合乎逻辑?

是的,适用于您的数据服务。例如,带有 github 服务的 Hello World 示例发出 API 请求 No for,app.use因为这本质上是您的 Node REST 服务器。

如果是,您会使用散列策略来区分 URL 吗?

首先是#URL 中的任何内容都不会被服务器端看到。但是您描述的问题是关于命名 URL 以及是否区分提供角度编译/呈现的 HTML 内容与数据/API 服务的 URL。

答案是肯定的。这是为了您自己管理服务器路由的好处。例如,如果您的路线是

app.get('/', ngApp);
app.get('/about', ngApp);
app.get('/about/*', ngApp);
app.get('/home', ngApp);
app.get('/home/*', ngApp);

你可以添加

app.get('/api/profile', serverAPIAppOrprofileJSON); 

与将所有内容托管在一起相比,使用来自外部 api 的通用服务在 angular2 应用程序上提供数据之间是否存在明显的性能差异?

考虑一个场景,您的页面的一小部分由于某些用户交互而发生变化,并且需要您带来一些数据。您可能只想更新此部分而不是呈现整个页面。所以在这种情况下性能会更好。

于 2016-10-26T15:56:48.397 回答