8

我正在研究GWT。看起來不錯,但我們的軟件必須在沒有JS要求的情況下工作。可能嗎?GWT沒有JavaScript?

回答

12

不,它不是。 GWT提供了一個窗口工具包,專門設計用於在客戶端上運行,而不是在服務器上運行。退化的(例如非JavaScript)代碼需要將完整的HTML傳遞給瀏覽器,而GWT根本無法完成。它將您的java代碼編譯爲一個傳遞給客戶端的JavaScript文件,並通過客戶端上的DOM操作構建UI。然後有一些代碼可以與服務器進行對話,一些是隱含的,一些是你自己寫的。這種模式不適合有利地退化。

稍微優雅地降級的唯一方法是提供第二個非JavaScript UI或使用另一個工具包,它不呈現客戶端上的前端,但提供HTML。抱歉。

+0

不夠公平。所以,GWT本質上只會創建js文件。 – Loki 2008-11-28 20:46:09

2

您可以通過創建一個「足夠好」的html結構(包括表單帖子,鏈接菜單等)來優雅地降級,然後將GWT附加到該結構的每個部分,從而增強其行爲。例如,使HTML動態下拉,使用打開lightbox的組件替換指向另一個頁面的鏈接,或者使用XML http請求替換另一個頁面的鏈接以執行相同的操作(例如投票)。

我爲客戶做了這麼多次。

這與大多數GWT開發的方式相反,但它可以工作。

2

我在設計我的網站時正在自己看這個問題。 GWT並不比編寫Javascript文件更好,因爲它們的語法幾乎完全相同。當您共享客戶端和服務器庫時,真正的好處就來了。希望在過去的兩年裏你已經解決了這個問題,但無論如何,這裏有一些你可能會覺得有用的例子。

創建Gmail:使用GWT,您可以在共享包中創建一個EmailFormatter,它執行電子郵件列表標記,以便您的服務器不需要。然後,您可以通過在服務器端使用相同的EmailFormatter類來添加對舊版瀏覽器(「舊版本」)的支持。

表單驗證:雖然從安全角度來說絕對有必要驗證用戶輸入服務器端,但對於大多數用戶來說,在提交表單之前讓Javascript檢查表單更爲方便。您可以使用與GWT相同的Java代碼來執行此操作。