2012-03-24 28 views
6

兩個很好的例子是googlefacebook使用Javascript生成的網站的優點/缺點

我最近在思考這種方法的動機。我最好的猜測是它幾乎完全分離了你的後端語言和標記之間的邏輯關係。構建一個以JSON格式發送的數組似乎是維護代碼的一種整潔方式,但我在這裏還缺少哪些其他元素?

這種方法的優點和缺點是什麼?爲什麼這樣的大型公司會這樣做?

+1

我認爲這會更適合[程序員.se] – zzzzBov 2012-03-24 18:53:28

回答

2

最主要的缺點是你的網站內容索引有一些問題。

對於Google來說,您可以通過使用Crawling方案解決問題。 Google支持抓取,可以動態(無頁面重新加載)生成頁面內容。

要做到這一點你的虛擬鏈接必須是這樣的地址:http://yoursite.com/#!/register/。在這種情況下,Google請求http://yoursite/register/來索引地址的內容。

點擊虛擬鏈接時,沒有頁面重新加載。您可以通過使用的onclick提供這樣的:

<a href='http://yoursite.com/#!/register/' onclick='showRegister()'>Register</a> 

虛擬優點是頁面的內容改變,而頁面的重裝。在我的練習中,我不使用Javascript生成,因爲我在固定位置構建了我的界面。當頁面重新加載用戶沒有注意到任何事情時,因爲接口的元素出現在預期的地方。

所以,我認爲使用動態頁面生成是一個很大的痛苦。我認爲谷歌並沒有將標記和後端分開(這不是一個真正的問題,你可以使用後端前端的複雜結構來做到這一點),而是爲用戶使用方便和好的代表性優勢。

1

優勢

  • 視圖狀態保存在客戶端上(除去了服務器負載)
  • 頁面局部刷新
  • 服務器並不需要了解HTML這導致了面向服務的架構

缺點

  • 書籤(URL中的狀態)是很難實現
  • 使其成爲搜索仍在進行中
  • 工作需要一個單獨的計劃,以支持非JS用戶
0

我沒有100%理解你的問題,但我會盡力在這裏...

Google和Facebook都在其所有網站和產品中廣泛使用JavaScript。網絡上的每個主要網站都使用它。

JavaScript是用來修改網站的行爲技術。
HTML =>定義結構和元件

CSS =>定型元件

腳本語言=>動態地生成元件和與數據

填充它們的JavaScript =>修改所有上述的通過與相互作用DOM中,對事件作出響應,以及造型元素的飛行

這是「辦法」爲你今天打電話給每一個網站的網頁上。沒有其他選擇JavaScript/HTML/CSS。您可以更改使用的數據庫或腳本語言,但JavaScript/HTML/CSS是一個常量。

+0

哈..是的我是一個Web開發人員。我的問題是大規模網絡應用程序的這種方法的優點/缺點?而不是讓php通過MVC風格的體系結構生成輸出。這是一個更標準的方法,所以我想知道爲什麼Facebook /谷歌選擇這個非常JavaScript的方法。 – grep 2012-03-24 19:05:14

+0

嗯,我在這裏完全猜測,但我會假設他們實際上正在使用MVC架構與大量的JavaScript結合在一起。實際上,backbone.js,一個適用於你的javascript的MVC框架,正變得非常受歡迎,因此許多站點都有兩個MVC框架在工作。但是不管你的後端是什麼樣的,你仍然需要javascript,如果你想要像AJAX那樣的任何'活潑的'頁面應用程序樣的UI東西。沒有服務器端技術可以取代它。你需要客戶端技術來獲得所有可愛的用戶界面,而這將是JavaScript。 – JLH 2012-03-24 19:11:16

+0

我只是認爲這種方法有點打破了你的典型MVC。我的意思是,它幾乎消除了對視圖的需求。只是JSON。 – grep 2012-03-24 19:13:45

0

考慮一個簡單的形式驗證的例子...

客戶端發送請求到服務器...服務器將執行包含驗證邏輯服務器端代碼和在響應...服務器將將結果發送到客戶端....

如果客戶端具有執行能力/過程(可以在客戶端側執行...)的形式...(執行驗證)..客戶端不需要向服務器發送請求...並等待服務器響應該請求...

+0

你需要在服務器上驗證,所以這不是最好的例子 – 2012-03-25 15:34:43

0

我建議你看看谷歌網頁速度最佳實踐http://code.google.com/intl/it-IT/speed/page-speed/,看看是什麼因素,使一個良好的網頁...使用JavaScript生成頁面似乎很酷,因爲分離的UI和邏輯,但它是在實踐中完全沒有效率