【问题标题】:Is a View Engine necessary for Express/Node?Express/Node 是否需要视图引擎?
【发布时间】:2017-04-01 02:41:17
【问题描述】:

所以我首先深入研究了 Node/Express(w/Learning Javascript Intermediate 的东西),我有点困惑为什么需要像 Jade 或 EJS 这样的“视图引擎”?

我似乎找不到只使用普通 HTML5 的东西?还是我无法使用 express 将值传递给普通 HTML?

假设我有一个加载的 index.html 页面,当我“登录”时加载它并在顶部发布用户名(仅作为示例)。我不能在 express 中将值传递给普通的 .html 文件吗?

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    Express/Node 是否需要视图引擎?

    不,这不是必需的。 Express 可以随心所欲地提供静态 HTML5 文件。您不需要为此使用视图引擎。您可以创建自定义路由并为每个页面使用 res.sendFile(),也可以使用 express.static() 自动提供静态 HTML 文件的整个目录,或者您可以编写自己的代码来构建您想要发送的任何 HTML5 内容并使用 @ 987654323@发送。

    如果您想要一个模板类型的系统,则需要一个视图引擎,您可以在其中创建一个 HTML 模板,其中包含动态内容的占位符,然后将动态值插入到服务器上的页面中。

    我不能在 express 中将值传递给普通的 .html 文件吗?

    不,您不能使用正规快递来做到这一点。 Express 具有提供静态 HTML 文件的功能,但不能将动态内容插入 HTML 文件。这就是您使用视图引擎的目的。 Express 本身并没有构建该功能,因为有许多不同的视图引擎理念,并且 Express 不想强制使用一种样式,因此它支持视图引擎界面以从模板进行渲染,您可以选择您想要的视图引擎使用。

    【讨论】:

    • 我尝试在我的视图文件夹目录中的 index.html 文件上使用 res.send,它说找不到。我是否只是将其作为另一个静态文件包含(以及我的 css/etc...)
    • @msmith1114 - 您必须出示您正在使用的代码,以便我们知道您做错了什么。 res.send() 将与内存中的字符串一起使用。 res.sendFile() 将与磁盘中的文件一起使用。如果找不到文件,那么您一定是路径错误。您可以将res.render() 与视图引擎一起使用。
    • 我正在使用 res.render() 这就是问题所在!我猜大多数节点开发人员都使用视图引擎?
    • @msmith1114 - 如果您使用动态内容为 HTML 网站提供服务,那么使用视图引擎,您的工作会轻松很多。如果您只提供静态内容或只提供 API,那么可能不需要视图引擎。或者有些网站在前端用Javascript插入动态内容。
    【解决方案2】:

    回答主要问题 - express/node 不需要视图引擎。

    你是对的,你不能将变量/值传递给纯 html。视图引擎会查看您传递的数据并为您生成 html 标记。

    使用视图引擎的另一种方法是使用前端库/框架,如 jquery、react 或 angular(或者您可以使用纯 JavaScript)。 javascript 可以检索数据(使用 ajax/fetch)并将其绑定到您的 html - 如果您使用纯 javascript 或 jquery,我猜它不会被绑定,但您可以使用您的数据更新 DOM。

    【讨论】:

    • 那么,在没有视图引擎的情况下,我将如何将值加载到网页中(例如从数据库中)。
    • 您可以使用 ajax 向您的服务器发送 HTTP 请求,该服务器从数据库中检索数据,并将其作为 json 发送回您的前端 javascript 请求。这是一个例子:stackoverflow.com/questions/9436534/…
    • 我猜大多数用户还是使用视图引擎?
    猜你喜欢
    • 1970-01-01
    • 2014-11-05
    • 2021-12-07
    • 2012-07-01
    • 2011-05-13
    • 1970-01-01
    • 2019-01-27
    • 2015-05-06
    • 1970-01-01
    相关资源
    最近更新 更多