gpt4 book ai didi

javascript - AngularJS路由服务器端支持(NodeJS+express)

转载 作者:太空宇宙 更新时间:2023-11-04 00:57:20 24 4
gpt4 key购买 nike

我在服务器上使用 NodeJS + expressJS,在客户端上使用 AngularJS

AngularJS Controller 有以下路由:

app.config(function($routeProvider,$locationProvider) {
$routeProvider
.when('/field1/:id', {
controller: 'ctrl1',
templateUrl: "/view/mainpages/field1.html"
})
.when('/field2/:id', {
controller: 'ctrl2',
templateUrl: "/view/mainpages/field2.html"
})
........... many many
.when('/', {
controller: 'ctrl0',
templateUrl: "/view/mainpages/index.html"
})
.otherwise({redirectTo : '/'});

NodeJS 静态:

app.all('/*', express.static(__dirname + '/client'));

在调用直接通过此链接的情况下,如何使服务器重定向相对于根目录的路径上的所有静态页面。

示例:server:3000/field1/23 必须调用 server:3000/client/index.html并且索引必须上传 JS,如 server:3000/js/cntr1.js

更新:我找到了问题的解决方案。但它看起来像拐杖一样丑陋

app.get('/field1/([0-9]+$)', function(req, res, next) { 
req.url='/index.html';
next();
});
app.use('/field1', express.static(__dirname + '/client'));

也许有更优雅的解决方案?

最佳答案

在expressjs中,您可以使用正则表达式模式匹配来定义路由。这意味着,特定集合下的任何内容都将始终从服务器端返回相同的页面,并且您将让 Angular 决定到底要显示什么或执行哪个操作。

将/处的所有内容重定向到同一页面并不是一个好主意,因为您需要管理您的资源,并且它们也存在于/部分,相反,使用易于管理的子目录是一个好主意

以下代码片段会将应用程序路径下的所有内容重定向到服务器端的同一页面

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

如果您不想局限于一个应用程序目录,而是有许多不同的根级别目录,所有这些目录都需要指向同一页面,您可以执行以下操作

app.get('/(app|server|client|form|dashboard)/*', function(req, res) {
res.send('app_index');
})

关于javascript - AngularJS路由服务器端支持(NodeJS+express),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29139241/

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