2009-09-02 16 views
5

現在,Web應用程序廣泛使用Javascript,例如Gmail和Calendar等各種Google產品。正在處理JavaScript服務器端的重複邏輯的解決方案?

我正在努力如何不重複邏輯服務器和客戶端。

當請求一個頁面或應用程序的狀態時,我寧願發送完整的用戶界面,這意味着:不只是一些JavaScript,這反過來又造成了一打AJAX請求,並建立用戶界面。

但是這裏存在問題,決定要顯示或不顯示的邏輯必須在服務器端寫入一次,而在客戶端語言中寫入一次。

然後我想知道是否有可能處理您的JavaScript邏輯服務器端並將整個發送到客戶端,而客戶端又可以繼續使用具有響應ui的所有優點的應用程序,但沒有缺點由於後臺ajax請求的依賴性,用戶界面的初始加載/構建。

我希望我的問題的解釋有點清楚,因爲我不是最流利的英文作家。如果你明白我的意思,如果你能更好地描述問題,請做...謝謝!

所以我的問題是:

  • 是這樣的可能和現實的還是?
  • 對於如何解決這個問題你有什麼看法?

;-)

回答

2

當我們開始我們的網絡應用時,我們遇到了同樣的問題。
它可以幫助你知道我們是如何結束:

  • 後端(業務邏輯,安全性)完全從前端分離(GUI)

  • 前端和後端通過JSON服務專門

    溝通
  • 的JSON呈現的客戶端與所述模板PURE

  • 和後端我š二郎(任何流JSON將是確定了,但是我們喜歡它的功率)

而對於你的問題,你必須考慮的瀏覽器完全不安全。
所有的安全邏輯必須來自後端。

隱藏或顯示屏幕客戶端的某些部分是可以的,但肯定後端會決定將哪些數據發送到瀏覽器。

+0

好的建議... – 2009-09-07 14:00:34

1

看來你描述Jaxer。你可以寫在JS的一切。
此外,還有GWT,允許在Java上編寫整個東西

+0

這很奇怪,但很有趣。你是否使用過傑克斯?你覺得怎麼樣? – 2009-09-02 12:58:10

+0

Idd GWT是谷歌對這個問題的答案... – 2009-09-02 13:11:19

+0

不,我沒有。這真的很有趣,我打算在最近的將來嘗試Jaxer(所有JS MVC嗡嗡聲都是爲了後端,我想需要一些檢查)。據我瞭解,這不是很快。你知道JavaScript不是快速的技術,所以不要計劃任何大的事情。 – 2009-09-02 13:24:17

0

我明白你在說什麼。

但我不認爲你應該在客戶端有什麼要構建什麼「邏輯」。如果你確實想用一種模式去推薦(不是我的一杯茶,但爲什麼不是),我不明白爲什麼你最終會得到很多重複。

您通常會在哪裏顯示tablediv,您只需輸出JavaScript即可在客戶端構建相關組件。

我認爲它只是另一個'查看'到您的數據/業務邏輯模型。

你有沒有去一個你遇到的問題的小例子?

+0

嗨,好idd大多數網站,像stackoverflow是數據爲中心,並沒有真正有這個問題,但如果你想建立像桌面上使用的'真正'的應用程序,如谷歌文件等,需要堅持一切,我仍然不確定最好的方法是什麼,這個問題的原因。 txn btw – 2009-09-02 13:16:32

1

然後我在想,如果它在某種程度上 可以處理你的JavaScript 邏輯服務器端和發送整個 給客戶,誰又將可以 繼續使用該應用程序與 所有的優點響應UI, ,但沒有 的缺點 用戶的初始加載/建立 接口由於依賴的背景 ajax請求。

也許你正在看的應用程序只是使用Ajax很差。

您可以在服務器上預處理的唯一內容是您已知道用戶需要的的內容。例如,在電子郵件應用程序中,只要他們登錄,就可以向他們發送完整的收件箱視圖,在服務器上預處理並使用單個請求獲取。但是,您可能會使用AJAX來獲取特定消息一次他們點擊它。預先向他們發送所有消息將太慢。

正確使用,AJAX應該使您的頁面更快,因爲它可以在不重新加載整個頁面的情況下請求微小更新或更改內容。

但是,這裏存在問題,決定要顯示或不邏輯 在客戶端的語言是 在服務器端寫入一次, 一次。

不一定。例如,在PHP中,您可能會編寫一個像displayWidgetInfo()這樣的函數。您可以使用該功能在頁面加載時發送初始小部件信息。如果用戶單擊該小部件來更改某些內容,請將AJAX請求發送到也使用displayWidgetInfo()發送新結果的PHP腳本。幾乎所有的邏輯都停留在單一功能中。

你的直覺是正確的:重複代碼很不好,而且對一個頁面提出太多請求是不好的。但我認爲你可以通過一些重構來解決這些問題。

+0

一些很好的觀點,idd我使用ajax作爲響應更好的ui,因爲部分更新等,但是我豐富的web應用程序,真的很難保持邏輯獨立,讓我們的服務器必須邏輯按照正確的順序在頁面上放置某些小部件,然後客戶端也需要類似的代碼來處理小部件的重新定位...如果有點明白我的意思:-) txn btw – 2009-09-02 13:10:46

+0

我的天,這麼多錯字,我很抱歉,真的... – 2009-09-02 13:17:54

0

我這樣理解你的問題: 假設我們在網頁上有一個html表單。有一個名字和姓氏的字段。我們必須在客戶端(使用JS)和Sever端(在處理表單輸入時在php腳本上)檢查它的有效性。所以這裏是雙方的重複 - 正則表達式檢查。那麼如何防止它並梳理這些邏輯呢?