2011-05-24 78 views
20

通常當我放在一起動態生成的HTML標記,我一直在使用PHP來存儲信息,然後通過循環創建頁面上的元素。一個例子是導航;創建一個對象數組,然後遍歷它們以回顯標記。在開發或維護過程中,我可能不得不做很小的(或主要的)更改,這對我有很大的幫助。PHP VS JavaScript進行動態HTML頁面

最近我一直在想我是否應該使用JavaScript來做到這一點。原理相同,但使用addElement。

只是想得到一些意見,優點,缺點,PHP VS爵士,搜索引擎優化的考慮,等等

謝謝鄉親!

+1

感謝大家對他們的意見。這有助於證實我的懷疑,特別是在搜索引擎優化。堆棧溢出FTW! – Eric 2011-05-24 13:42:10

+0

看起來,儘管在這裏達成共識,JavaScript仍然是現在的走向(Angular,React等)。對於沒有人提到的JavaScript的一個重要的專業人員,沒有頁面重新加載,從而帶來更好的用戶體驗。 – 2016-05-18 19:25:25

回答

4

這不是一個或其他類型的情況;一般來說你需要做兩個。

做它的客戶端可能會慢一些,因爲服務器仍然需要找出所有的數據,但客戶需要以使其;這將涉及多個請求(很可能),並且DOM操作很慢(特別是在較舊的瀏覽器上)。

1

如果SEO是你關心的事情很簡單:JS沒有編入索引。

也有UI的問題:如果未啓用JS,JS無依賴的東西會加載。

40

做它的客戶端是指:

  1. 做這在許多不同的環境,而不是單一的一個
  2. 具有打破它,每當用戶走來沒有JS(無論何種原因)
  3. 有它不能爲絕大多數機器人(包括搜索引擎)
  4. 投資開發時間將所有的邏輯
  5. 要求瀏覽器進行額外的請求工作服務器,減緩加載時間

在決定是否應該做一些客戶端,而不是服務器端,作爲一個經驗法則問自己兩個問題:

  1. 將從中的即時用戶受益迴應他們在做什麼?例如他們嘗試提交的表單中的數據不正確的錯誤消息。如果是這樣,那麼做客戶端將是有益的。
  2. 可以做服務器端嗎?如果是這樣,首先做服務器端,因爲它更可靠(並且非美化的東西,更難以干預)。 Build on things that work
+2

我的經驗法則是「做盡可能多的服務器端」。 JS僅用於漸進式增強。任何人,很好的答案。 +1 – mpen 2011-05-24 06:30:30

+0

@Mark - 是不是我說的? :) – Quentin 2011-05-24 06:47:52

+0

+1,很好的答案,比我的更詳細和深思熟慮。 – 2011-05-24 06:59:31

4

最好的做法是產生在服務器端進行必要的標記。原因包括:

SEO:大多數爬蟲機器人不會解析Javascript,所以他們會跳過任何關鍵的東西,你用addElement生成。

無障礙:您的網站應該基本功能沒有JavaScript。考慮那些可能在Kindles,老黑莓,諾基亞或其他帶數據的功能手機上瀏覽您的網站的人。他們不需要所有奇特的風格和效果,但他們至少應該能夠繞過你的網站。

一致性: JS可以添加另一個級別的跨瀏覽器可變性。爲什麼依靠客戶端渲染必要的標記?做服務器端。

當然,這個建議可以,如果你正在開發一個全JS桌面應用程序或使用類似的Sencha Touch框架內採取大步。

0

一種可能性是檢測什麼樣的用戶正在瀏覽您的網站:

  • 如果它是一個機器人:解析在服務器端,你可能只是輸出由機器人所需要的,不圖形化的東西,...

  • 如果它是一個移動:顯示爲手機優化的版本,使用類似煎茶觸摸,查理指出

  • 如果它是一個標準的瀏覽器,無javascript:在渲染頁面服務器 側

  • 如果它是一個標準的瀏覽器,使用javascript可以實現:只需發送從服務器端的數據(或使用Ajax加載),從客戶端和呈現數據

您可以使用的東西像Mustache,至極是許多服務器端語言(PHP和Ruby,Java的模板引擎運轉......也於JavaScript,可實現客戶端頁面渲染!

,並嘗試使用一個JavaScript框架喜歡jQueryMootoolsDojoExtJS,他們會幫你寫將在每個瀏覽器上運行的代碼。

+0

使用這些「框架」只會讓您的代碼在少量的新興瀏覽器上運行。當然不是「每個瀏覽器」。儘可能多地使用服務端邏輯和緩存靜態(或大多數靜態)頁面。 – RobG 2011-05-24 07:25:22

+0

他們中的大多數人都支持舊瀏覽器,對於我使用jQuery嘗試的方式,它工作得非常好。 並希望我們很快就能夠扔掉IE6 ......(我知道它不是唯一一箇舊瀏覽器......但肯定是最醜的一個......) – ygosteli 2011-05-24 08:13:16

0

PHP是好一些事情,包括把手類型模板,並快速的服務器端內容替換。但它對於一些事情也不是很好,比如單頁應用程序和遊戲,實時更新網站。這些東西都是JavaScript強大的地方。

+1

請您詳細說明這些差異嗎? – 2014-10-24 01:12:37