我使用在客戶端的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