main-and-renderer-process.md
1 # 主流程与渲染器流程 2 3 一个**Electron**应用程序被分为代码,分为主进程和渲染器进程。 4 5 **“主”**是`src/main`的代码,主要是由Electron处理的进程代码。**“渲染器”**是`src/renderer`的代码,主要用于前端渲染过程,如Vue。 6 7 一般来说,**Node.js**脚本无法在渲染器进程中运行。例如,包含Node.js使用的API的模块,或**Node.js**的本机模块,如`path`或`net`、`os`或`crypto`。 8 9 预加载脚本在渲染器加载之前运行。它为主进程创建了一个桥梁,出于安全考虑,将Node.js脚本的执行与渲染器区域分开并隔离。 10 11 为了安全执行脚本,建议主进程执行Node脚本,渲染器通过消息传递接收执行结果。这可以通过**IPC通信**来实现。 12 13 欲了解更多信息,请参阅以下文章: https://www.electronjs.org/docs/latest/tutorial/ipc 14 15 ### 如何在渲染器上运行Node.js? 16 17 如果您想跳过安全问题并在渲染器中使用 Node.js 脚本,需要在 `vite.config.ts` 文件中将 `nodeIntegration` 设置为 `true`。 18 19 ```javascript 20 rendererPlugin({ 21 nodeIntegration: true 22 }) 23 ``` 24 25 欲了解更多信息,请参阅以下文章: https://github.com/electron-vite/vite-plugin-electron-renderer 26 27 ### 如何解决开发环境中的CORS限制问题? 28 29 默认情况下,WebSecurity功能(定义在`DEFAULT_WEB_PREFERENCES`)会启用生产级安全防护。但在后端开发/调试过程中: 30 31 - 若出现以下情况可临时关闭webSecurity: 32 - 后端未配置CORS响应头(如Access-Control-Allow-Origin等) 33 34 - OPTIONS预检请求被302重定向(非标准处理方式) 35 36 此操作将允许直接向聊天补全API发起POST请求,绕过浏览器强制的CORS限制。 37 38 > [!WARNING] 本方案仅限本地开发环境使用。部署至生产环境前务必重新启用webSecurity功能。 39 40 欲了解更多信息,请参阅以下文章: https://www.electronjs.org/zh/docs/latest/tutorial/security