javascript - Electronjs 需要在渲染器进程上使用
问题描述
在电子应用程序中,我们可以在渲染器和主进程中都需要节点模块。我已经意识到,当我在渲染器进程的 main(html 的入口脚本)中需要一个模块时,它在我拥有的每个文件中都可用。我可能解释的不是很清楚,所以让我举个例子。
考虑电子项目的以下布局:
src\
main.js
module1.js
module2.js
index.js
index.html
main.js 是电子应用程序的主要进程,而 index.js 是在 index.html 的 body 标签末尾加载的脚本。
在 index.js 中,我需要 module1 和 module2(文件的其余部分无关紧要)
const m1 = require('module1')
const m2 = require('module2')
我在这里意识到的是,在 module2 内部,我现在可以访问 m1 变量。因此,如果需要,我不需要在模块 2 中再次要求模块 1。
模块2:
console.log(m1) // actually shows the m1 that was required in index.js
我觉得我在尝试编写渲染器端时犯了一个错误,就好像它是一个节点应用程序一样。在编写电子应用程序的渲染器端时,我没有找到任何有关一般规则的文档。我知道这是一个间接的问题,但你能指导我关于渲染器进程布局吗?我不应该尝试将渲染器 js 文件分成模块吗?
解决方案
您可以在创建主 BrowserWindow 时使用 webPreferences 中的 preload 参数。
或者
尝试使用电子的远程模块(https://electronjs.org/docs/api/remote)
或者
访问主进程中的模块,调用预期结果的函数并使用 IPC 将结果发送回渲染器进程。
推荐阅读
- python - 如何一起使用pytest、hypothesis和line_profiler/kernprof?
- flutter - 发布失败(66;无法打开文件,路径 = '/media/ubuntu/hello/flutter/.pub-cache/_temp/dirJJS
- java - 记录spring kafka监听器中抛出的异常
- node.js - 在 MongoDB 中更新购物车中的商品数量(MERN Stack)
- c++ - Leetcode 上逆波兰符号问题的测试用例的错误答案
- xamarin - Xamarin 表单中运行时的相机和位置权限
- javascript - 数组,按月计算特定对象
- python - 如何将 sample_weights 与 3D 医疗数据一起使用,而没有 model.fit(x=tf.data.Dataset) 导致无法挤压最后一个暗淡等错误
- c# - 如何使用c#一一遍历目录中的所有文件?
- sql - DROP 和 CREATE 数据库而不是 SQL Server 中的 TRUNCATE 和 SHRINK