Node、Angular、Express 和视图引擎

Posted

技术标签:

【中文标题】Node、Angular、Express 和视图引擎【英文标题】:Node, Angular, Express and the view engine 【发布时间】:2014-11-05 18:21:26 【问题描述】:

我最近开始使用 Angular、Node 和 Express。我已经在 Angular 中制作了一些基于浏览器的工作应用程序,并试图将它们移植到 Node 和 Express 中的服务器应用程序。 (特别是,一个会从 Twitter 中提取数据,而另一个会从 Wikidot 中提取数据。)

由于我使用 Angular 进行数据注入和模板化,我不想使用其他视图引擎,例如 EJS 或 Jade。我想使用我已经编写的 html/Angular 代码,并且尽可能少地进行修改。我很困惑为什么 Express 要求我有一个视图引擎。

让此代码作为 Node/Express 应用程序运行的最简单方法是什么?

【问题讨论】:

【参考方案1】:

我一直在寻找的答案就是这行代码。

app.engine('html', require('ejs').renderFile);

【讨论】:

但是其他通常设置的东西呢:是否有必要使用这个:app.set('views', ..)?或者这个:app.use('/', express.static('./public')); 您能否发布更多代码以便总体上更有意义,因为我也有同样的问题。【参考方案2】:

由于您使用的是 AngularJS,我认为您不太关心 Express 的视图引擎,例如如果您使用 Express 来呈现 HTML,那就更好了。也许你只是用它来将你的初始 HTML(带有指向所有 .js、.css 等的链接)加载到浏览器中(服务器端模板渲染),剩下的工作是通过 AngularJS 与你的 Express 的 HTTP 通信来完成的服务

简单的方法是让你从 Express 返回 JSON,试试这个函数http://expressjs.com/api#res.json

使用 AngularJS 与 Express 通信,AngularJS 在浏览器上渲染有趣的东西(客户端模板渲染等)

【讨论】:

通过这个答案,我假设我将直接调用 HTML 文件,而不是让 Node.js 将其解释为模板。那是对的吗?如果是这样,我如何阻止 Node 尝试解释它?

以上是关于Node、Angular、Express 和视图引擎的主要内容,如果未能解决你的问题,请参考以下文章

错误状态:使用 Node.js (express)、Angular 和 MongoDB 的 PUT 请求返回 404

使用 Express/Node.js 和 Angular 处理取消的请求

在 Express、Node.js 和 Angular 学习项目中不使用 next() - 对吗?

使用 Node 和 Express 构建 Angular 应用程序时是不是需要使用 JADE?

如何在同一个端口上运行 Node Express 服务器和 Angular?

如何将 express 和 node 设置到现有的仅前端 Angular 2 项目中?