【问题标题】:What is a good way to integrate Angular in an Express app that uses the Jade template?将 Angular 集成到使用 Jade 模板的 Express 应用程序中的好方法是什么?
【发布时间】:2017-12-18 23:57:27
【问题描述】:

我是 Node.js 的新手,但我想开始一个新项目,并认为可能是学习 Node-Express 框架和 MEAN 堆栈的好机会。

我感到困惑的是,如果上述堆栈根据定义使用 Angular,为什么 Express 会附带 Jade 模板(*参见 EDIT)引擎。事实上,我的理解是,虽然 Jade 可以与 angular 一起使用,但这可能是不必要的,并且可能会使事情过于复杂(例如参见 this question)。

当然我可以看到 Express 可以独立于这样的堆栈使用,所以也许让我换个方式提出问题。

如果确实没有必要将 Jade 和 Angular 结合起来,那么在 MEAN 堆栈框架中构建 Web 应用程序时最好的方法是什么?

基本上,如果一个人在使用 Jade 模板生成一个快速应用程序后,决定要使用 Angular(和 Mongo),那么最好的方法是什么?所以万一开始使用 Jade 模板,是否最好回到纯 HTML 以使用 Angular?

这可能只是我在该领域的无知让我感到困惑,但一些澄清将不胜感激。

编辑:原标题是“如果 MEAN 堆栈使用 Angular,为什么 Express 会附带 Jade?” 但感谢 cmets,我意识到这确实不正确说 Express 是和 Jade 一起“来”的,所以我改变了标题,因为我实际上主要对其他东西感兴趣。

【问题讨论】:

  • 好吧,并不是每个使用 Express 的人都使用整个 MEAN 堆栈
  • 没有模板引擎 与 Express 一起提供。
  • MEAN 堆栈只是一种技术配置。 Angular 是一个用于构建单页应用程序的前端 javascript 框架,Express 是一个可以渲染 HTML 的网络服务器库,如果您不想编写原始 HTML,您可以使用 Jade,它是一个渲染引擎来构建原始 HTML来自具有附加功能的不同标记的页面。
  • @Kai 是的,这就是我写“我显然可以看到 Express 可以独立于此类堆栈使用”的原因。也许我的问题最好在我的帖子末尾重新表述。
  • @MichaelLyons 是的,我明白这一点。也许可以更改我的标题以更好地反映我的问题(我相信在帖子末尾会更清楚),有什么建议吗?

标签: angularjs node.js express pug mean-stack


【解决方案1】:

您的整个问题似乎是基于一个难以回答的错误信息。 Express 不附带 Jade。 事实上,它不附带任何模板引擎。您可以使用许多不同的模板引擎,并且必须先安装所有模板引擎,然后才能将它们与 Express 一起使用。 Express 带有一个用于插入模板引擎的框架,但没有实际工作的模板引擎。

事实上,Express 专门设计为“用于 Node.js 的快速、独立、简约的 Web 框架”(这些词直接取自其主页)。 “unopinionated”意味着它没有捆绑任何特定的模板解决方案。

这里可能造成混淆的一个原因是 Express 应用程序生成器默认使用 Jade。 Express 框架本身不假定任何特定的模板引擎。

这两个参考可以帮助您了解模板引擎是如何在 Express 中注册和使用的:Using template engines with Expressres.render() documentation

MEAN 是您可以一起使用的一种特定技术堆栈的一个特定首字母缩写词。这绝不是使用 Express 的唯一方法。

node.js 模板引擎是构建动态网页的服务器端方式。服务器上存在一个模板,node.js 然后将一些数据、模板和模板引擎组合在一起以创建一个 HTML 页面,然后可以将其传递给浏览器并由浏览器呈现。 Angular 是一个客户端引擎,也用于构建动态页面(通常是插入数据的页面)。它通常用于单页应用程序。我建议您阅读What is AngularJS 了解更多详情。

所以,您似乎对构建动态网页的两种不同架构方法感到困惑。 Angular 方法只是做事的一种方式,Express 并不真正关心您是使用 Angular 方式还是其他方式。它在任何一种情况下都能发挥作用。

【讨论】:

  • 明白,感谢您的澄清。这当然有帮助。但是,在我帖子的最后一部分中,我还询问如果有人使用 express 和 Jade 生成了一个应用程序,如果有人想使用完整的 MEAN 堆栈,最好的方法是什么(请参阅链接的帖子)没有必要使用 Angular AND Jade?​​span>
  • @Tommy - AngularJS 是一种构建网页的特殊方式,该网页在某种程度上由框架自动填充数据。它是一种客户端技术(数据被插入到浏览器的 DOM 中)。您将与 nodejs 一起使用的 Jade 和其他模板引擎是服务器端技术(尽管某些模板引擎也可以在客户端使用),用于在服务器上构建动态网页。实际上可能有一些原因将两者一起使用,尽管通常一个人会选择另一种方法。它们是不同的设计模式。
  • 我明白了,所以基本上你所说的是,这一切(显然)归结为一开始就有一个清晰的设计理念,并朝着这个方向构建一切。我想那里的东西太多了,以至于每次尝试进入未知水域时都会变得更加困难。
  • @Tommy - 看看我在回答中还添加了什么。如果您阅读了我提供的 What is AngularJS 链接,有几个部分可能会帮助您确定 Angular 是否适合您的项目。它自己承认,它对一堆事情有“意见”,这使得它只适用于某些类型的应用程序。 Express 更广泛、更灵活,甚至可以作为 AngularJS 驱动的前端背后的后端,或者可以与完全不同的策略一起使用。
  • @Tommy - 就个人而言,我可能会从 Express 以及您最喜欢的模板引擎和数据库开始,然后启动并运行。你有很多东西要学。然后,一旦您启动并运行了第一个版本(只有几页),您就可以探索 AngularJS 并查看它的执行方式是否适合您正在尝试构建的内容。因为您只有几页,所以您不会花很多时间在模板引擎上,但会更好地了解整个后端的工作原理。
猜你喜欢
  • 1970-01-01
  • 2012-01-17
  • 2016-02-29
  • 2015-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-17
  • 2011-11-10
相关资源
最近更新 更多