【问题标题】:How to render an html template from express, while on Angular5如何在 Angular5 上从 express 呈现 html 模板
【发布时间】:2018-01-08 16:00:05
【问题描述】:

所以,我遇到了一个相当独特的情况。我的任务是将运行服务器端 express 和 html 作为其视图引擎的现有存储库转换为使用客户端 Angular (5) 进行表达。

当我到达一个无法转换为 Angular 的 html 视图时,我被卡住了,我想从服务器端快速渲染这个视图。

现在,我有一个表单组件,它通过我用 Angular 编写的服务返回一个 http post 请求的 Promise,并且该 post 请求(来自 express)应该以 html 视图的呈现结束来自一个明确的响应对象。但是当 express 遇到该渲染调用时,什么都没有发生,我仍然在同一个表单组件上。

我知道尝试这样做可能是不好的做法,但是否可以向客户端快速呈现视图(同时插入从请求正文传递的数据)?

【问题讨论】:

  • 你看到http请求了吗,你得到的是字符串形式的html内容吗,如果是那么我想你可以尝试将模板url替换为新收到的html字符串,然后它应该可以工作.如果可能,请告诉我网络请求。

标签: angular http express templates render


【解决方案1】:

是的,这是不好的做法。非常糟糕的做法。 Angular 不使用服务器端渲染来制作单页应用程序。

你不应该那样做。

但是既然你问了,是的,这是可能的。

没有代码,我将不得不把它概括,但我猜你已经有一个使用 express 的节点应用程序。

你可以创建你的页面并像这样提供它

app.get('myCustomPage', (req, res) => {
  /* serve your page */
});

在其他情况下,您可以告诉 express 为 Angular 应用程序提供服务

app.configure(() => {
  app.use((req, res) => { /* serve Angular here */});
});

(注意:如果它在任何情况下重定向,这应该是你最后的use 语句)。

最后的解决方案是在 Angular 中使用 Hash Location Strategy with

RouterModule.forRoot(myRoutes, { useHash: true });

这意味着您的应用程序将处理自己的路由,这意味着您可以轻松地在另一个 URL 上提供您的自定义页面。

但同样,不要那样做

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2012-12-04
    • 1970-01-01
    • 2021-06-13
    相关资源
    最近更新 更多