Ajax能夠實現網頁部分內容刷新,那麼頁面跳轉的意義在哪?
Ajax能實現在網頁內局部動態刷新頁面,但是為何頁面跳轉這種方法還存在?這樣子的意義是什麼?
不完全同意 @catbaron 的觀點。
實際上有一種技術叫 PushState,結合 Ajax,可以實現不刷新(或者像題主說的不跳轉)來修改頁面內容(Ajax),同時地址欄的地址也會有相應的改動。Coding 網站裡面的導航用的就是這個技術:Coding - 讓開發更簡單!
(Ps:要登陸進去才能體驗到)
當然,就像 AngularJS 一樣,Ajax+PushState 並不適合應用於所有網站,主要原因是開發成本會提高,同時對SEO不友好。SEO
目前流行的 one page (mvvm) 都已經是這種了。跟你說的最像的 貌似就是jquery mobile了。我就說我們在寫我們自己的one page框架的時候,用戶反饋的問題吧;
1: dom ready事件 解決
2:download 鏈接你怎麼解決?3:如果是視頻網站 用戶真的想同時看視頻 同時找新聞 怎麼做 還得依賴_BLANK4: seo你怎麼解決?。。。。。。。ajax代替傳統跳轉未嘗不可,不僅僅局部刷新,全頁刷新都沒問題。用js實現一個前端基於ajax的mvc已經不算是新技術了。把mvc的邏輯交給客戶端,伺服器就負責api回傳json。
如下的請求都是基於http://mysite/index.html。
http://mysite/#login
http://mysite/#search-keyword
http://mysite/#article-123
通過瀏覽器onhashchange事件來捕獲路徑變化,JS控制ajax請求然後更新view。現代瀏覽器都已經支持這種hash地址的前進後退了。
回答題主的問題,這種情況下傳統跳轉還有啥意義呢?
我覺得最大的意義應該就是搜索引擎的錄入。所以整站式ajax不適合基於內容的網站,適合數據操作頻繁,交互過多的後台應用。
有種場景就非常需要ajax技術,比如頁面有音樂在播放,而我又想看其它頁面的東西。
如果沒有ajax,頁面跳轉音樂就斷掉了。
如果新標籤打開,標籤就會太多,而且用戶也要去管理標籤。如果用iframe ,就不利於SEO。而且頁面跳轉的過場動效也是必須依賴ajax的。
但我們不能放棄傳統跳轉,ajax是依賴js實現的,沒有js的時候,還是要傳統跳轉的。頁面跳轉什麼作用?跳到外站啊,知道什麼叫廣告么。
另外,沒有這個怎麼進你的網站,你逗呢?ajax好處就是極大的復用html,同一段html模板,可以載入數次數據,而不用耗費流量和帶寬。這就是所謂的spa,single page application。載入一次html,其餘數據都用json封裝,每次請求只是數據交換,模板放在前端,由js操作數據並載入。缺點就是,不能跨域- 搜索引擎不會管你的局部刷新的。
- 對於複雜的頁面,局部更新可能要比刷新頁面重新從資料庫抓信息的開發成本要高。
- 沒有一個URI,你每次都要從首頁一點點的去找你要的內容嗎?
Ajax技術其實是一種hack手段,用javascript來模擬一個瀏覽器的工作行為。如果你願意,你確實可以用Ajax來完成網站所有頁面之間的跳轉,實際上在部分特殊效果的需求驅動下,有些網站確實是這麼做的。但是你這麼做實際上就是,把瀏覽器的工作重新實現了一遍。嗯我覺得可以算是「重新發明輪子」吧,甚至是「重新發明橡膠鋼材以及內胎外胎以及把這些東西組成輪胎的技術」。1. 理論上Ajax可以取代傳統的頁面跳轉,但是這種取代毫無意義。因為Ajax本身的意義是局部數據的請求,通過Ajax可以在不更新整體頁面的前提下,更新部分頁面的數據,這樣一來可以降低伺服器的壓力,並且縮短用戶的等待時間(畢竟瀏覽器不用重新渲染頁面)。如果你把這個技術用來做整體的頁面跳轉,那和用現在的頁面跳轉有什麼區別?2. 也許你的意思是,以後不再用頁面跳轉,全部都改成Ajax的局部數據更新。嗯,聽起來挺不錯,算是很新的想法。但是仔細推敲一下,現在的局部相對於整個頁面,和現在的頁面相對於網站,關係不是一樣的么。類似於你看書對吧,有時候你需要一頁一頁看,有時候需要一章一章的翻閱不是。而且如果全部都用局部更新的手段,對於網站來說,傳統的內容組織方式也需要做相應的變更。這需要更多的技術成本,來使網站的內容布局適應all-Ajax的方式。對於移動端也許還好說,對於大屏幕設備下的web頁面來說,有點蛋疼。3. 取消傳統的頁面跳轉,也就意味著沒有了傳統的頁面。這對於用戶的使用習慣也是個挑戰。最簡單的例子,你沒辦法再使用書籤管理功能了,也不存在前進後退了。對很多用戶來說這都是不可容忍的。4. 一項技術問世總是帶著使命的,我覺得最好先了解一下它使為了解決什麼問題被發明的,然後看一下這個問題和你要解決的問題之間的關係,大概就知道這個技術能不能用了。就題主的問題來說,Ajax是為了解決局部數據更新問題,而你的問題是整體數據更新。剛好是相對的,不是么。
有種kpi叫pv
為了seo啊
傳統ajax是無法產生歷史記錄的,而且當涉及到大面積刷新的時候,通常用傳統的交互方式會更好。題主可以了解下 pjax還有angular裡面關於路由方面的內容。 ps: 還有萬惡的SEO啊!!!
局部刷新和全部刷新
推薦閱讀:
※谷歌瀏覽器點擊鏈接時經常會出現自動下載?
※火狐瀏覽器(Firefox)有哪些體驗不好的地方?
※我想問一下,為什麼瀏覽器非要用flash插件呢,為什麼本身帶有flash程序,非要用插件?
※Chrome一直提示「adobe flash player 因過期而遭阻止」 ,如何解決?
※各種瀏覽器的隱私/無痕模式能否真的能夠解決隱私問題?