electron是chromium跨平臺(tái)應(yīng)用開發(fā)框架,它讓具有web前端經(jīng)驗(yàn)的開發(fā)者也能進(jìn)行應(yīng)用開發(fā),不過對(duì)于C/S應(yīng)用場(chǎng)景,web前端開發(fā)者使用electron開發(fā)還有諸多不便,不能以擰包入住的心態(tài)對(duì)待,實(shí)際上,直接基于electron+web前端技術(shù)開發(fā),更像是入住毛坯房,對(duì)于數(shù)據(jù)密集的多窗口應(yīng)用,還存在超出從前經(jīng)驗(yàn)的問題,不加以重視,就會(huì)被這些業(yè)務(wù)無關(guān)的技術(shù)問題拖入泥潭,甚至面臨項(xiàng)目失敗的風(fēng)險(xiǎn)。
究竟有哪些技術(shù)問題會(huì)成為技術(shù)風(fēng)險(xiǎn),根據(jù)我所見羅列如下:
- 數(shù)據(jù)存儲(chǔ),對(duì)于簡(jiǎn)單的數(shù)據(jù)存儲(chǔ),采用localStorage、indexDB 大多數(shù)web開發(fā)者都能很好的應(yīng)對(duì),而一旦使用 sqlite(關(guān)系型) 或者 LokiJS(文檔型) 這樣的數(shù)據(jù)庫(kù),web前端開發(fā)者普遍不太了解,匆忙學(xué)習(xí)就做項(xiàng)目,往往只能做出能用,但難以維護(hù)、難以長(zhǎng)期使用的設(shè)計(jì)。也許組內(nèi)的后端開發(fā)者可以幫助解決一些問題,但后端程序員如果不懂前端技術(shù),也只能提供有限的協(xié)助。
a. 增刪改查
b. 建表,建索引
c. 數(shù)據(jù)遷移 - 多進(jìn)程,如果說第1點(diǎn)給項(xiàng)目引入的難度是3,那么多進(jìn)程引入的難度就是5,這并不是危言聳聽,換個(gè)說法,要讓web前端研發(fā)做分布式系統(tǒng),同步多窗口狀態(tài),保障數(shù)據(jù)一致性,都是要在多進(jìn)程上實(shí)現(xiàn),沒有分布式系統(tǒng)設(shè)計(jì)的基礎(chǔ)知識(shí),系統(tǒng)很容易產(chǎn)生“打地鼠問題”,剛解決這個(gè),又出現(xiàn)另一個(gè),沒完沒了。
- 資源管理,對(duì)于重量應(yīng)用,按單應(yīng)用方式打包并不可取,如果你讓每個(gè)窗口加載一次所有資源,窗口打開速度將會(huì)變得遲緩,因?yàn)槊總€(gè)窗口都加載所有的腳本和靜態(tài)文件。也許我們會(huì)用預(yù)先加載,隱藏代替關(guān)閉消除這個(gè)延遲,單依然無法解決首次加載時(shí)的高耗時(shí),以及由反復(fù)加載引入巨大js文件,造成CPU高消耗,并且這些消耗提高了對(duì)客戶主機(jī)硬件的要求。
- 跨平臺(tái),不同桌面操作系統(tǒng),對(duì)桌面環(huán)境的設(shè)計(jì)差異,造成部分API接口無法做歸一設(shè)計(jì),這些特殊處理背后隱藏的是新知識(shí)學(xué)習(xí)成本。
- electron 與 chromium 交集功能,些部分能力可能會(huì)誤導(dǎo)開發(fā)者,選擇錯(cuò)誤,可能導(dǎo)致無法實(shí)現(xiàn)功能需求,比如剪貼板,通常我們要優(yōu)先使用 electron 提供的能力。
解決以上這些問題,更需要前后端綜合經(jīng)驗(yàn),專門的人力持續(xù)投入,亦或者使用已經(jīng)解決這些問題的框架。