我正在尝试使用Angular中的ngRoute
设置路由。我know对后端的GET请求应该返回index.html
,然后index.html
加载Angular,构造相应的页面。
但我遇到的问题是app.js
的GET请求正在返回index.html
。当我查看其他人的代码和我的旧代码时,他们基本上和我有相同的路线:
app.get('/*', function(req, res) {
res.sendFile(__dirname + '/index.html');
});
例如,this article似乎正在解决我的情况,但我不知道它如何处理我对非HTML资源的问题。
您应该如何处理非HTML资源的GET请求?
编辑:
我的文件结构:
- algorithmsAssignments
- node_modules
- percolation
- grid.js
- main.css
- main.html
- main.js
- uf.js
- randomizedQueuesAndDequeues
- main.css
- main.html
- main.js
- app.js
- home.html
- index.html
- server.js
server.js
var express = require('express');
var app = express();
app.get('/*', function(req, res) {
res.sendFile(__dirname + '/index.html');
});
app.listen(3000);
console.log('listening on port 3000...');
app.use(express.static(__dirname));
答案 0 :(得分:0)
虽然我不知道您考虑过哪种类型的非HTML资源,但您可以使用快速路由返回JSON,如下所示:
res.send({ foo: 'bar' });
或除了返回JSON之外的状态代码
res.status(400).send({ Message: "not found" });
不确定它是否与您正在处理的内容相关,但您当然可以在Angular中加载非html资源,而无需触及Express或配置任何路由:
$http.get('/myresources/configSettings.json').success(function (data) {
if (data.foo === 'bar') {
console.log('this works');
}
}).error(function () {
console.log('Error: failed to find your config settings.');
});
答案 1 :(得分:0)
不要以这种方式提供静态文件。而是将所有静态文件放在一个目录中(例如' public')并添加middleware:
server.use(express.static(__dirname + '/public'));
我建议仅使用自定义路由来提供动态文件。