幾十年前,我們通常使用通用文本編輯器和專用集成開發(fā)環(huán)境(IDE)來(lái)編寫各種編程語(yǔ)言的代碼。我還記得用微軟記事本學(xué)習(xí) Java 和 C。后來(lái),程序員開始使用帶有基本代碼編輯功能(如語(yǔ)法高亮)的文本編輯器,這些特殊文本編輯器如 Notepad++ 和 Sublime Text 被稱為代碼編輯器。同時(shí),IDE 也幫助開發(fā)者高效地編寫源碼,但它們僅限于特定的技術(shù)棧。例如,曾用 Visual Basic 6 IDE 編寫 Visual Basic 代碼來(lái)構(gòu)建 Windows 應(yīng)用。
之后,代碼編輯器開始具備通用 IDE 功能,使程序員能夠用任何編程語(yǔ)言編寫代碼。任何流行的代碼編輯器通常都有一個(gè)功能齊全的代碼編輯區(qū)域,具有語(yǔ)法高亮、目錄樹、終端、語(yǔ)言檢查集成和調(diào)試器/編譯器集成功能。這些編輯器還引入了一個(gè)簡(jiǎn)約的插件系統(tǒng),讓程序員可以為各種技術(shù)棧構(gòu)建便利工具,這就是 VSCode 等代碼編輯器重新定義代碼編輯的方式。
VSCode 成為軟件行業(yè)的默認(rèn)代碼編輯器。它毫無(wú)疑問為任何流行的技術(shù)棧提供了類似 IDE 的環(huán)境,但其內(nèi)部設(shè)計(jì)隱藏的問題導(dǎo)致了性能問題。VSCode 是一個(gè)混合應(yīng)用程序(一個(gè)在原生窗口上運(yùn)行的網(wǎng)絡(luò)應(yīng)用程序),永遠(yuǎn)不會(huì)成為原生應(yīng)用程序。想象一下,一個(gè)類似 VSCode 的真正原生編輯器,即使在你的舊臺(tái)式電腦上也能流暢運(yùn)行!
VSCode 是微軟的開源產(chǎn)品,一家巨大的軟件公司,完全有能力開發(fā)出一個(gè)提供所有 VSCode 功能的原生代碼編輯器。那么,為什么 VSCode 會(huì)成為混合應(yīng)用程序呢?
開發(fā)用戶友好的跨平臺(tái)應(yīng)用程序?qū)τ陂_發(fā)者來(lái)說(shuō)是困難的。使用平臺(tái)特定的 UI 元素開發(fā)原生應(yīng)用程序通常需要為每個(gè)平臺(tái)維護(hù)多個(gè)項(xiàng)目。使用直接渲染圖形庫(kù)并原生構(gòu)建所有 UI 元素是一個(gè)耗時(shí)的任務(wù),因?yàn)樗鄙偎谢诰W(wǎng)絡(luò)的庫(kù)和最簡(jiǎn)單的樣式語(yǔ)言 CSS。開發(fā)混合應(yīng)用程序是更快地開發(fā)跨平臺(tái)桌面應(yīng)用程序的最佳方式,因?yàn)橛邢?Electron 這樣的框架,可以將網(wǎng)絡(luò)應(yīng)用程序轉(zhuǎn)換為桌面應(yīng)用程序。此外,混合開發(fā)方法將用戶變成貢獻(xiàn)者,因?yàn)槊總€(gè)人都知道如何構(gòu)建和測(cè)試網(wǎng)絡(luò)應(yīng)用程序。
VSCode 使用 Electron,所以你最喜歡的代碼編輯器實(shí)際上是一個(gè)在 webview 組件(即 Chromium)內(nèi)運(yùn)行的網(wǎng)絡(luò)應(yīng)用程序,并使用 Node.js API,如下圖所示:
圖片
VSCode 確實(shí)是一個(gè)強(qiáng)大的全功能編輯器,為數(shù)百萬(wàn)開發(fā)者提供了支持,但問題是它不是一個(gè)真正的原生應(yīng)用程序,無(wú)法最佳地利用硬件資源——它是一個(gè)復(fù)雜的網(wǎng)絡(luò)應(yīng)用程序,通過(guò)運(yùn)行在嵌入 Chromium 實(shí)例的原生窗口框架內(nèi),模擬出原生應(yīng)用程序的外觀:
圖片
高端電腦可能不會(huì)讓你覺得 VSCode 是一個(gè)網(wǎng)絡(luò)應(yīng)用程序,但一些開發(fā)者因?yàn)樾阅軉栴}開始尋找原生的 VSCode 替代品。
VSCode 生態(tài)系統(tǒng)有數(shù)千個(gè)令人驚嘆的擴(kuò)展和數(shù)百萬(wàn)活躍用戶,所以還沒有哪個(gè)代碼編輯器能完全匹配 VSCode 的所有方面。但是,我們可以找到一個(gè)好的原生 VSCode 替代品,它提供一個(gè)良好的插件系統(tǒng),有一個(gè)維護(hù)良好的代碼庫(kù)。然后,我們可以在開源社區(qū)的支持下將其提升到 VSCode 的水平。然而,尋找另一個(gè)混合代碼編輯器作為 VSCode 替代品并不能解決性能問題,因?yàn)樗鼈內(nèi)匀皇穷愒木W(wǎng)絡(luò)應(yīng)用程序:
我們需要找到一個(gè)原生代碼編輯器,它使用 2D 圖形庫(kù)通過(guò)某種低級(jí)但對(duì)開發(fā)者友好的語(yǔ)言來(lái)渲染 GUI 元素。VSCode 的替代候選者應(yīng)該本地渲染所有 GUI 元素,而不使用像 VSCode 那樣成千上萬(wàn)的 DOM 元素,如下圖所示:
圖片
DOM 并未針對(duì)這些任務(wù)進(jìn)行優(yōu)化——這就是 Canvas 存在的原因,用于高性能渲染。你可以用 DevTools 檢查 VSCode 程序(實(shí)際上任何 Electron 應(yīng)用程序):
code --remote-debugging-port=<port> --remote-allow-origins=*
例如,如果一個(gè)本地代碼編輯器為編寫插件提供了快速的 C API,那么現(xiàn)代開發(fā)人員就不會(huì)嘗試為其實(shí)施更多插件。
什么是有可能成為 VSCode 真正競(jìng)爭(zhēng)對(duì)手的跨平臺(tái)本地代碼編輯器?
幾年前,我在尋找一個(gè)原生 VSCode 替代品,因?yàn)?VSCode 在我的電腦上表現(xiàn)不佳。像大多數(shù)開發(fā)者一樣,我可以責(zé)怪我的低端電腦計(jì)算能力差,并升級(jí)硬件組件以掩蓋 VSCode 等混合應(yīng)用程序的性能問題,但我開始尋找一個(gè)有潛力成長(zhǎng)為 VSCode 的原生代碼編輯器。
在 GitHub 上找到了一個(gè)有趣的原生代碼編輯器叫 Lite。Lite 是一個(gè)極簡(jiǎn)現(xiàn)代代碼編輯器,具有基本的代碼編輯功能,如語(yǔ)法高亮、快速命令、文件樹視圖和多標(biāo)簽頁(yè)等。
圖片
Lite 的代碼庫(kù)經(jīng)過(guò)精心設(shè)計(jì),注重原生性能和開發(fā)者友好的可擴(kuò)展性。Lite 由 C 和 Lua 編寫。它使用 C 進(jìn)行低級(jí)渲染,并嵌入輕量級(jí) Lua 運(yùn)行時(shí)進(jìn)行代碼編輯器和插件實(shí)現(xiàn)。Lite 的目標(biāo)是提供一個(gè)極簡(jiǎn)編輯器,任何人都可以擴(kuò)展。
圖片
LiteXL 是 Lite 開源項(xiàng)目的一個(gè)分支。LiteXL 相比原始 Lite 項(xiàng)目有各種性能和可用性改進(jìn)。LiteXL 通過(guò)分解特性實(shí)現(xiàn),遵循一個(gè)精心設(shè)計(jì)的架構(gòu)模式。
LiteXL 具備以下優(yōu)勢(shì):
LiteXL 看起來(lái)與 VSCode 相同,并提供了我以前使用的所有 VSCode 功能,同時(shí)資源占用令人印象深刻。LiteXL 正在積極維護(hù),每次發(fā)布都提供了令人印象深刻的功能,而不會(huì)影響性能和資源占用。
盡管 VSCode 是一個(gè)成熟的產(chǎn)品,但 LiteXL 的未來(lái)是充滿希望的,并且正在成為 VSCode 的真正競(jìng)爭(zhēng)對(duì)手。LiteXL 提供了一個(gè)功能齊全、類似 VSCode 的跨平臺(tái)編輯器,即使在低端電腦上也能流暢運(yùn)行。
通過(guò)這些功能和性能優(yōu)勢(shì),越來(lái)越多的開發(fā)者會(huì)嘗試 LiteXL,并體驗(yàn)其極快的性能和極簡(jiǎn)的可擴(kuò)展設(shè)計(jì)。當(dāng)他們意識(shí)到自己在使用 VSCode 時(shí)浪費(fèi)了多少 CPU 和內(nèi)存時(shí),他們會(huì)進(jìn)一步考慮使用 LiteXL,并最終可能會(huì)轉(zhuǎn)向 LiteXL。
本文鏈接:http://www.tebozhan.com/showinfo-26-98873-0.htmlVSCode 的真正競(jìng)爭(zhēng)對(duì)手即將到來(lái):LiteXL
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com