🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

沒有的話就自己做一個好了!
――――涼宮ハルヒ

那部動畫的主角就是這麼說的。

前言

「想要一個更順、更快速的 Markdown 編輯器!」

身為工程師,或許你也曾有過這樣的想法吧。…欸,沒有嗎?好吧,那就當作有吧。

市面上有像 Atom、Obsidian 這類功能豐富的編輯器,確實很棒,但光是為了記一下筆記,就每次啟動都給電腦負擔,總覺得不太聰明。而且我也希望把用於開發的 VSCode 與用來撰寫文件的 Markdown 編輯器分開使用。

因為對現有應用程式的「重量」有點受夠了,而又找不到完全符合我喜好的 Markdown 編輯器,我一度快要放棄。心裡想著「算了,用現有的編輯器湊合吧」。

就在那時,涼宮前輩的話在腦海中閃過。

「沒有的話就自己做一個如何?」
這就是開放原始碼編輯器「Bokuchi」誕生的起因。

為什麼要走上「自己做」這條苦路?

……嗯,讀到這裡的各位大概都會這麼想吧。我也是這麼想的。

我對 Markdown 編輯器的需求其實只有以下三點:

  1. 易用性(不需要 Markdown 編輯器以外的功能)
  2. 美觀的設計(需要一定程度的簡潔與耐看)
  3. 極速(這是最高優先度,真的很重要)

嘗試過 VSCode、Atom,以及各種像 Obsidian 的 Markdown 編輯器,但就是沒找到令我心服的工具。

於是我決定乾脆自己做一個理想的工具。既然要做,就想趁機學最新的技術棧、體驗現代化的開發流程。最後選定的是 Tauri v2。

「Tauri」是什麼?

同樣在 Qiita 上已經有很好的介紹文章,詳細可以參考那篇。簡單來說,就是「後端用 Rust、前端用 JS 的應用程式框架」。

光是這一點就技術上很吸引我,但它還有很多其他優點:

  • Rust 的安全性與效能:後端用 Rust 編寫,可以做原生系統級處理 → 速度快,也較穩健。
  • 前端自由度:可以直接用 React、Vue 當作 UI → 如果會做網頁,就能比較自由地設計 UI。
  • 對輕量化的執著:這幾乎是重點。與 Electron 相比,二進位檔大小與記憶體消耗都少很多。官方也把這點當賣點。

一開始我還有想過要用 Go 實作,但知道 Tauri 之後,便老老實實以 Rust + React 開始開發。應用在通常情況下的記憶體使用量約為 40MB 左右,幾乎不會超過 50MB。這種「可以常駐但又很輕量」的特性,是 Markdown 編輯器 Bokuchi 最大的武器。

Bokuchi(開放原始碼)的堅持

Bokuchi 是我為了日常大量使用而打造的編輯器。

  • 即時預覽
    • 寫完立即就能預覽,這是理所當然的。
  • 分頁管理與工作階段儲存
    • 自動保存工作狀態,重啟後也能立即恢復工作,這也算是基本需求。
    • 我希望能切換水平分頁與垂直分頁。
  • 跨平台
    • 利用 Tauri 的優勢,支援 Windows / macOS / Linux。
  • 變數系統
    • 這也是很關鍵的一點。
    • 發佈流程文件等文件,雖然在日期或指令上有細微差異,但基本結構與流程大同小異。
    • 很多人會用 Excel 的儲存格格式來達成,但我想在 Markdown 中實現這樣的功能。
    • 在 Markdown 裡嵌入變數的機制由 Rust 端處理,能實現更有彈性的文件撰寫。

變數系統的範例:

![3.png]()

在 Tauri v2 的開發體驗

使用 Tauri v2 的感想是,整體完成度很高。大部分想做的功能幾乎都已有準備,架構相當周到。安全性架構也相當堅固,只有經過允許的操作才能執行。這不僅能防止第三方的注入攻擊,也能讓應用更安全。

不過也因為安全性嚴謹,「想要開啟檔案」這類操作會被預設拒絕,所以必須在設定檔裡明確宣告「會使用哪些檔案或功能」。

實際的 Bokuchi 設定範例

若要使用作業系統功能(例如開啟/儲存檔案等),必須在此處列出,否則不會被允許。

capabilities/default.json

{
  "$schema": "../gen/schemas/desktop-schema.json",
  "identifier": "default",
  "description": "Capability for the main window",
  "windows": [
    "main"
  ],
  // 在這裡宣告需要的權限
  "permissions": [
    "core:default",
    "fs:default",
    "dialog:default", // 使用檔案對話方塊
    "store:default",  // 儲存應用設定
    "fs:read-files",  // 開啟檔案
    "fs:write-files", // 儲存檔案(例如「另存新檔」功能,僅此項還不足,還需要檔案對話方塊的許可)
    "fs:read-dirs",   // 開啟目錄
    "fs:write-all",
    "clipboard-manager:allow-read-text",
    {
      "identifier": "fs:scope",
      "allow": [
        {
          "path": "$HOME/**/*"
        },
        {
          "path": "$DESKTOP/**/*"
        },
        {
          "path": "$DOCUMENT/**/*"
        },
        {
          "path": "$DOWNLOAD/**/*"
        }
      ]
    },
    "window-state:default",
    "clipboard-manager:default",
    "updater:default",
    "process:allow-restart",
    "opener:default"
  ],
  "platforms": [
    "macOS",
    "linux",
    "windows"
  ]
}

而且最重要的是……輕量!!!

記憶體使用量異常地低

![スクリーンショット-2026-03-10-22.13.42.jpg]()

這點真的讓我大吃一驚。當然 Rust 帶來的好處有其影響,採用作業系統內建的 WebView 結構也令人信服。(相對地,Electron 是把 Chromium 嵌入框架中,本身就比較重。)

最後

Tauri 雖然還是比較小眾的框架,但實際開始開發後覺得非常合乎道理,也漸漸變得很喜歡。框架對於發佈流程的支援也相當完善,這讓我很高興。

這個專案是從「為自己打造工具」出發的,但如果你也對「Markdown 編輯器太重」這個問題感到困擾,歡迎試試看。

Markdown 編輯器 Bokuchi 還在成長中的開放原始碼(OSS)專案。若有「如果有這功能會更好」或「這裡可以這樣改進」等回饋或 Pull Request(PR),非常歡迎。

輕量、美觀,並貼近你的(主要是我的)需求的編輯器。如果有興趣,就來試試看吧。


原文出處:https://qiita.com/ssaita/items/dd3ea7c8834c7bebebf9


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝26   💬7  
635
🥈
我愛JS
💬3  
10
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付