2016-02-15 67 views
1

我有一個Electron應用程序,當我啓動它的多個實例時,它們都共享相同的LocalStorage。是否有可能多個實例可以擁有自己獨立的LocalStorage「域」(不知道這是否合適)?如何將單獨的Electron應用程序實例與單獨的LocalStorage分開?

是什麼驅動一個特定的Electron應用程序如何知道要使用哪個LocalStorage域?我想也許它是由入口點的文件路徑驅動的,但我從單獨的文件夾運行不同的實例,甚至有明確命名的入口點,並且它們仍共享相同的LocalStorage。

我對Electron比較陌生,所以請原諒我,如果這裏有一個非常明顯的答案,但如果不是路徑,那麼從不同路徑運行的電子應用程序的兩個實例如何知道它們實際上是兩個實例同一個應用

+0

當你的應用程序實例化並使用它作爲前綴時,難道你不能以某種方式生成一個相對唯一的散列嗎?使用相同的域名是因爲它與您正在實例化的應用程序相同(請考慮具有相同域url的瀏覽器選項卡 - 例如stackoverflow.com)。 像這樣,你可以在LocalStorage API上編寫一個簡單的包裝器,當設置/獲取一個項目時,你可以自動添加/使用哈希前綴。你可以在這個[library]看看例子(https://github.com/ivw/easy-localstorage) – eAbi

回答

1

一方面,它取決於Electron將您的本地存儲存儲在磁盤上的位置。這由app模塊的路徑userData管理。如果您查看相應的文件夾,您應該找到一個名爲Local Storage的目錄 - 這是您的應用程序保存數據的位置。我想你要找的是爲你的應用程序使用單獨的存儲,具體取決於你是否在生產/發佈或開發/測試模式下運行它;在啓動應用程序時,通過設置userData路徑很容易實現。例如,我們在開發過程中使用本地文件夾,並使用tempdir進行測試。

或者,查看Electron的session模塊,您可以使用它來處理多個會話存儲。

+0

這對我有很大的幫助!我想我可以通過一些命令行參數來控制userData路徑。一個側面的問題是我的應用認爲它的名字是'Electron'(基於app.getName()),所以我的默認userData文件夾(在OSX上)是'〜Library/Application Support/Electron'。如果我有一個完全不同的Electron應用程序,這將是一個問題,因爲使用這樣的通用名稱,兩個應用程序將共享相同的數據。文檔說這個名字應該來自package.json。我確實已經設置了它,並沒有使用它。也許這是Electron的錯誤?無論哪種方式,這是一個單獨的問題。 – robmisio

+0

我認爲它可能使用'productName'而不是'name'。無論如何,當你啓動你的應用時,你可以覆蓋它,就像你說的那樣。我正在使用默認爲NODE_ENV的命令行選項來設置我的環境。迄今爲止,這可以很好地保持版本和開發環境的分離。 – inukshuk

+0

我也試過productName,它仍然讓我成爲'Electron'。無論如何,再次感謝您的幫助! – robmisio

相關問題