gpt4 book ai didi

node.js - 新手关于partials的问题

转载 作者:搜寻专家 更新时间:2023-10-31 22:44:17 26 4
gpt4 key购买 nike

我有一个包含页眉、菜单、内容和页脚的简单页面。我需要将它们分成单独的文件。在阅读完 express 文档后,我(创建了 4 个模板并)写了如下内容:

app.get('/', function(req, res) {
var response = [null, null, null, null]
, everyNotNull = function(elem) {
return (elem !== null);
}, sendResponse = function(type, str) {
switch (type) {
case 'head' : response[0] = str; break;
case 'menu' : response[1] = str; break;
case 'content' : response[2] = str; break;
case 'footer' : response[3] = str; break;
}

if (response.every(everyNotNull)) {
res.send(response.join(''));
}
};

res.partial('head', {'title' : 'page title'}, function(err, str) {
sendResponse('head', str);
});

res.partial('menu', {'active' : '/'}, function(err, str) {
sendResponse('menu', str);
});

res.partial('index', {'title' : 'Home'}, function(err, str) {
sendResponse('content', str);
});

res.partial('footer', {'nowdate' : (new Date()).getFullYear()}, function(err, str) {
sendResponse('footer', str);
});
});

虽然它有效,但对我来说似乎有点脏。有没有更好的方法来使用部分模板?

最佳答案

您怀疑缺少某些东西是对的,您在那里做了不必要的工作。

Express 会为您将模板拼接在一起,只需调用 res.render() 和您要调用的 View 的名称即可。布局和部分应自动拉入。

在我的应用程序中,我通常使用如下的部分。只需将对 EJS 的引用替换为您正在使用的任何模板引擎(Jade、moustache 等):

./lib/app.js

app.get('/', function(req, res) {
var model = {
layout:'customLayout', // defaults to layout.(ejs|jade|whatever)
locals:{
foo:'bar'
}
};
res.render('index',model);
});

./views/layout.ejs

<html>
<head><%- partial('partials/head') %></head>
<body>
<%- partial('partials/menu') %>
<%- body %>
<%- partial('partials/footer') %>
</body>
</html>

./views/index.ejs

<h1>Index page</h1>

./views/partials/menu.ejs

<div><a href='... </div>

./views/partials/head.ejs

<script>...</script>
etc.

关于node.js - 新手关于partials的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7317359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com