2013-02-23 120 views
4

快遞/路由服務於我的Backbone的應用index.html快遞路由器與Backbone Pushstate衝突

我在Backbone中使用pushstate,但Backbone應該處理的路由正在通過express處理,給出404響應。

如何設置快遞服務index.html,但委託其他路由到Backbone?

+1

您是否看過Backbone樣板所使用的解決方案? http://stackoverflow.com/questions/9328513/backbone-js-and-pushstate – WiredPrairie 2013-02-23 01:55:06

+0

@WiredPrairie只有在點擊錨時纔有效 – jviotti 2013-02-23 02:11:50

+0

如果客戶端直接訪問該路由,您仍然需要執行服務器端路由。即使它只是提供index.html;服務器必須知道如何處理它。 – 2013-02-23 02:16:42

回答

3

在這種情況下,你有多種選擇:

  1. 你可以有一個處理相同的路線爲客戶做,並返回相同的結果的服務器。這是很難實現,但它提供了一個很好的網址。 Github做到了。

  2. 總是返回index.html並處理路由客戶端。 (這有點難看,難以維護)

  3. 請勿使用pushstate。阿門。

+0

使用node/express,我怎樣才能完成第二個選項,將所有請求路由回index.html? – chandlervdw 2013-07-31 00:02:15

+0

你可以在你的路線中使用正則表達式。因此,我們可以說你想發送index.html來獲取你可以使用的所有請求:app.get(「/ *」,function(){...)})。我個人不喜歡這種方法,因爲你不能有任何其他的請求,但你可以有一個更好的正則表達式,並省略一些路線。 – 2013-07-31 05:10:39

+0

或者你可以使用res.format - 像你一直在做的那樣服務於json請求,但res.redirect將html請求重定向到根目錄http://stackoverflow.com/a/8928993/1094784 – Petrov 2013-08-19 22:21:18

1

您可以使用/ *方法。只要把它作爲最後的路線。這樣,其他路由(如任何服務API調用)將在匹配所有/ *路由之前匹配。這也是Backbone處理其路由的方式。