Node.js 如何防止express ejs布局包装我的其他页面?

Node.js 如何防止express ejs布局包装我的其他页面?,node.js,layout,ejs,Node.js,Layout,Ejs,我正在为node.js找到一个页面布局,就像有他们的布局模板一样,它是完美的。我想在node.js中实现它,并最终找到了它,但其中有一个问题,我在他们的文档中看不到布局将包装我的所有页面,特别是我的登录和注册页面,它们具有不同的页眉和页脚。我们如何防止express ejs版面包装我的其他页面 const express = require('express'); const router = express.Router(); const path = require('path'); con

我正在为node.js找到一个页面布局,就像有他们的布局模板一样,它是完美的。我想在node.js中实现它,并最终找到了它,但其中有一个问题,我在他们的文档中看不到布局将包装我的所有页面,特别是我的登录和注册页面,它们具有不同的页眉和页脚。我们如何防止express ejs版面包装我的其他页面

const express = require('express');
const router = express.Router();
const path = require('path');
const multer = require('multer');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const app = express();
const server = require('http').createServer(app);
const expressLayouts = require('express-ejs-layouts');

// Set Database Connection
const connection=mysql.createConnection({
    host:'localhost',
    user:'root',
    password:'',
    database:'project_101'
});

connection.connect(function(error){
    if(!!error) console.log(error);
    else console.log('Database Connected!');
});

app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.static('assets'));
app.use(bodyParser.json());       
app.use(bodyParser.urlencoded());
app.use(bodyParser.urlencoded({extended: true}));
app.use(expressLayouts);

app.get('/',(req, res) => {
    let sql = "SELECT * FROM uploads";
    let query = connection.query(sql, (err, rows) => {
        if(err) throw err;
        res.render('index');
    });
});

app.get('/signup', (req, res) => {
    res.render('signup');
});

app.get('/signin', (req, res) => {
    res.render('signin');
});

app.get('/unknown-user', (req, res) => {
    res.render('unknown-user');
});

app.get('/profile', (req, res) => {
    res.render('profile');
});

const port = process.env.PORT || 3000;

// Server Listening
server.listen(port, function () {
    console.log('Server successfully running at: -',port);
});

您可以通过以下方式绕过模板


选项
fn
是可选的。

终于找到了问题的解决方案

您只需要将页面声明为布局并将其设置为false

并将页面与布局一起呈现


ez-fix⚡️

我还是不明白。对不起的:(它只是直接发送一个文件,所以
path
是文件的路径。试着用调用
res.sendFile
来交换
res.render
调用注册,并将绝对路径传递给注册文件,去掉
选项
fn
参数,看看你是否能在@defacted-dev.I工作如果它是html页面,则应使用ejs文件在浏览器@def-dev.Im中呈现extension@frustrated,这是有道理的。那么你真的在寻找一种方法来根据路线指定不同的模板,还是一起绕过它?是的,我以为你试图绕过它。很高兴你成功了。@Chieftwoils谢谢❤️ 我只想禁用其他页面的布局。
res.sendFile(path, options, fn);
const express = require('express');
const expressLayouts = require('express-ejs-layouts');

app.use(expressLayouts);
app.set("layout signin", false);
app.get('/signin', (req, res) => {
    res.render('signin', { layout: 'signin' });
});