Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何动态路由页面?_Javascript_Node.js_Express - Fatal编程技术网

Javascript 如何动态路由页面?

Javascript 如何动态路由页面?,javascript,node.js,express,Javascript,Node.js,Express,如何在不使用app.get everytime的情况下动态路由每个页面? 我的代码也返回了404错误代码 console.log(page + " rendered"); 因为某种原因,它不起作用 var express = require('express'); var path = require('path'); var ejs = require('ejs'); var app = express(); app.engine('.html', ejs.__express); app

如何在不使用app.get everytime的情况下动态路由每个页面? 我的代码也返回了404错误代码

console.log(page + " rendered");
因为某种原因,它不起作用

var express = require('express');
var path = require('path');
var ejs = require('ejs');
var app = express();


app.engine('.html', ejs.__express);
app.set('views', __dirname + '/views');
app.set('view engine', 'html');


var pages = [
    'users', 
    'index'
];

pages.forEach(function(page) {
        app.get('/' + page, function(request, response) {
        response.render(page);
        console.log(page + " rendered");
    });
    console.log(page + " set up");
});

app.listen(80);
console.log('Express app started on port %d', 80);

在路由中使用正则表达式。^和$分别表示事件的开始和结束表示或。您所需的正则表达式为/^users | index$/


在路由中使用正则表达式。^和$分别表示事件的开始和结束表示或。您所需的正则表达式为/^users | index$/

这将与一切匹配。在回调内部,您可以进行呈现—您可以通过req对象访问请求以呈现适当的页面。看


这将与一切匹配。在回调内部,您可以进行呈现—您可以通过req对象访问请求以呈现适当的页面。请参阅。

这是我在express中使用的动态路由模式,您可以根据需要对其进行重新调整。它需要将一些元数据放入对象数组中

严格使用; let express=requireexpress; let routing=req,res=>{ 让router=express.router, //路由元数据 路线=[{ 路径:/, 视图:默认值, 标题:根 }, { 路径:/otherpath, 视图:其他文件, 标题:其他页面 }]; //遍历路由,查找req.path 让routeIndex=routes.findIndexroute=>route.path==req.path; //如果在路径匹配的路由中找到对象 如果routeIndex>=0{ //服务内容 res.status200.renderroutes[routeIndex]。视图{ 标题:路由[routeIndex]。标题 }; }否则{ //其他404s console.log404来自请求:,req.path; res.status404.sendFileprocess.cwd+/views/404filename.htm; } 返回路由器 };
module.exports=路由 这是我在express中使用的动态路由模式,您可以根据需要对其进行重新调整。它需要将一些元数据放入对象数组中

严格使用; let express=requireexpress; let routing=req,res=>{ 让router=express.router, //路由元数据 路线=[{ 路径:/, 视图:默认值, 标题:根 }, { 路径:/otherpath, 视图:其他文件, 标题:其他页面 }]; //遍历路由,查找req.path 让routeIndex=routes.findIndexroute=>route.path==req.path; //如果在路径匹配的路由中找到对象 如果routeIndex>=0{ //服务内容 res.status200.renderroutes[routeIndex]。视图{ 标题:路由[routeIndex]。标题 }; }否则{ //其他404s console.log404来自请求:,req.path; res.status404.sendFileprocess.cwd+/views/404filename.htm; } 返回路由器 };
module.exports=路由 与为每个页面创建新路由不同,您可能希望动态地在视图中查找url。如果没有从处理程序中处理路径,请确保调用next,以便调用进一步的路由和/或中间件

var routes = {
    '/users': 'users rendered',
    '/index': 'index rendered',
}

app.get('*', (req, res, next) => {
    let view = routes[req.path]
    if (!view) 
        return next()
    res.render(view)        
})

app.use((req, res, next) => {
    res.status(404).send('404 - Not found')
})

与为每个页面创建新路由不同,您可能希望动态地在视图中查找url。如果没有从处理程序中处理路径,请确保调用next,以便调用进一步的路由和/或中间件

var routes = {
    '/users': 'users rendered',
    '/index': 'index rendered',
}

app.get('*', (req, res, next) => {
    let view = routes[req.path]
    if (!view) 
        return next()
    res.render(view)        
})

app.use((req, res, next) => {
    res.status(404).send('404 - Not found')
})

请编辑更多信息。不鼓励只编写代码并尝试此答案,因为它们不包含可搜索的内容,并且不解释为什么有人应该尝试此选项。请使用更多信息进行编辑。不鼓励只编写代码和尝试此答案,因为它们不包含可搜索的内容,也不解释为什么有人应该尝试此选项。因此,如果其中的代码相同,是否希望以更快的方式编写所有路线?另外,您的代码引起的错误是什么?因此,如果代码中的代码相同,您希望以更快的方式编写所有路由?另外,您的代码引发了什么错误?app.use'/将只匹配根url。app.use'/将只匹配根url。我在响应中编辑了代码,以使用findIndex而不是for..of,因为我仍然使用es6语法。这最终变得更干净、更健壮,不再需要阻止服务器端404报告我在响应中编辑了代码,使用findIndex而不是for..of,因为我使用的是es6语法。这最终变得更干净、更健壮,不再需要阻止服务器端404报告
var routes = {
    '/users': 'users rendered',
    '/index': 'index rendered',
}

app.get('*', (req, res, next) => {
    let view = routes[req.path]
    if (!view) 
        return next()
    res.render(view)        
})

app.use((req, res, next) => {
    res.status(404).send('404 - Not found')
})