JavaScript - 为什么 require 函数可以用在 ElectronJs 的浏览器脚本标签中?

标签 javascript node.js electron require

所以在 electron-quick-start 演示中,HTML 文件 “index” 中有一个 require 函数需要 Electrons 渲染过程。

我知道 NodeJs 为 electron 提供动力(并且 require 是一个 Node 函数),但是当我尝试使用简单的 Chrome 运行一个 HTML 文件时,它没有工作(这是预期的,但我想也许你可以仅在后端使用 require。

是因为当你用 "electron . " 运行 electron 时,它会以不同的方式解释 HTML 文件,就像 React 如何使用 JSX 或 ruby​​ 和 HTML.erb 一样?

最佳答案

根据设计,渲染器和主要 Electron 进程都可以访问 require 函数。

这种所谓的 Node 集成有时会中断 jQuery 和其他前端库的正常运行,可以在 browserWindow 设置期间通过 nodeIntegration 属性将其禁用:

// In the main process.
  const {BrowserWindow} = require('electron')
  let win = new BrowserWindow({
    webPreferences: {
      nodeIntegration: false
    }
  })
  win.show()

请注意:这也会禁用进程间通信 (IPC) 库,您将无法再在主渲染器进程和您各自的渲染器进程之间交换消息 (there's a workaround)。

安全说明:NodeIntegration/require() 仅在您从 Electron 中引用本地 HTML 文件时才有效。有关与 nodeIntegration 相关的安全问题的更多信息 can be found here .

关于JavaScript - 为什么 require 函数可以用在 ElectronJs 的浏览器脚本标签中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51511549/

相关文章:

javascript - ReactJs:如何获取引用来自其父项的组件的引用

javascript - 扩展类时 typescript 文件顺序问题

使用 Docker 通过 Elastic Beanstalk 部署 Node.js

javascript - Mongoose,函数无法在未定义上执行,来自查询函数

javascript - 允许 electron `requires` 在 Vite 中原封不动地通过

javascript - imacros 复制文本列表并在 wordpress 上使用复选框粘贴

javascript - Jquery 在单击时切换类,如果单击另一个菜单项则删除类

node.js - 可以使用非选项参数运行的 Grunt 任务

webview - 加载时将HTML内容 Electron 插入到Webview中

node.js - 将捕获的视频保存到Electron中的文件