Javascript 如何在express和ejs中包含html文件 代码

Javascript 如何在express和ejs中包含html文件 代码,javascript,html,node.js,express,ejs,Javascript,Html,Node.js,Express,Ejs,我想让我的网页模块化,这样我就不需要一次又一次地写我的东西了。我认为我的解决方案应该是ejs库。因此,我一直在使用配置如下的express和ejs: const app = express(); app.engine('.html', require('ejs').renderFile); app.set('view engine', 'html'); app.set('views', __dirname + '/wwwroot/views'); “我的视图”文件夹结构如下所示: wwwroo

我想让我的网页模块化,这样我就不需要一次又一次地写我的东西了。我认为我的解决方案应该是ejs库。因此,我一直在使用配置如下的express和ejs:

const app = express();
app.engine('.html', require('ejs').renderFile);
app.set('view engine', 'html');
app.set('views', __dirname + '/wwwroot/views');
“我的视图”文件夹结构如下所示:

wwwroot
  static
    css
    js
  views
    login
      index.html
    profile
      dashboard.html
    templates
      inc_header.html
      inc_footer.html
我的仪表板包含以下内容

<% include templates/inc_header.html %>

This is my dashboard
Web服务器上的输出 这是我的仪表盘

看起来文件不会被渲染?

这是来自ejs的:

包含相对于包含调用的模板

由于包含标题的文件是
dashboard.html
,因此路径应为:

<% include ../templates/inc_header %>

ejs的include模板标记在开始标记上附加了一个连字符 将连字符添加到include标记中,它将起作用

您还可以向包含的文件发送数据

     <%- include("../partials/head.ejs", {variant:e.name}); %>
    <em>Variant: <%= typeof variant != 'undefined' ? variant : 'default' %></em>

您根本没有名为
header.html
的文件!我使用inc_header.html。我编辑了它……我试过了,但还是一样。是否可能是app.engine('.html',require('ejs').renderFile);不工作?因为我的输出仍然是这是我的仪表板尝试删除
.html
扩展名,我更新了我的回答尝试删除这行
app.engine('.html',require('ejs').renderFile)
并将view engine设置为ejs,如下所示:
app.set('view engine','ejs')
,不要忘记将所有视图扩展替换为
.ejs
,这很奇怪。如果我这么做了,他想下载这个文件。在这个文件中是源代码,但它将不再显示在浏览器中。我已经添加了我的整个express配置。也许有什么不对劲?
    <em>Variant: <%= typeof variant != 'undefined' ? variant : 'default' %></em>