2010-11-20 35 views
1

我已經開始編寫一個基本上基於Web的發票計劃的小編程項目。我會希望它可以從智能手機使用。 我已經決定了Perl - Dancer-Moose-Kiokudb的後端,我現在很滿意(是的,我知道已經有一些了)。針對Web前端的某些體系結構決策尋求意見基於Ext JS的

我現在想做出一個選擇了該項目的表現層。最初我認爲傳統的html模板,頁面按功能類型排列。昨晚我開始看着Ext Js/Sencha。這看起來非常整潔,我可以看到它如何能夠像一個發票應用程序一樣做一個很好的前端。我想得到的一些想法是處理表單生成的理想方式。 當我看到它,我有一對夫婦與Ext JS的(或道場或任何這些類型的框架的) 1.我可以各種形式直接編碼成JavaScript文件選項,這似乎是路由最演示的起跳。但是,當我用HTML編寫HTML代碼的時候,用Javascript編寫html表單似乎很尷尬?我錯過了什麼嗎?

  1. 我可以動態生成數據的形式,這意味着我需要存儲元數據鏈接到我可以在穆斯使用特徵進行數據。但是,你如何處理諸如顯示順序之類的東西而不會變得凌亂?關於用數據對象存儲顯示元數據的想法是什麼?

  2. 我仍然可以使用HTML模板生成的形式和使用的Ext JS來增強這些,這似乎並沒有被Ext JS的鼓勵,雖然它是可能的。

有一件事我會說在Javascript中完成所有的顯示工作確實提供了將表示層與其餘代碼完全分開的機會。

對你認爲最好的觀點有何看法?

回答

2

我已經寫了幾個大的網絡應用程序與基於Ext JS的表示層(它們都使用ASP.Net服務器端)。我的第一個應用程序是作爲傳統的HTML編寫的,並且在客戶端使用Ext Js進行了增強。這裏的理論是,一些最終用戶可以利用該選項在沒有JavaScript的情況下執行。事實上,這從來沒有發生過。當然,這不是Amazon.com風格的網站。

接下來的幾個應用程序幾乎放棄了HTML。我們對擁抱「非標準」表示層有一些擔憂。但是,設計Ext佈局非常簡單。我們發現非程序員可以查看一個Ext佈局(它只是一個JavaScript對象)並理解大部分內容。動態加載新的JavaScript文件也很容易;所以我們可以自然地開發應用程序。

目前,我們有傳統的ASP.Net頁面(登錄,致命錯誤,等等)的屈指可數,而在C#中的控制器層。從JS到C#的管道只需要一個ASP.Net頁面。表示層的其餘部分在Ext Js中完成。我們實際上利用這種設計來創建我們其中一個應用程序的脫機應用程序。爲此,我們只需要替換少量的ASP.Net頁面(我們可以重用100%的Ext Js代碼和100%的C#代碼)。

我們討論了使用元數據生成表單,但是決定不使用元數據。我們決定維護元數據和各種生成器可能會變得比只用手寫代碼更大。

+0

這真是太好了哈利,我希望的那種回答,一種基於經驗的回答。你的方法確實似乎在前後端之間給出了一個非常乾淨的休息。我欣賞你的迴應。 – code4pay 2010-11-21 04:55:31

0

我沒有用過Ext中,但我必須建立與POE::XUL動態應用程序的框架。所有表單都是由一系列YAML配置文件生成的,其中還包含有關給定元素如何與後端連接的元數據。雖然我沒有將XUL的全部功能提供給表單設計師,但這可以看作是一件好事。

當時,我認爲需要Firefox或xulrunner作爲內聯網應用程序纔是可以接受的。事實證明,PHB真的很喜歡他們的MSIE。但是,當我開始編寫框架時,Ext並不是真正的選擇。

有些觀點很快我希望重構框架,以便它可以與所有瀏覽器一起工作,很可能在瀏覽器中使用Ext Js。由於我的目標是內聯網應用程序,因此說「你必須啓用JS」是可以接受的。

通過在YAML中定義我的表單,我將能夠將爲XUL-only框架編寫的所有應用程序移動到Ext框架,並且他們應該可以正常工作。

但是編寫元數據驅動框架是一個更高級的問題。你沒有指定你的技能水平。如果你只是初學者,我會建議pure-Ext在瀏覽器中將cometd引用到後端。

+0

感謝Leolo,我曾考慮將元數據放在第三個存儲庫中,以便我可以將它用於前端和後端。作爲例子,我可以使用YAML配置來驗證後端的數據(儘管穆斯否定了這種需求)。想想看,雖然如果我要從頭開始實現它,也許我應該將它存儲爲Ext可以直接使用的JSON格式,但理論上我仍然可以解析Perl對象以用於後端。 – code4pay 2010-11-21 05:40:43

+0

是的,JSON是個好主意。不過,與YAML相比,JSON對於設計師來說可能更容易搞砸。我發現你需要在文件foo.yml的第XX行出現「這樣的錯誤」,以便讓他們弄清楚。 – Leolo 2010-11-21 05:52:29

0

不知道是否可以添加另一個選項,但dojo允許您使用HTML構建表單,然後將它們轉換爲瀏覽器中的dijit(dojo小部件)。

相關問題