gpt4 book ai didi

express - 为什么 express-ejs-layout 无法呈现 layout.ejs?

转载 作者:行者123 更新时间:2023-12-02 04:06:11 25 4
gpt4 key购买 nike

在下面的配置中,home.ejs的内容似乎没有插入 <%- body %>layout.ejs页。击中默认路线 /返回 home.ejs 的内容没有 layout.ejs 中的任何结构或样式.

我找不到任何有用的信息来解决 express-ejs-layouts 的问题。工作。想知道为什么会这样吗?

应用结构:

.
├── app
├── main.js
├── node_modules
├── package.json
└── public
├── css
│   └── style.css
├── js
│   └── app.js
└── views
├── layout.ejs
└── pages
├── events.ejs
├── home.ejs
└── test.ejs

配置片段:

// file: app/server.js

// template engine
app.set('view engine', 'ejs');
app.use(expressLayouts);

// set views directory
app.set('views', __dirname + '/../public/views');

app.use(express.static(__dirname + '/../public'));

路线:

//file: app/controllers/mainController.js

exports.home = function(req,res){
res.render('pages/home');
}

EJS文件:

layout.js(片段)

    <!--file: public/views/layout.ejs -->
...
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<link rel="stylesheet" href="../css/style.css">

...

<main id="site-main">
<div class="container">
<%- body %>
</div>
</main>
...

home.ejs

<!--file: public/views/pages/home.ejs -->
This is the home page

编辑 1:

我上面的例子没有清楚地强调我将我的路线声明为 app.use('/',router)之前use.app(expressLayouts) .交换它解决了问题。

最佳答案

我刚刚使用您的文件结构设置了一个简单的 Express 服务器。如果我从客户端请求主页,我会收到:

<main id="site-main">
<div class="container">
This is the home page
</div>
</main>

这就是你想要的,对吧? home.ejs 的内容包含在layout.ejs 中。

我想知道为什么它对您不起作用。我使用的简化的server.js(注意没有特殊的路由文件):

var express = require('express');
var expressLayouts = require('express-ejs-layouts');

var app = express();

app.set('view engine', 'ejs');
app.use(expressLayouts);

app.set('views', __dirname + '/../public/views');
app.use(express.static(__dirname + '/../public'));

app.get('/', function(req, res) {
res.render('pages/home');
});

app.listen(3000);

我在 package.json 中的依赖项:

{
"ejs": "^2.5.2",
"express": "^4.14.0",
"express-ejs-layouts": "^2.2.0"
}

告诉我这是否适合您,然后我们可以研究您的配置有什么问题。

编辑: 结果是 OP 将他的路由声明 app.use('/',router); 放在了 app.use(expressLayouts); 之前 这就是为什么 layout.ejs 没有被考虑用于渲染的原因。

关于express - 为什么 express-ejs-layout 无法呈现 layout.ejs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39461285/

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