2017-03-04 75 views
0

我是來自Flex/Actionscript世界的難民,我正在使用Electron作爲運行時引擎將大型舊式Flex應用程序「移植」到Javascript中(基本上是重寫)。我一邊學習一邊進行小型測試,以探索各種JavaScript庫和框架的功能和適用性。Electron桌面應用程序的資產數據庫?

這是一個使用本地文件(例如Powerpoint,Keynote,iTunes類型的應用程序)的「演示文稿」類型的桌面應用程序,我需要讓用戶導入,標記和組織許多圖像和視頻資產。我需要能夠移動/複製資產,處理重複的文件名,爲每個文件創建數據庫記錄,創建文件分組等,然後當然可以在運行時訪問所有這些文件。

雖然從頭開始編寫這將會很有趣,但這將是很多工作,並且我想到可能有一個現有的庫或CMS框架可以適應這一點。這個想法是否被誤導?是否有這種類型的需求的現有解決方案?

+0

您是否嘗試過的NodeJS文件系統? https://nodejs.org/api/fs.html還是fs-extra? – Philip

+0

@菲利普 - 感謝,是的,我已經使用了它,它肯定需要成爲我最終的一部分。我想我正在尋找一些與UI前端相關的東西 - 樹視圖,文件預覽等等,但是在環顧了很多項目之後,大多數人都被綁定到了PHP中,或者以其他方式糾纏在一起,它會比它更麻煩值得嘗試適應某些與本地文件一起工作。可能最終會使用fs,pouchdb並從頭開始編寫它。 –

回答

2

我與有關文件操作和數據庫中記錄的相同需求的項目工作,所以讓我給你一些提示:

  • 使用小規模的數據庫(性LevelDB,nedb,lovefield),因爲你會需要將其打包到應用程序中。

  • 不要直接從渲染器進程調用fs模塊,總是使用ipc(用於解耦原因)。

  • 結構中的應用程序通過分離主(電子爲主,節點模塊等)的文件和渲染器(視圖,客戶端的js,圖片...)文件

  • 你需要一個第三方模塊對於文件和目錄,以確保一切運行順利,我使用mkdirp來確保該目錄存在,您也可以使用fs-extra,這對於處理兩者都很好(fs不喜歡不存在的位置)。

  • 如果文件大小大,使用流動資產,createReadStreamcreateWriteStream應該是用來讀取&寫文件的唯一方法。

  • 如果你需要看一些目錄,使用chokidar,它比fs.watch方法更有效率。

  • 爲viewpart使用框架,取決於您熟悉的內容,但angluar,react,vuejs將是一個不錯的選擇。

最後檢查此鏈接,它會幫助你得到的東西的概述,你可以使用 https://github.com/sindresorhus/awesome-electron

希望它可以幫助

+0

謝謝 - 是的,它有幫助,它推動我過去了我的誤導和時間浪費嘗試摔跤一些代碼庫,這是不是爲此目的(並超出了我的JS經驗水平)。我剛剛花了一個小時來處理** [RichFilemanager](https://github.com/servocoder/RichFilemanager)**並且無處可去 - 儘管它看起來很有希望使用nodejs ** [connector](https:// github。 com/servocoder/RichFilemanager/blob/master/connectors/nodejs/filemanager.js)。**感謝關於流的小技巧。 –

+0

嘿山姆 - 只是fyi,如果你還沒有聽說過[fs-jetpack](https://github.com/szwacz/fs-jetpack)。剛剛碰到它,它看起來非常有用,而且比fs更少。 –

+0

只是檢查它,它似乎是一個不錯的選擇,它會隱藏你所有的錯誤處理過程,所以更少的代碼寫,提示的TY! – Sam