跳到主要內容

每週專案精選:Kap

·7 分鐘閱讀

Electron 社群正快速成長,人們正以驚人的速度創建強大的新應用程式和工具。為了慶祝這股創造力,並讓社群隨時了解這些新專案,我們決定開始推出每週部落格系列,介紹值得關注的 Electron 相關專案。


這篇文章是本系列的第一篇,重點介紹 Kap,這是一款由 Wulkano 開發的開源螢幕錄影應用程式,Wulkano 是一個由自由設計師和開發人員組成的地理分散團隊。

Kap Screencast

什麼是 Kap?

Kap 是一款開源螢幕錄影工具,主要為設計師和開發人員設計,讓他們可以輕鬆捕捉自己的工作成果。人們使用它來分享動畫原型、記錄錯誤、製作搞笑 GIF 以及各種用途。

我們看到各個年齡層和背景的人們在教育環境、螢幕錄影、教學課程中使用它......用途數不勝數。甚至用於製作生產素材!我們對我們這個小小的副專案如此受歡迎感到非常驚訝。

你們為何開發它?

這是個非常好的問題,市面上螢幕錄影工具並不少見!我們覺得其他替代方案不是太複雜、太昂貴就是功能太有限。沒有一款工具能完美符合我們的日常需求。我們也認為,我們用來工作的工具是開源的,這點很棒,這樣每個人都能幫助塑造它們。Kap 的開發最終也關乎我們沒有做什麼。一切都藏在細節中,許多微小的改進累積起來,才形成了我們想要使用的工具的輪廓。

然而,也許最重要的是,Kap 已成為一個讓我們放下憂慮,單純享受為自己和與我們相似的人們打造產品樂趣的地方。創造一個可以盡情宣洩、嘗試新事物並享受技藝的環境非常重要。沒有要求、沒有壓力、沒有期望。設計師和開發人員應該做副專案嗎?當然,應該。他們應該的。

你們為何選擇在 Electron 上開發 Kap?

原因有很多

  • 網頁技術
  • 團隊成員大多是網頁開發人員
  • 我們投入 JavaScript
  • 這為更多人參與貢獻敞開了大門
  • Electron 本身就是開源的
  • node_modules 的強大功能和易於維護的模組化
  • 跨平台可能性

我們認為應用程式的未來在瀏覽器中,但我們尚未完全達到那個階段。Electron 是朝著那個未來邁進的重要一步。它不僅使應用程式本身更易於存取,也使建構它們的程式碼更易於存取。一個有趣的想法是想像未來作業系統是一個瀏覽器,而分頁本質上是 Electron 應用程式。

此外,由於我們主要是網頁開發人員,我們非常欣賞 JavaScript 的同構特性,也就是說,您可以在用戶端、伺服器以及現在的桌面端執行 JS。有了網頁技術 (HTML、CSS 和 JS),許多事情比原生開發更簡單:更快的原型設計、更少的程式碼、彈性盒模型 > 自動版面配置 (macOS/iOS)。

在開發 Kap 時,你們面臨了哪些挑戰?

使用 Electron 提供的資源來錄製螢幕是最大的挑戰。它們的效能根本不足以滿足我們的要求,在我們看來會導致專案失敗。雖然這並非 Electron 本身的錯,但在原生開發和使用網頁技術建構桌面應用程式之間仍然存在差距。

我們花費了大量時間試圖解決 getUserMedia API 效能不佳的問題,這個問題源自 Chromium。我們在開始開發 Kap 時的主要目標之一是用網頁技術建構整個應用程式。在嘗試了所有能讓它運作的方法之後 (最低要求是在 Retina 螢幕上達到 30 FPS),我們最終不得不尋找其他解決方案。

我在 repo 中看到一些 Swift 程式碼。那是關於什麼的?

由於被迫尋找 getUserMedia 的替代方案,我們開始嘗試使用 ffmpeg。除了是音訊和視訊轉換的最佳工具之一外,它還具有在幾乎所有 OS 中錄製螢幕的功能,而且我們能夠錄製符合我們在 Retina 螢幕上達到 30 FPS 最低要求的清晰視訊。問題是?效能表現是 "😩"😩」,CPU 使用率失控。因此,我們回到繪圖板,討論了我們的選項,並意識到我們必須做出妥協。這促成了 Aperture 的誕生,這是我們自己用 Swift 編寫的 macOS 螢幕錄影函式庫。

Electron 應在哪些方面改進?

我們都知道 Electron 應用程式可能會佔用大量 RAM,但話說回來,這實際上是 Chromium 的問題。這是它運作方式的一部分,而且真正取決於您執行的內容,例如 Kap 和 Hyper 通常使用不到 100MB 的記憶體。

我們認為最大的改進領域之一是有效負載,特別是 Electron 如何分發 Chromium。一個想法是擁有一個共享的 Electron 核心,並讓應用程式安裝程式檢查系統上是否已存在該核心。

創建跨平台 Electron 應用程式的體驗可以更好。目前,平台之間存在太多不一致之處、平台專屬 API 和缺少的功能,導致您的程式碼庫中充斥著 if-else 語句。例如,只有 macOS 支援 vibrancy,自動更新器在 macOS 和 Windows 上的運作方式不同,甚至在 Linux 上不受支援。透明度在 Linux 上時好時壞,通常是壞的。

呼叫原生系統 API 也應該更容易。Electron 附帶一組非常好的 API,但有時您需要它不提供的功能。創建原生 Node.js 附加元件是一種選擇,但使用起來很痛苦。理想情況下,Electron 應該附帶一個良好的 FFI API,例如 fastcall。這將使我們能夠改用 JavaScript 編寫 Swift 部分。

您最喜歡 Electron 的哪些方面?

我們最喜歡的方面很容易就是,任何具有網頁開發知識的人都可以建構和貢獻於多平台原生體驗。更不用說在它上面開發的輕鬆和樂趣、出色的文件和蓬勃發展的生態系統。

從前端的角度來看,建構 Kap 的感覺與使用瀏覽器 API 建構一個簡單的網站沒有什麼不同。Electron 在使應用程式開發與網頁開發相似 (基本上完全相同) 方面做得非常出色。事實上,它非常簡單,以至於我們不需要框架或類似的東西來幫助我們,只需要乾淨且模組化的 JS 和 CSS。

我們也非常欣賞建構它的團隊、他們的奉獻精神和支持,以及他們維護的活躍且友善的社群。向大家致以擁抱!

Kap 的下一步是什麼?

我們的下一步是審查應用程式,為我們的 2.0.0 里程碑做準備,其中包括 React 重寫以及外掛程式支援,讓開發人員可以擴展 Kap 的功能!我們邀請大家關注專案並在我們的 GitHub 儲存庫中貢獻。我們正在傾聽,並希望聽到盡可能多的人的聲音,請告訴我們如何才能讓 Kap 成為對您來說最好的工具!

什麼是 Wulkano?

Wulkano 是一家設計工作室和數位社群,一個由遠端技術專家組成的團隊,他們熱愛共同處理客戶專案和我們自己的專案。我們是一群來自不同地方和背景的分散但緊密的成員,在我們的虛擬辦公室 (恰好是基於 Electron 的 Slack!) 中分享知識、想法、經驗,但最重要的是搞笑 GIF 和迷因。

對於其他開發人員,有任何有用的 Electron 提示嗎?

善用並參與這個出色的 社群,查看 Awesome Electron,瀏覽 範例 並充分利用出色的 文件