2012-04-09 40 views
22

我一直在尋找各種RIA,並已注意到一些人使用或要求JavaScript Routing。通過瀏覽它,'JavaScript路由'看起來就像穿越你的網站的一種方式......但我可以使用一個簡單的鏈接。這意味着我絕對'不明白'。JavaScript Routing爲您提供什麼?

所以...

  • 是什麼路由提供給您的是一個普通的錨或鏈接不?
  • 僅適用於特定的環境嗎? (即ASP.NET或直接HTML)
  • 這是幹什麼用的?
  • 什麼目的驅動它的存在?
+0

出色的措辭。 – orbfish 2014-10-30 22:09:26

回答

47

路由是一種組織和管理應用程序狀態的方式。 JavaScript中的路由框架可幫助您更改應用程序的狀態 - 可能從一個管理面板部分移至另一個管理面板部分 - 同時保持應用程序持久性

如果您想要從一個應用程序狀態(例如, /admin/users,另一個例如/admin/orders,你可以使用正常的鏈接,如你所建議的。但是,然後你會讓瀏覽器從一個HTML頁面導航到另一個。顯然,這是一種在網上瀏覽的正常方式。但在一個JavaScript應用程序中,這是非常低效的!

如果您在JavaScript中運行一個複雜的瀏覽器內應用程序,那麼該應用程序在啓動時需要做很多工作。它註冊事件處理程序,加載並執行一堆JavaScript,並且有時會動態地呈現整個頁面接口(在ExtJS和其他一些庫中)。對於瀏覽器來說,在/admin/orders上建立一個JavaScript應用程序有很多額外的工作,它與/admin/users有很多共同之處。更有效的方法是鏈接觸發應用程序監視的事件,並通過更改應用程序的狀態來響應應用程序 - 可能通過刪除或隱藏用戶視圖並用訂單視圖替換它。路由是一種表示這些不同接口的方式,使用一個令牌(通常是一個URL片段,如/admin/users)來跟蹤用戶在界面中的位置。

這允許應用程序維護動態對象模型,它已經燒了時間並使用內存創建。它使用戶界面響應更快,並且,如果您通過hashtag或pushState使用URL歷史記錄管理,它允許用戶使用瀏覽器的後退和前進按鈕導航應用程序,而無需重新加載每個資產頁面每次擦拭您的應用程序狀態。 URL管理還允許深層鏈接到應用程序中的某個頁面:在加載時,您的應用程序的路由器檢查它接收到的路由字符串,將其標記並加載您在路由表中指定的接口。

路由不是要求爲了管理持久性,但它是組織持久狀態的好方法。通常,路由系統與URL歷史管理結合在一起,就像Davis.js一樣。但也有一些路由庫不會與URI混淆,它們保持抽象的標記化狀態,您可以使用或顯示您認爲合適的狀態,如​​。

+0

哇!我現在完全明白了! – 2012-04-09 17:30:28

+0

因此,顯然,這不會用在ASP.NET MVC或SharePoint應用程序中......對吧? – 2012-04-09 17:37:32

+1

SharePoint,可能不是。 SharePoint管理自己的標記,所以你不會做這種以前端爲中心的工作。可以想象,ASP.NET MVC可以用作基於JavaScript的RIA的服務器端技術,所以答案是「可能」。關鍵問題是您是否正在運行單頁JavaScript應用程序。 – zetlen 2012-04-09 18:40:13

相關問題