Expressjs+;ejs和a标记href URL不使用子目录路由
我不太清楚这里有几件事是肯定的:) 基本应用程序结构为app.js文件格式:Expressjs+;ejs和a标记href URL不使用子目录路由,express,ejs,Express,Ejs,我不太清楚这里有几件事是肯定的:) 基本应用程序结构为app.js文件格式: const express = require('express'); const port = process.env.Port || 5000; const app = express(); const path = require('path'); const mainRoute = require( path.join(__dirname, 'src/routes/mainRoute')); app.use
const express = require('express');
const port = process.env.Port || 5000;
const app = express();
const path = require('path');
const mainRoute = require( path.join(__dirname, 'src/routes/mainRoute'));
app.use(function (req, res, next) {
res.header('Cache-Control', 'public, max-age=3600');
next();
});
app.use(express.static('public', {
maxAge: '1d',
}));
app.set('views', path.join(__dirname, 'src/views'));
app.set('view engine', 'ejs');
app.use('/', mainRoute);
app.get('*', function(req, res){
res.status(404).send('404???')
});
app.listen( port, () => console.log(`Listening on port`, port ));
const express = require('express');
const mainRoute = express.Router();
mainRoute.get('/', async (req, res) => {
res.render('page', {url: 'pageone', title: 'page 1'});
});
mainRoute.get('/pageone', async (req, res) => {
res.render('page', {url: 'pagetwo', title: 'page 2'});
});
mainRoute.get('/pagetwo', async (req, res) => {
res.render('page', {url: 'pageone', title: 'page 1'});
});
module.exports = mainRoute;
以及基本结构route.js文件,如下所示:
const express = require('express');
const port = process.env.Port || 5000;
const app = express();
const path = require('path');
const mainRoute = require( path.join(__dirname, 'src/routes/mainRoute'));
app.use(function (req, res, next) {
res.header('Cache-Control', 'public, max-age=3600');
next();
});
app.use(express.static('public', {
maxAge: '1d',
}));
app.set('views', path.join(__dirname, 'src/views'));
app.set('view engine', 'ejs');
app.use('/', mainRoute);
app.get('*', function(req, res){
res.status(404).send('404???')
});
app.listen( port, () => console.log(`Listening on port`, port ));
const express = require('express');
const mainRoute = express.Router();
mainRoute.get('/', async (req, res) => {
res.render('page', {url: 'pageone', title: 'page 1'});
});
mainRoute.get('/pageone', async (req, res) => {
res.render('page', {url: 'pagetwo', title: 'page 2'});
});
mainRoute.get('/pagetwo', async (req, res) => {
res.render('page', {url: 'pageone', title: 'page 1'});
});
module.exports = mainRoute;
在page.ejs模板上,可以看到如下简单内容:
<a href="/<%= url %>">
<%= title %>
</a>
<hr />
<a href="/">
home
</a>
现在,问题是当我加载URL时:
http://localhost:5000/sub
然后,页面上的链接呈现view source href=“/pageone”,因此,当我单击这些链接时,页面将转到http://localhost:5000/ 未在主路线上保留“/sub”集
例如,在angular2中,我可以保留所有链接,并尊重在索引上设置了基本url标记的子文件夹
但在expressjs上似乎并非如此
如何保持页面上指向/sub或/loc路径的所有链接?不渲染或将其添加到ejs模板
我的意思是,有与路由目录相关的链接吗?您可以使用它来获取安装路由器的路径。您可以将其传递到页面.ejs
查看并构建URL
// mainRoute.js
mainRoute.get('/', async (req, res) => {
res.render('page', { url: 'pageone', title: 'page 1', baseUrl: req.baseUrl })
})
mainRoute.get('/pageone', async (req, res) => {
res.render('page', { url: 'pagetwo', title: 'page 2', baseUrl: req.baseUrl })
})
mainRoute.get('/pagetwo', async (req, res) => {
res.render('page', { url: 'pageone', title: 'page 1', baseUrl: req.baseUrl })
})
你好,阿伦。您是否可以就以下简单问题咨询Node.js:。请让我知道,当你阅读此,这样我可以删除评论。谢谢