Luckysheet 停止維護(hù)!再想開(kāi)發(fā)【騰訊文檔】可咋辦?
前兩天有同學(xué)問(wèn):“Sunday 老師,我們公司現(xiàn)在要做一個(gè)類似于 騰訊文檔 的在線 excel 編輯應(yīng)用,還得支持多人協(xié)作。這玩意可咋弄啊?”
這不巧了嗎?之前我正好寫過(guò)一篇類似的文章:開(kāi)發(fā)一個(gè)騰訊文檔要多久?借助 Luckysheet,僅需 3 分鐘! 就把這篇文章推給該同學(xué),并信誓旦旦的告訴他,很容易!
可是,該同學(xué)看完之后,就給我來(lái)了個(gè)暴擊:“Luckysheet 已經(jīng)停止維護(hù)了......”
圖片
頗有一種 “珍藏了好久的零食,剛想拿出來(lái)招待客人,發(fā)現(xiàn)已經(jīng)過(guò)期了” 的尷尬...
不過(guò),問(wèn)題還是得解決呢,所以我就給他推薦了另外一個(gè) 文檔協(xié)同庫(kù) Univer
圖片
Github 地址:https://github.com/dream-num/univer
什么是 Univer
Univer 是一個(gè)集成
- 電子表格(Excel)
- 文本文檔(Doc)
- 演示幻燈片(PPT)
三大核心文檔類型的企業(yè)級(jí)協(xié)同平臺(tái)。它不僅支持多人協(xié)作,還提供了高效的文檔管理和數(shù)據(jù)處理能力。無(wú)論是個(gè)人辦公還是團(tuán)隊(duì)協(xié)作,Univer 都能幫助你實(shí)現(xiàn)智能化的文檔與數(shù)據(jù)管理。
核心特性
Univer 提供了一系列功能豐富、靈活定制的核心特性,幫助開(kāi)發(fā)者根據(jù)需求定制和擴(kuò)展功能。下圖展示了 Univer 的主要特性和組件架構(gòu),能夠?yàn)槠髽I(yè)提供穩(wěn)定高效的工作環(huán)境。
圖片
基本概念
在使用 Univer 之前,了解其基本概念非常重要。Univer 的核心體系是圍繞四個(gè)重要概念構(gòu)建的,它們分別是:插件、快照、命令和 Facade API。
插件(Plugin)
Univer 的功能通過(guò)插件模塊來(lái)實(shí)現(xiàn),每個(gè)插件負(fù)責(zé)特定功能或能力的提供。例如:
- @univerjs/sheets-filter 插件為電子表格提供了篩選功能
- @univerjs/engine-render 插件則負(fù)責(zé)渲染能力。
我們可以根據(jù)實(shí)際需求靈活組合和選擇插件,這種插件化的設(shè)計(jì)不僅讓你能夠定制化 Univer,還能避免加載不必要的功能代碼。
此外,Univer 還允許開(kāi)發(fā)者通過(guò)編寫自己的插件來(lái)擴(kuò)展功能,滿足特定的業(yè)務(wù)需求。
相關(guān)的參考文檔:
- Univer 架構(gòu)設(shè)計(jì)方案
- 如何編寫插件
快照(Snapshot)
在 Univer 中,快照是文檔的保存格式,類似于“文檔的快照”狀態(tài)。每種文檔類型都有自己的快照格式:
- 電子表格的快照格式是 IWorkbookData
- 單元格數(shù)據(jù)結(jié)構(gòu) 介紹了單元格的數(shù)據(jù)結(jié)構(gòu)
- 文檔的快照格式是 IDocumentData
具體的快照結(jié)構(gòu)可以參考官方的 API 文檔。快照不僅存儲(chǔ)了文檔的數(shù)據(jù),也支持資源的存儲(chǔ),如圖片、附件等。
注意:快照僅用于存儲(chǔ)數(shù)據(jù),并不會(huì)反映文檔的實(shí)時(shí)狀態(tài)。它是數(shù)據(jù)持久化的中介,而在運(yùn)行時(shí),文檔的內(nèi)容和狀態(tài)需要通過(guò)其他方式來(lái)實(shí)時(shí)更新。
命令(Command)
Univer 的所有數(shù)據(jù)修改都依賴于 命令。通過(guò)命令機(jī)制,Univer 能夠追蹤文檔的變化,支持撤銷、重做、協(xié)同編輯等功能。命令不僅使得數(shù)據(jù)修改過(guò)程可追溯,還能處理不同功能之間復(fù)雜的關(guān)聯(lián)邏輯。這樣,開(kāi)發(fā)者能夠更加精確地控制文檔的狀態(tài),確保數(shù)據(jù)的正確性與一致性。
如果你想要通過(guò)命令修改文檔中的數(shù)據(jù),可以參考如何查找命令 ID 的相關(guān)教程:查找命令 ID。在使用 Facade API 修改文檔數(shù)據(jù)時(shí),系統(tǒng)會(huì)自動(dòng)為你準(zhǔn)備命令參數(shù)并執(zhí)行命令,從而簡(jiǎn)化操作流程。
Facade API
Univer 的架構(gòu)較為復(fù)雜,為了使開(kāi)發(fā)者更容易上手,官方提供了 Facade API。這個(gè) API 是對(duì) Univer 第一方插件的封裝,簡(jiǎn)化了接口的使用,使開(kāi)發(fā)者能夠更輕松地操作和集成 Univer。通過(guò) Facade API,你可以快速調(diào)用常見(jiàn)功能,而無(wú)需直接與底層的插件或命令打交道。
然而,簡(jiǎn)單性總是有代價(jià)的。如果你的需求更為復(fù)雜,或者需要更高的自定義能力,可能需要直接操作更底層的 API 來(lái)實(shí)現(xiàn)功能。