故事:
我使用2個GET方法創建了一個ExpressJS應用程序。第一個用於渲染index.html,另一個用於返回JSON模擬數據。ExpressJS - 返回不同結果的GET方法
問題:
打開URL上的瀏覽器,將(果然)返回一個JSON虛擬數據,應用程序不斷渲染我的index.html。
依賴關係:
「角度」: 「^ 1.5.8」
「角動畫」: 「^ 1.5.8」
「角詠歎調」: 「^ 1.5.8」
「angular-material」:「^ 1.1.3」
「angular-messages」:「^ 1.5.8」
「angular-sanitize」:「^ 1.5.8」
「angular-ui-router」: 「^ 0.4.2」
「ejs」:「^ 2.5.6」
「express」:「^ 4.15.2」
代碼:
app.js
var express = require("express");
var app = express();
var port = 3000;
app.engine(".html", require("ejs").__express);
app.set("views", __dirname + "/views");
app.set("view engine", "html");
app.use(express.static(__dirname));
app.get("*", function(request, response) {
response.render("index");
});
app.get(「/get-mock-data」, function(request, response) {
var mockData = {
「name」 : 「Michael Ardan」,
「gender」 : 「M」,
「birthday」 : 「2017-01-01」,
「other_details」 : 「chubby」
};
response.send(mockData);
});
app.listen(port, function() {
console.log("Listening on port " + port);
});
我的棱角,app.js
angular.module(「TestApp」 , [
"ui.router",
"ngMaterial"
])
.config(function($locationProvider){
$locationProvider.html5Mode(true);
})
.config(function($stateProvider, $urlRouterProvider){
var homeState = {
"name" : "home",
"url" : "/home",
"templateUrl" : "views/home.html"
};
var aboutState = {
"name" : "about",
"url" : "/about",
"templateUrl" : "views/about.html"
「controller」 : 「AboutController」
};
$urlRouterProvider.otherwise("/home");
$stateProvider.state(homeState);
$stateProvider.state(aboutState);
});
其他詳情:
- 我試圖改變
app.get("*", function(request, response) {
response.render("index");
});
到
app.get("/", function(request, response) {
response.render("index");
});
,而這個工作對我來說,我不能在瀏覽器訪問http://localhost:3000/about直接。相反,服務器繼續返回「無法獲取/約」。我必須從http://localhost:3000訪問該頁面並從那裏單擊關於。
[與快遞角HTML5模式]的可能的複製(http://stackoverflow.com/questions/31778324/angular-html5-mode-with-express) – Jorg
雖然問題看起來類似於你發佈的那個,我仍然認爲這個問題與不同的接受答案有所不同。作爲我的「其他細節」的一部分,我對你提到的問題提出了答案,但它並不奏效。你可以查看我接受的答案,看看答案各不相同。 –
我也注意到了路由的順序,但是我認爲:當你調用'/ about'時不應該是一個問題,因爲它不會被'/ get-mock-data'抓住。也許我錯了。 – Jorg