Electron은 사전 로드 시 AppData를 가져옵니다.
P粉351138462
P粉351138462 2024-04-06 11:05:31
0
1
566

미리 로드된 AppData 디렉토리를 얻는 방법은 무엇입니까?

배경.js

으아악

preload.js

으아악

config-manager.js

으아악

이것을 실행하면 이런 오류가 발생합니다.

으아악

이런 현상은 '앱'이 나중에 초기화되기 때문에 발생하는 것 같아요.

저의 궁극적인 목표는 AppData 디렉터리에서 json 구성을 읽는 것입니다. 더 좋은 방법이 있다면 언제든지 알려주시기 바랍니다. 사용자는 런타임에 구성을 변경할 필요가 없습니다. 하지만 defaultConfig의 기본값을 구성 파일에 쓸 수 있어야 합니다.

P粉351138462
P粉351138462

모든 응답(1)
P粉569205478

app.getPath() 方法仅在应用程序“就绪”后才可用。使用 app.on('ready' () => { ... }); '준비' 이벤트를 감지합니다. 자세한 내용은 Electron의 이벤트: 'ready' 이벤트를 참조하세요.

사용자 소개 preload.js 脚本,直接在其中包含函数有时会使内容难以阅读和理解(即使它仅由 require 实现)。目前,该文件没有关注点分离。 IE:您的“配置”功能混合在 preload 脚本中。如果您希望分离问题,那么您应该从 preload.js 文件中重构您的“配置”代码,并将其放在自己的文件中。这样,您的 preload.js 파일은 IPC 채널을 구성하고 관련 데이터(있는 경우)를 전송하는 데만 사용됩니다.


자, app.getPath('appData') 문제를 해결하는 방법을 살펴보겠습니다.

당신의 main.js 文件中,检测您的应用程序何时“就绪”,然后通过您的 config-manager.js 文件获取 appData 디렉토리에 있습니다.

main.js(메인 스레드)

으아악

귀하의 config-manager.js 文件中,我已将您的“路径”变量移至 loadConfig() 函数范围,因为它们仅由该函数使用。如果您需要将它们公开以供文件中其他位置使用,则需要将它们移回 loadConfig() 기능 범위를 벗어났습니다.

ElectronApp.getPath('appData')에 대한 참조를 loadConfig() 함수로 옮겼습니다. 이 함수는 애플리케이션이 "준비"된 후 ElectronApp.getPath('appData') 的引用移至 loadConfig() 函数中,因为在应用程序“就绪”后从 main.js에서 호출되기 때문입니다.

도우미 기능pathExists()을 추가한 이유는 해당 구현이 여러 번 사용되기 때문입니다.

드디어 getConfig() 函数,以便在需要时从应用程序主线程中的任何位置轻松获取配置对象(只要将其包含在需要使用它的文件中即可)。IE: let appConfig = require('config-manager')를 추가했습니다.

config-manager.js(메인 스레드)

으아악

일반적인 preload.js 스크립트는 다음과 같습니다.

으아악

IPC 채널 구현과 메인 스레드 또는 렌더 스레드에서 이를 전송/수신하는 방법을 이해하는 데 도움이 필요하면 새로운 질문을 해보세요.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿