建议客户端路由与服务器端路由一起提供角度通用

时间:2016-10-26 15:21:39

标签: angular angular2-routing isomorphic-javascript angular-universal

我刚刚开始使用Angular Universal并且对'isomorphic'javascript完全陌生。

我对如何使用逻辑路由系统感到有点困惑,你是否打算将角度通用构建为典型的节点rest api?或者它是否只是意味着立即提供客户端代码,并从外部源/ rest api检索数据?

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

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

然后逻辑上包括一个节点/ express / mongo api与此一起获取/发布数据?即;

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

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

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

感谢您的任何建议!

1 个答案:

答案 0 :(得分:6)

  

我对如何建立一个逻辑路由系统感到有点困惑,你是否打算将角度通用构建为一个典型的节点rest api?

是。 angular-universal采用了这种哲学。您在服务器端构建路由,因为所有内容都是在服务器端构建的。

  

然后逻辑上包括一个节点/ express / mongo api与此一起获取/发布数据?

是的,您的数据服务。 例如Hello World example with github services makes API requestsapp.use,因为这实际上是您的Node REST服务器。

  

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

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

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

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应用程序上提供数据与将所有内容托管在一起之间是否存在明显的性能差异?

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