사용자 설정을 저장하는 내장 메커니즘을 찾을 수없는 것 같습니다. 전자가 모든 데스크톱 플랫폼에서 사용자 설정을 저장하는 표준 방법을 제공하기를 바라고 있습니다. 이에 대한 선례가 없다면 직접 구현할 수 있지만 즉시 사용자 지정 솔루션으로 이동하고 싶지 않았습니다. 이 분야에서 온라인 조사는 매우 드물다. 감사!
사용자 설정을 저장하는 내장 메커니즘을 찾을 수없는 것 같습니다. 전자가 모든 데스크톱 플랫폼에서 사용자 설정을 저장하는 표준 방법을 제공하기를 바라고 있습니다. 이에 대한 선례가 없다면 직접 구현할 수 있지만 즉시 사용자 지정 솔루션으로 이동하고 싶지 않았습니다. 이 분야에서 온라인 조사는 매우 드물다. 감사!
답변:
각 플랫폼에는 서로 다른 종류의 데이터에 대해 서로 다른 기본 위치가 있습니다. 따라서 플랫폼에 따라 기본 위치에 데이터를 저장하려면app.getPath(name)
과 관련된 특수 디렉토리 또는 파일의 경로를 검색합니다 name
.
또한이를 사용하여 사용자가 저장하려는 데이터와 사용자 디렉토리를 어지럽히 지 않으려는 애플리케이션에서 저장하는 데이터를 구분할 수 있습니다.
또는 특정 경로에 관련된 파일을 저장하려는 경우
app.setPath(name,path)
저는 Electron 앱에서이 특정 문제에 직면했으며이 게시물은 electron-json-storage 라는 NPM 모듈을 작성하도록 영감을 받았습니다 .
이 모듈을 사용하면 JSON을 쉽게 작성 / 읽을 수 있습니다 app.getPath('userData')
.
const storage = require('electron-json-storage');
// Write
storage.set('foobar', { foo: 'bar' }).then(function() {
// Read
storage.get('foobar').then(function(object) {
console.log(object.foo);
// will print "bar"
});
});
electron-json-storage
굉장 또 다른 선택이 될 것입니다lowdb
var someObj = JSON.parse(fs.readFileSync(path, {encoding: "utf8"}))
하고 fs.writeFileSync(path, JSON.stringify(someObj)});
심지어는 비동기 몇 줄보다 더 추가 할 것입니다 만들기는.
Electron은 이것에 대해 상자에서 아무것도 제공하지 않습니다. 그러나 Electron은 app.getPath API 를 통해 크로스 플랫폼 방식으로 사용자 데이터를 저장하는 관용적 위치를 얻는 방법을 제공합니다 .
이를 수행하는 가장 일반적인 3 가지 방법은 다음과 같습니다.
선택하는 것은 앱의 요구 사항에 따라 다릅니다. 렌더러 프로세스에서이 데이터에만 액세스해야하는 경우 localStorage
. 대부분의 경우 메인 및 렌더러 모두에서 데이터에 액세스해야하는 것처럼 보이므로 JSON 파일이 의미가 있습니다. 많은 데이터 또는 복잡한 쿼리를 처리하는 경우 데이터베이스가 의미가있을 수 있습니다. 나는 이것에 대해 더 자세히 여기에 썼다 .
내가 찾은 가장 좋은 방법은 JSON으로 간단한 파일에 저장하는 것입니다. 문제는 해당 JSON을 앱 디렉토리에 저장하면 앱을 업데이트하면 지워진다는 것입니다. 따라서 현재 운영 체제의 사용자 설정을 위해 기본 디렉토리에 저장하려고합니다. 운 좋게!!!!! userdata 디렉토리를 찾는 데 도움이되는 노드 개발자 용 라이브러리가 있습니다. 모듈은라고 appdirectory
하며 여러 번 사용했습니다. 사용하기 매우 쉽습니다.
getPath(userData)
쿠키에 데이터를 저장할 수 있습니다. Electron에는이를위한 메커니즘 ( https://electronjs.org/docs/api/cookies )이 있으며 쿠키는 브라우저 (Angular : https://docs.angularjs.org/api/ngCookies/service/ $) 에서 검색 할 수 있습니다. 쿠키, React / 기타 : https://github.com/reactivestack/cookies )
Angularjs로 작업 할 수있었습니다.