2015-07-20 78 views
0

我目前的設置如下: enter image description here如何使用快遞呈現模板?

啓動服務器,並打算爲localhost帶我到home.ejs這裏陳述(在我的前端路由):

enter image description here

然而,當我去本地主機:3000 /職位,帖子模板是事實上沒有被注入到我的索引文件(我的UI視圖是)。我一直在跟隨思想家的平均堆棧指南,但一直在做一些改變(不使用內聯模板)

我的問題是,我如何設置我的路由,使本地主機:3000 /職位將實際帶我到帖子頁面?

回答

0

您正在處理兩種類型的路由,客戶端和服務器端。客戶端位於您的角碼中的app.config函數中。該函數應該調用位於公共目錄中的html文件。這些文件不是通過快遞呈現在服務器端,而且也不能讀取ejs格式。

通常,使用MEAN堆棧應用程序時,您只需在用戶登錄時呈現索引文件,然後從那裏使用Angular路由器接管html文件,並從那裏處理您的路由。如果你不想Angular路由,你必須設置你的index.js文件來渲染頁面,因爲它們被稱爲res.render('posts')

你可以改變你的posts.ejs文件到一個html文件,只要用戶導航到本地主機/#/帖子(取決於您的版本和Angular配置),就可以通過Angular調用它。

您的Express服務器端路由將按照您在index.js中定義的方式處理您的API調用。爲了調用這些API,您將通過服務或工廠通過Angular的$ http方法發出GET或POST請求。

希望幫助,如果沒有,讓我知道,我可以詳細說明或提供示例。

+0

這就是我一直在尋找的,因爲這麼久!服務器端和客戶端路由之間差異的深入解釋。現在,我真的明白了它的不同之處,我會試試它,然後我會回顧一下它的發展方向。謝謝! –

+0

我改變了我的路由器看起來像這樣http://puu.sh/j6lJZ/10fb3917e4.png 並將文件更名爲posts.html,但即時通訊仍然收到此錯誤: http://puu.sh/j6lFW/ 0e6d9fa217.png –

+0

接收到錯誤時你在做什麼?你的索引頁面渲染是否正常?您應該能夠導航到localhost /#/ posts並且角路由應該接管,您可能需要將該html文件移動到前端可以看到的文件夾中。你還應該確保你的app.js文件中有這樣的行app.use(express.static(__ dirname +'/ public')); –

0

爲了解決這個問題,我使用了Eric Hartmanns解決方案。通過將posts.ejs更改爲posts.html,並讓角路由器接管客戶端,頁面正在呈現。但是,在地址欄中輸入localhost:3000/posts時,頁面不會呈現,並且由於某種原因導致服務器被擊中。爲了解決這個問題,我簡單地在快遞和重新呈現的索引中創建了一條新的獲取路線,只要該路線如下所示:

router.get('/', function(req, res) { 
res.render('index'); 
});