windows原生開發之界面疑雲

 

    windows桌面開發,界面始終是最大的困惑。咱們對前端工具的要求,其實只有窗體設計器、消息映射,過度點的話自適應屏幕、模型綁定。可以免於手工書寫,其實這個問題並不複雜,但VS不實現、QT語法怪異、wtl一樣,甚至第三方工具也無,wxWidgets也沒有。
 
1、各類Html方案:
一、node-webkit:
    有一個叫light-table的IDE項目複雜些,但看起來性能未必很好。不過,與webstorm之類java作的ide區別,性能上彷佛也並無多大的差距。目前來看,簡單的經過調整初始url,能夠直接將服務端應用轉爲客戶端,這意味着一個可以全屏、置頂的瀏覽器。
    須要帶十幾兆的包,這是比較討厭的事情。
    最初的疑問是:node-webkit使用require之類語法,在前端調用node模塊。這種開發實際上比較麻煩的,好像在哪一種IDE下都很差工做...那麼,很簡單的思惟,既然node就在本地,那麼使用本地資源爲什麼不直接用node作服務端,而前端用REST調用?這樣兩個好處:一、前端是純粹的前端項目,不一樣的是自帶瀏覽器。後端爲純粹的node項目。兩方面來看,各類編譯器都支持。二、桌面和Web應用的代碼將徹底一致,不一樣的只是前者自帶瀏覽器。
    不事後來發現這個不是問題,node-webkit能夠經過設置啓動url直接的使用服務端項目。
    
    相似node-webkit的,首先是CEF3,這個有一些應用,看起來歷史更早,但聽說其追隨新版chrome比較麻煩,在node-webkit上也有一個分支名爲CEF。網易的Hex是典型的中國式項目,只發布了簡要的文檔和二進制包,聽說要開源但目前尚未,用hex作的有道詞典,性能還不錯,聽說是分析過node-webkit,以爲不易商用才自行處理的,但做者從新造輪子、敝帚自珍的心態很明顯,幾乎是不能考慮的。
 
二、htmllayout
    另外一種選擇,是個600k左右的dll,不開源。使用html處理佈局,使用css的特性調用c++的功能,固然這不是html5,也不是完整的html解析,只是針對窗體佈局的子集。
 
三、EA-Webkit:
    是對Webkit而非chrome核心的剪裁,只有4M,但顯然也是很冷的...其自己的目標應該是在桌面應用中顯示網頁,沒有調用c++、訪問本地資源的能力,那麼就不能說是界面方案。固然,用wtl結合它,應該能作些簡單的工做。
    開源的頁面在: http://gpl.ea.com/  丟一堆的代碼,沒有文檔。
    這是極少的例子中的一個:用duilib和eawebkit製做的瀏覽器,固然,用起來使人崩潰:
 
 
四、htmlview
    mfc提供了基於ie核心的htmlview,這個,因爲用戶端機器的ie版本不一樣,也是頗爲要命的事情,這會帶來多大的工做量呢?國內頗多產品,近年將對ie的依賴轉向chrome,不是沒有緣由的。
 
五、tc/tlk方案
    看看git的官方windows界面就知,這是很古老的東西,醜陋的不成。界面使用所謂tlk文件,並無太好的設計器,其主要的意圖是跨平臺,而非簡化設計。
  
2、Direct ui方案
    國內還存活的大約只有DuiLib,金山本身都不用本身的界面庫,迅雷的各類複雜,其餘都比較小衆,並且這個話題,所謂的less window在2010年後彷佛說起的也很少。
    以duilib來講,窗體設計器很是簡陋,許多bug,常常崩潰。更別提模型綁定、事件綁定了。我將其在vs2013下編譯經過,仔細看了下代碼並與其中一個開發者討論過,設計比較紊亂,自願者的組織也至關鬆散。 
 
3、Mfc和wtl:
    確實很麻煩。使用資源文件描述窗體,和使用xml、html沒什麼區別。有簡陋的對話框設計器和ribbon設計器,消息映射可使用類助手來略麻煩的處理。從這個角度來講,html方案並不佔優。wtl則在進入vs2012以後,wtl helper沒人維護,消息映射須要手工書寫。若是界面簡單,或可以使用wtl,"小"是優點。
 
4、QT和wxwidgets
    QT相對比較成熟,業界應用也普遍,但比較龐大,且寫法怪異,須要相似mfc通常的深刻了解所謂"框架"。wxwidgets其實是相似mfc的作派,一樣也比較大。二者都跨平臺,事實上桌面應用,跨平臺到mac、linux的需求少得可憐。
    其餘小衆的界面庫,甚至都沒有深刻了解的願望。
 
    實際上,當年Delphi的界面設計,今天在windows裏,各類方案都作不到。我相信微軟、谷歌這些公司確定能作到的,可是,是否每一個公司都本能的但願,win平臺的原生開發須要門檻高企?
相關文章
相關標籤/搜索