2012-08-31 32 views
2

像我可以在HTML5中編寫一個模擬我們當前系統的業務實力應用程序,其中包含許多高度互動的網格,自定義樹等。對於商業應用程序,html5是否足夠強大?

我們有一個很好的工作系統,用C#WinForms編寫,並在WPF中完成了部分工作,並且最近開始爲通過WCF與我們的主服務器主機進行通信的iPad編寫定製應用程序。我們現在有一個用C#編寫的非常快速的自定義網格,它通過MonoTouch編譯爲Objective C,同時也是一個很酷的交互式餅圖。

現在我的老闆希望爲Android構建一個版本,我在想如果我們不應該花時間創建可以在iPad和Android等價物上運行的單個HTML5應用程序。

事情是 - 拿一個網格 - 我在iPad上的網格很快(可重用的單元格等) - 我將如何從HTML5中的'數據集'類型源創建一個網格?我是否真的必須創建大量標籤然後將它們提交給瀏覽器?第三方小工具如jqwidgets的答案?

由於

回答

2

這有點軼事,但我的經驗是,HTML5/JavaScript在移動設備上的速度還不夠快(2012年),特別是如果您顯示大量數據,尤其是您希望快速響應時間特徵。再給它一年的時間,如果隨着移動設備的不斷髮展,這個陳述變得過時了,我也不會感到驚訝。

當前移動web開發當然有其用途,例如,如果您想要使用單個代碼庫來定位大多數設備;如果你沒有足夠的開發資源並且願意爲非本土體驗做出解決;如果您沒有本地開發所需語言的經驗等等。

鑑於您已經完成了iPhone應用程序的工作,我的卑鄙觀點是,最好是繼續使用原生Android應用程序 - 在這一點上,您將得到一個更加快速響應的應用程序,用於大致相同的工作量。

我將如何創建HTML5中一個「數據集」類型源的網格?

根據網格包含的內容,您可以使用普通的舊HTML表格或使用CSS樣式的其他元素進行組合。儘管有很多更多的考慮 - 例如,它需要在小屏幕上(例如手機)還是在更大的屏幕(平板電腦)上工作。通常情況下,你不能在一個小屏幕上真正適合整個網格,所以你最終得到的是不再是真正的網格的UI。你可以看一下移動JavaScript框架,比如jQuery Mobile,看看他們是如何做到的,甚至可以考慮在你自己的應用中使用框架。

+1

現在獲取Android版本的時間和成本不僅僅是兩個代碼庫需要更新每個更改的持續支持成本。這是一種折衷,Native在一定成本下提供更高的質量和性能 - 是值得的好處嗎? – djna

+0

感謝您的快速響應和建議 - 網格查詢的真正原因是我有一個大的數據集與數據在內存中。我希望在網格中顯示這些數據。 iPad會回覆事件,告訴我它希望顯示行30到60,所以我只是返回它要求的那些行的數據。所以沒有一個大的呈現文本被提供給瀏覽器。這是一種非常好的編碼和思考方式....再次,我將如何在html5中顯示這些數據? – Marcel

+0

@djna - 不要忘記,我的iPad網格(如上所述)要求提供它想顯示的數據,我認爲這是一個fab編程模型。這將如何在html5中工作? – Marcel

0

各種JavaScript框架(例如jQuery和道場)具有相當高的質量的移動設備特定小部件。看看http://dojotoolkit.org/features/mobilehttp://jquerymobile.com/

這些接近於在ObjectiveC和Java中開發的本機應用程序有多接近?不完美,但也許夠好。您也可以在同一個應用中使用本機和HTML的組合,某些頁面原生一些HTML。我正在用IBM的Worklight做這樣的事情,但後來我會爲IBM工作;-)不管具體的產品,我都會看到人們採用這種方法。

除了可移植性以外,HTML中有很多應用程序的好處是可以在不通過應用程序商店的情況下交付更新的版本 - 這增加了功能性交付的靈活性。

+0

感謝您的評論 - 我當然會看看你推薦的網站。 – Marcel

0

作爲證據,我會說,很多Windows 8中的應用程序只是包裹JS/CSS/HTML,有幾個API的微軟用品以允許訪問硬件/文件系統哪個。

我不認爲他們已經走到儘可能使Excel 2013 JS爲基礎... ...但是,有了這些說法,他們竟然允許開發人員擴展他們的程序用applet查看數據 - 這些applet都將建立在「html5」上(再次使用MS-Office JS API)。

這不是一件容易的路走下來 - 人們期待的jQuery是他們對這類事情的救星。 這正是jQuery不會成爲你想要的地方,如果你正在尋找解決方案。 例如:

$(".table_cell").click(function() { alert(/*whatever*/); }); 

人們認爲jQuery是分配委託方聽包含class="table_cell"任何元素上的任何點擊。

這真的不是它在做什麼。 它循環遍歷每一個,並直接附加一個事件偵聽器。 這就是人們錯過的這些小東西 - 像Twitter這樣的人,他們並沒有打擾緩存對元素的引用,因爲jQuery非常容易將事物合併在一起。 那麼你就有JS在任何時候觸及(或作用於)幾十或幾百個單獨的元素。

這對任何人都不好。

jQuery是不是壞的 - 這是相當有幫助的,作爲一個低級別的結構,以幫助周圍的瀏覽器不同的裙子。 它的一些插件也沒事。 我不能保證他們都是高性能的答案。 但是,一些插件創建者瞭解如何保持響應和表現良好的程序。

哪些是適合您的需求?誰知道,除了你。

他們會完美,快速地執行? 當然,這取決於很多不同的事情。

來自C#,你可能會看看類似AngularJS。 Angular本身使用jQuery的內部版本來處理jQuery解決問題的一些低級的東西。但它允許數據綁定和非常簡單的視圖模板。 Hammer.js也是一個非常體面的手勢跟蹤庫。

從那裏,不過,我建議建立自己的框架,如果你想完成它,你希望它做的方式。 沒有人知道你的需求是什麼,但你,並試圖東西放入鞋盒,因爲它是可用的,並不總是解決方案,無論各種公司可能會認爲...

您可以將大部分節點工作到Angular,您可以將手勢感應留給Hammer,您可以從jQuery-lite(如果您的站點上沒有jQ,安裝在Angular內部的無褶邊jQ)中抽出一些其他基礎知識,或jQ本身...

但他們只是工具而不是答案。

如果您緩存對元素的引用,而不是一遍又一遍地查詢它們,委派事件,執行DOM外的大型結構更改(如果需要的話,在克隆節點上),並且不要進行查詢,不要試圖將JS看作是一種傳統的繼承繁重的語言,並且您仍然需要注意如何以及何時使用AJAX(調用的數量/頻率與數據大小 - 支持更少的調用)。

+0

感謝Norguard的建議 - 我會閱讀所有這些 - 它肯定會爲(甚至更多)想法提供食物...... – Marcel

相關問題