我在带有ExpressJS的NodeJS服务器上有一个AngularJS应用程序.现在我将Angular应用程序作为静态文件提供服务:
app.use(express.static(__dirname + '/app'));
但在导航方面,我有一个#符号:
http://127.0.0.1:8080/#/queryes
为了解决这个问题,我把这段代码放在Angular Router中:
$locationProvider.html5Mode(true);
但现在我无法获得部分观点.如何将Angular Routes与ExpressJS混合使用?
为了将AngularJS html5mode与Express一起使用,您必须为所有请求提供"index.html",以便将所有路由保留到AngularJS.我曾经有同样的问题.
首先,您声明所有API端点路由,任何静态文件目录(CSS,JS,partials等),然后为所有剩余请求提供index.html.例如:
// serve all asset files from necessary directories app.use("/js", express.static(__dirname + "/app/js")); app.use("/img", express.static(__dirname + "/app/img")); app.use("/css", express.static(__dirname + "/app/css")); app.use("/partials", express.static(__dirname + "/app/partials")); app.use("/templates", express.static(__dirname + "/app/templates")); // any API endpoints app.post('/api/v1/auth/login', routes.auth.login); // serve index.html for all remaining routes, in order to leave routing up to angular app.all("/*", function(req, res, next) { res.sendfile("index.html", { root: __dirname + "/app" }); });