我使用在客户端的NodeJS在服务器+ expressJS和AngularJSAngularJS路由服务器端支持(的NodeJS +快递)
AngularJS控制器有以下途径:
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
UPD:我发现了一个解决问题的办法。但它看起来很丑陋作为一个拐杖
app.get('/field1/([0-9]+$)', function(req, res, next) {
req.url='/index.html';
next();
});
app.use('/field1', express.static(__dirname + '/client'));
也许有一个更优雅的解决方案?
'app.get('/ field /:name',function(req,res){' 'var name = req.params.name;' 'res.render('/'+ name); ' '});'但是:名称可以是一个ID。我找到了通用解决方案。我认为这是在REST应用程序中传播的问题 – Gopard 2015-03-19 07:48:04
在这个你的评论代码中,你想要做什么?你想喜欢'http:// server:3000/name'吗?但是这个页面将包含哪个视图? – 2015-03-19 09:06:42
是的。当name ='index.html'或'controll.js'...时,我想要'http:// server:3000/name',但它可以是'23'(角度页参数),然后是'http://server:3000/field/2' ='http:// server:3000/field' ='http:// server:3000 /' – Gopard 2015-03-19 09:19:28