一個開發者想在終端里復制ncdu的體驗:全鍵盤操作,沒有鼠標。他最終用Bubble Tea框架搭了個叫peektea的東西,當前版本只有瀏覽功能——方向鍵穿梭目錄,回退到父級。就這么簡單。
但真正的野心在后面:直接在終端里打開文件進Nautilus、vim、Nemo,甚至預覽圖片。他說這是"一大壺要泡的茶",現在只倒出了第一杯。
![]()
peektea的狀態模型異常簡潔。當前目錄路徑、目錄下的條目列表、光標位置、錯誤信息——四個字段裝下整個應用。
Bubble Tea框架的核心理念來自Elm架構,Maneshwar把它拆解成三件事:一個model結構體代表全部應用狀態;Update函數接收消息、返回新狀態;View函數把狀態渲染成字符串。框架自己搞定事件循環、終端I/O和重繪,開發者只管描述界面長什么樣。
Update的邏輯是純函數。按下右鍵、l鍵或回車鍵,如果光標指向的是目錄,就拼接新路徑,讀取目錄內容,刷新entries列表,光標歸零。所有操作不修改舊狀態,而是返回一個全新的model。這個模式天然防住了狀態污染。
Update函數的第二個返回值tea.Cmd值得單獨提。peektea現在的導航操作全是同步的,所以返回nil。但Cmd的設計本身就為了異步——在后臺拉數據、讀文件,不阻塞界面。Maneshwar的比喻:"把水壺放上去,燒好了會通知你,而不是站在那兒盯著看。"
peektea目前只有約140行Go代碼。下一步要攻的,就是把文件打開和圖片預覽塞進同一個按鍵驅動流程里。他說自己用這個項目當借口學Bubble Tea,但代碼結構已經暴露了更實際的意圖:先把框架的Model-Update-View循環跑通,再往里面填功能。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.