在下面的配置中,select fn_get_member_fee (@member.id) from member
的内容似乎没有插入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'));
layout.js(摘录)
//file: app/controllers/mainController.js
exports.home = function(req,res){
res.render('pages/home');
}
home.ejs
<!--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>
...
编辑1:
我上面的例子没有清楚地突出显示我在<!--file: public/views/pages/home.ejs -->
This is the home page
之前将我的路线声明为app.use('/',router)
。交换它解决了问题。
答案 0 :(得分:1)
我只是使用您的文件结构设置了一个简单的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
进行渲染的原因。
答案 1 :(得分:0)
在路线声明之前设置布局声明
喜欢这个..
//set the layouts
app.set('view engine', 'ejs');
app.use(expressLayouts);
//set the routes
app.use(require('./app/routes'));