Javascript 如何在express和ejs中包含html文件 代码
我想让我的网页模块化,这样我就不需要一次又一次地写我的东西了。我认为我的解决方案应该是ejs库。因此,我一直在使用配置如下的express和ejs: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
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>