是否可以在Electron中的主进程和渲染进程之间共享常量?我一直没能找到一个优雅的解决方案。
我可以在渲染器和预加载之间共享常量。到目前为止,似乎通过 contextBridge 公开常量是唯一的方法。
有人有一个很酷的方法吗?
如果您指的是实际常量,例如静态字符串或对象,那么是的,这是可能的。您可以将这些常量放在一个或多个文件中,然后将它们简单地导入到两个进程中。
对于 ESM,从 Electron 28 开始就支持(参见 docs),没有什么特别要做的,只需使用
import
/export
:
常量.js
export const myFirstConst = "Hello";
export const mySecondConst = "World";
渲染器和主
import { myFirstConst, mySecondConst } from "./constants";
对于 CJS,您需要使用 CJS
exports
,以便主进程需要它。如果您的渲染器使用捆绑器,则在使用 ES6 exports
时需要确保它支持 CJS import
。例如,对于 Babel,sourceType
必须设置为 "unambiguous"
。
常量.js
const myFirstConst = "Hello";
const mySecondConst = "World";
module.exports = { myFirstConst, mySecondConst };
渲染器
import { myFirstConst, mySecondConst } from "./constants";
主要
const { myFirstConst, mySecondConst } = require("./constants.js");
如果常量依赖于某些渲染器代码,那么您需要使用桥。