By 技術怪咖 歐陽森林
導讀:在互聯網時代,如何將一個好的idea快速的轉化爲產品,如何在原有產品中增長新的特性,是產品可以快速的推向市場、快速佔領的關鍵。所以,做爲客戶端的架構選型,面臨哪幾方面的需求?資深前端工程師歐陽森林針對其專業領域的經驗,有着本身獨到的看法。前端
自從互聯網江湖上出現了一部叫作「雲」的祕籍,大大小小的門派,紛紛對外宣稱本身掌握了「雲」的核心,各類「雲」應用層出不窮,Service的各類架構在一次次的華山論劍上大放異彩,彷彿你要是不知道最新的SaaS架構,不知道微服務,那你就落後了時代。惋惜,好的服務不過是內功心法,若是你的招式太過單一,用戶體驗很差,就只能表演一下胸口碎大石、銀槍刺咽喉的工夫,行家固然明白你內功深厚一代宗師,可打賞的終究是看熱鬧的路人甲乙丙丁,用戶感官上的體驗直接決定了到底是少林真傳大師,仍是行走江湖賣藝先生。node
桌面客戶端仍然是最重要的、複雜度最高的產品。變化紛繁,招式華麗纔是廣大路人們心中高手的形象,固然也只有程序的UI交互作的好,客戶也才願意買單。web
在互聯網時代,如何將一個好的idea快速的轉化爲產品,如何在原有產品中增長新的特性,是產品可以快速的推向市場、快速佔領的關鍵。所以,做爲客戶端的架構選型,也就面臨如下幾個方面的需求:shell
客戶端的開發技術/框架,主要如下有幾種:瀏覽器
下面分別就這幾種開發技術/框架,分析其適用的場景和優缺點:前端工程師
在桌面客戶端開發中,純Native開發是一直沿用至今,也是使用最多的技術。使用Native開發,可以實現最好的性能,能夠比較容易的與第三方的C++應用集成。架構
優勢:框架
缺點:electron
Qt一直以來被許多用戶做爲跨平臺客戶端開發的首選,其功能強大、支持的操做系統豐富、與C++結合緊密,其在某些特定領域(如嵌入式領域、軍工、安防監控領域等)很是受歡迎。ide
優勢:
缺點:
從使用的狀況來看,Qt做爲跨平臺的桌面端開發框架,有其有力的方面,但缺點也制約了其快速發展和在客戶端開發的大規模使用。
隨着PC機不斷提高的機器性能以及H5標準的發展,利用JS語言依靠Browser爲載體的B/S體系軟件,有着很強的交互表現力,使用Html/JS做爲UI的開發語言,能夠十分高效快速的完成各類複雜界面(尤爲是各類動畫效果)開發。
隨着Nodejs和Chromium的CEF愈來愈成熟,出現了將Nodejs與Webkit集成的開源框架,比較成熟的有NW.js(前身node-webkit)和Electron(前身atom-shell), 該類型的框架既能使用Html/JS來開發UI界面,又能集成C++庫來完成大計算量的任務,使得開發基於Web和Native混合的應用很是方便。
NW.js和Electron相比,各有優缺點,對好比下表:
Item | NW.js | Electron |
---|---|---|
Sponsor | Intel | Github |
Project inception | 2011 | 2014 |
Supported System | Windows/Mac/Linux | Windows/Mac/Linux |
Minimum Windows Version | Windows XP | Windows 7 |
Apps build on it | WhatsApp for Desktop, Messenger for Desktop and more | Slack, Atom, Visual Studio Code, Skype and more |
因爲集成了Node.js和Webkit,以及豐富的Node.js第三方庫,NW.js和Electron提供了徹底使用Javascript來開發客戶端的能力。只要熟悉前端Web開發,就能迅速開發出與傳統客戶端相媲美的客戶端軟件,開發速度和功能都能知足目前互聯網時代的要求,你們的前端開發人員儲備,海量的Web 框架和UI組件,使得它們成爲了目前最煊赫一時的客戶端開發框架。
Electron和NW.js相比較來講,Electron的發展更快、bug更少、貢獻者更多、社區更活躍。參考知乎上的某篇問答: [維護一個大型開源項目是怎樣的體驗? - zcbenz 的回答](https://www.zhihu.com/question/36292298/answer/102418523) ,根據NW和Electron的做者本身的回答,顯然Electron比NW.js更好。若是不考慮支持XP系統,Electron更適合做爲客戶端的框架。
優勢:
從開發桌面客戶端的便捷性、跨平臺性等來看,NW.js和Electron幾乎知足互聯網時代的客戶端架構需求,但它們也存在一些不足。
Chromium Embedded Framework (CEF)是個基於Google Chromium項目的開源Web browser控件(俗稱谷歌親兒子),支持Windows, Linux, Mac平臺, 其包含C/C++程序接口,可以完美的與C++庫集成,完善的支持Html5 Web頁面開發,而且能夠經過修改編譯選項和源代碼後編譯的方式來實現剪裁CEF和提供原CEF沒有的功能,定製本身的窗口類型。
優勢:
缺點:
在互聯網時代,選擇一個合適的客戶端框架,對於一個產品快速的推向市場,有着相當重要的做用。NW.js、Electron、CEF等Web browser模式的開發框架,可以完美複用現有的Web開發框架和技術,極大的提升開發速度,實現產品的快速迭代、最終實現產品的成功。
咱們在2015年初作全時蜜蜂客戶端的架構選型時,曾考慮過NW、Electron和CEF三個框架,最終因爲蜜蜂客戶端要兼容XP、實現透明窗體和集成比較多的C++模塊而選擇了CEF。事實證實,使用CEF,咱們作到了每週發一個小版本、每月發一個大版本的快速迭代,不間斷且快速給客戶提供了好用的新功能。並且據筆者觀察,釘釘也在最近捨棄了NW換成了CEF做爲桌面客戶端開發框架。