Iディレクトリ構造のように定義ブラウザでURLを直接訪れても、クリックしたときに動作すると角度ルーティングは機能しませんか?
app
..views
....partials
......main.jade
......foo.jade
....index.jade
とルートとの角度アプリ有する:
'は厳密使用';
angular.module('myApp', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute',
'firebase',
'myApp.config'
])
.config(function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when('/', {
templateUrl: '/partials/main',
controller: 'MainCtrl'
})
.when('/foo/:fooName', {
templateUrl: '/partials/foo',
controller: 'FooCtrl'
})
.otherwise({
redirectTo: '/'
});
});
私は、サーバー側でExpressを使用していますし、関連するコードは次のとおりです。
// server.js
app.configure('development', function(){
app.use(express.static(path.join(__dirname, '.tmp')));
app.use(express.static(path.join(__dirname, 'app')));
app.use(express.errorHandler());
});
app.configure('production', function(){
app.use(express.favicon(path.join(__dirname, 'public/favicon.ico')));
app.use(express.static(path.join(__dirname, 'public')));
});
app.get('/', routes.index);
app.get('/partials/:name', routes.partials);
//routes.js
exports.index = function(req, res){
res.render('index');
};
exports.partials = function(req, res){
var name = req.params.name;
res.render('partials/' + name);
};
メインルートを"/"
負荷罰金と予想されるようにするとき、私は"/foo/bar"
部分図にfoo.jade
負荷にクリックしてください。しかし、URLに直接"/foo/bar"
を訪問しようとすると、エクスプレス"cannot GET /foo/bar"
から404の応答が得られます。このようなルートは明示的に定義されていないため意味があります。しかし、私はこれが角度ルータを定義する全体のポイントだと考えました。この要求を傍受し、実際に"/partials/foo"
を求めています。 私は
//redirect all others to the index (HTML5 history)
app.get('*', routes.index);
を追加しようとしたが、それは問題を解決し、静的なJS資産についても、リクエストをキャッチし、かなり悪いですindex.html
の内容で応答するように見えたのdidnt。 私は何か間違っていると確信しています。 URLに直接アクセスできるようにするにはどうすればよいですか?
私はサーバーでこれを試してみました: app.get( '*'、routes.index);そしてそれは仕事をしなかった。 – algorithmicCoder
私はあなたがそれをすることができるとは思わない。あなたが急行を使用しているなら、あなたはconnect-mod-rewriteを使いやすいはずです。 Expressは接続の上に書かれています。 –
しかしこれはまさにここで行われていることです:https://github.com/btford/angular-express-seed/blob/master/app.jsこれは標準的な角度参照です。その場合、なぜそれは機能しますか? – algorithmicCoder