2016-09-06 24 views
-3

我們都知道,如果我們希望瀏覽網站而不必每次都重新加載頁面,那麼Ajax請求可以非常方便。但我想知道Ajax是必要的嗎?假設我有一個帶有3個選項卡的SPA作爲我的導航欄。一旦被點擊,每個選項卡應向頁面主體顯示不同的內容。 什麼阻止我呈現所有三個選項卡的整個頁面標記,並將每個選項卡主體設置爲不可見。然後取決於被點擊的標籤,我顯示該標籤正文並隱藏當前的(如果有的話)。 據我所知,這對於每個標籤內容都有一個明確的資源來說是非常糟糕的,但是我不會用Ajax做到這一點? 另外,我們假設主體內容不是很重的內容,可以快速加載,並且不會在首次加載時花費很長時間。 此外我想補充說,不涉及POST或其他請求。用戶不能進行交互而不是對內容進行GET操作。通過可視性而不是Ajax更改HTML內容是不好的做法

我希望這是有道理的。 Ajax的優點是什麼,而不是簡單地顯示/隱藏JS的內容?

+0

它的良好做法。總是問自己,如果它會使用戶的頁面加載速度更快。不過,不要預先加載20 MiB的內容。這裏有一些更多的想法:https://developers.google.com/speed/docs/insights/rules – C14L

+2

不好的做法?良好的做法?都不是。這是您需要根據您的需求,目標受衆以及內容大小制定的決策。 –

回答

1

Ajax不僅僅是SPA渲染。這只是一個小用途。如果從用戶發佈新內容怎麼辦?那麼,它可以在沒有頁面刷新的情況下處理。這個更新如何在其他地方看到,而不刷新頁面?阿賈克斯。簡單地說,一次渲染所有內容,就像你說的那樣,一切都很好......直到新數據通過。這仍然只是一個原因。

另外,如果用戶不需要查看另一個「選項卡」呢?現在是浪費時間來渲染它。所以請按要求渲染它。

正如您在評論中所說的,也許您的具體情況確實意味着AJAX幾乎沒有用處。這實在不是一個好的做法。這是我需要的事情。

+0

我同意你的觀點,但我真的在談論這個沒有內容是動態的特定情況,只涉及獲取請求。 – supersize

1

這取決於有多少內容隱藏在其他兩個選項卡中。另外,你有多確定你的SPA只有3個標籤?或者選項卡將包含特定數量的數據?

如果它只是一些文本,你肯定它不會等到很久以後,那麼它可能會更好地卸載所有一次,並切換到標籤的點擊。

此外,確保img標籤在隱藏時未被指定src屬性,因爲您的瀏覽器在需要之前會請求它。點擊標籤後指定src屬性。

所以只要你確定你的標籤中有少量的數據,就不需要從服務器獲取新鮮的內容,並且在實際查看標籤之前保持圖像不被加載,我認爲ajax加載是不必要的。一個簡單的fadeToggle應該就足夠了。它會帶來更好的用戶體驗。

相關問題