gpt4 book ai didi

带有重定向的 Node.js 包罗万象的路由总是使用 Angular 呈现索引页面,而不管 url

转载 作者:搜寻专家 更新时间:2023-10-31 23:05:44 24 4
gpt4 key购买 nike

基本上,当我使用包罗万象的路由并使用 res.redirect('/') 时,无论我输入的 url 是什么,它总是会呈现索引/主页(即 Angular 似乎没有“查看”完整的 url)但是,如果我将 res.render('index') 放在 catch-all 路由中,一切正常。我不想重复代码并重定向到“/”应该可以工作,我可能在这里的某个地方犯了一个愚蠢的错误,我们将不胜感激!

Angular 路由:

app.config(function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);

$routeProvider
.when('/',
{
templateUrl: 'partials/home.jade'
})
.when('/about',
{
templateUrl: 'partials/about.jade'
})
.otherwise( {redirectTo: '/'});
});

这将在输入 site-address/about 时正确呈现关于页面:

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

app.get('/partials/:name', function (req, res) {
res.render('partials/' + req.params.name);
});

app.get('*', function (req, res) {
res.render('index');
});

这将始终只显示索引页:

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

app.get('/partials/:name', function (req, res) {
res.render('partials/' + req.params.name);
});

app.get('*', function (req, res) {
res.redirect('/');
});

配置是否有帮助:

// Configuration
app.configure(function () {
app.set('port', process.env.PORT || 1337);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(path.join(__dirname, 'public')));
app.use(app.router);
});

最佳答案

这是设计使然。

当您使用 res.redirect('/') 时,Node/Express 会发送一个 HTTP 重定向,这将更改浏览器中的 URL,因此当您的索引模板被呈现时,以及当运行 Angular 代码,URL 为 /,无论用户输入什么(重定向的全部点)。

当您省略重定向并仅发送模板作为响应时,NodeJs 会响应 HTTP 200(成功)以及 HTML 内容。由于 URL 没有改变,当您的应用程序运行时, Angular 路由会正确路由。

编辑添加:地址评论

与其让两个路由呈现相同的模板,我会一起摆脱 / 路由,只让 catch-all 呈现索引模板,然后将控制权交给Angular 路由器。

否则,我会考虑从概念上拆分你的路由:你所有的应用程序路由都专门发送到 Angular 路由器,你通过 nodejs 呈现静态路由,并使用你的 catch all 为丢失或未知的资源呈现更合适的页面(对您的用户更有帮助)。

您可以使用类似正则表达式的语言来指定单个处理程序:

app.get('/()|(about)|(contact)/',function(req,res) {/* handle */});

关于带有重定向的 Node.js 包罗万象的路由总是使用 Angular 呈现索引页面,而不管 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19370606/

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