【问题标题】:why use webpack with electron为什么将 webpack 与电子一起使用
【发布时间】:2023-03-22 04:39:01
【问题描述】:

我正在用电子做实验。我看到很多使用 webpack 的例子。

但是为什么要使用 webpack 之类的东西呢?因为据我所知,电子支持require('module')

【问题讨论】:

  • 电子在节点之上。要包含节点模块,请使用 require 函数。 nodejs.org/dist/latest-v5.x/docs/api/modules.html
  • 我知道使用 webpack(在这种情况下)的唯一原因是你想打包你的文件?
  • 是的。如果您的文件不是 JavaScript 并且需要编译怎么办?比如react组件以jsx结尾,需要编译成JS。
  • Webpack 用于打包前端 JS 代码,它与 Electron 无关,但您可以使用它来编译您将与 Electron 捆绑使用的应用程序
  • @KeitIG 我将如何捆绑它?有示例代码吗?

标签: webpack electron


【解决方案1】:

electron 中使用的不是 webpack。 require 函数是 node.js 的一部分,它是 electron 的基础。

关于 node.js 文档中的模块的更多信息: https://nodejs.org/dist/latest-v5.x/docs/api/modules.html

但只要 webpack 也可用作节点模块 (https://www.npmjs.com/package/webpack),也可以将 webpack 与电子一起使用。此时,您还可以在生产中使用动态构建,因为 node 和 chrome 在一个应用程序中可用。

为什么将 webpack 与电子一起使用? 当您使用 react 或 vue.js 组件时,分离组件可能是个好主意。要将您的代码捆绑到一个应用程序中,您需要 browserfy 或 webpack。这将是一个很好的理由,为什么要使用它。

【讨论】:

  • 没有理由捆绑组件。编译步骤就够了
【解决方案2】:

没有理由在 Electron 中使用 Webpack,请查看 electron-compile 在 Electron 中使用 Babel 和 LESS。

【讨论】:

  • 如果你的 webapp 正在使用 webpack 而你不想重写所有东西怎么办?如果您使用 vue.js 组件来构建代码怎么办?所以他们是这样做的原因。
  • 为什么使用 vue.js 组件需要 webpack
  • 如果你使用单文件.Vue组件,你需要一个模块加载器。
  • 如果您的 Web 应用程序使用 Angular,并且您使用的是与 webpack 一起应用的 ngAnnotate 怎么办?
  • 已弃用... :)
【解决方案3】:

Webpack 不仅仅是一个 JS 模块打包器;它可用于捆绑静态资产(例如,内联 base64 图像)、编译 Sass/Less/Stylus/CSS-Modules、消除死代码、摇树等。使用适当的加载器和配置,在积极开发时只需要require('any-type-of-file.extension')。然而,就我个人的经验而言,Webpack 的价值不仅仅在于它的开发服务器和热模块替换 (HMR),这让 Live Reload 感觉像是来自黑暗时代的东西。

回顾一下,您可以获得 Gulp/Browserify/Rollup 的所有组合功能,但在顶部有 HMR,所有这些都在一个工具中(还有很多很多很多加载器;)。

毫无疑问,设置 Webpack 是一个 PITA,但如果您打算在 Electron 应用程序上工作很长时间,那么仅从 HMR 节省的时间就非常值得了。

【讨论】:

  • electron-compile,一个已经很流行的电子开发库,似乎支持 HMR:github.com/electron/…
  • 正如@ScottCoates 已经说过的,在Electron 中有几个热重载选项,它们只是观察文件系统的变化。在 webpack 中需要 HMR 的全部原因是因为没有任何方法可以通知浏览器更改。这对 Electron 来说不是必需的,它增加了很多不必要的复杂性来让 webpack HMR 在 Electron 中工作。
【解决方案4】:

好的文档开始获取https://webpack.electron.build/

  • -使用webpack进行源码打包

    -使用webpack-dev-server进行开发

    -渲染器和主进程的HMR

    -使用根据您的电子版本自动配置的@babel/preset-env

    -能够添加自定义 webpack 加载器、插件等

    -支持 TypeScript、Less、EJS 等项目的附加组件

【讨论】:

猜你喜欢
  • 2016-10-09
  • 1970-01-01
  • 2016-09-30
  • 2019-09-29
  • 2020-05-24
  • 2019-05-19
  • 2017-11-20
  • 2014-10-23
  • 2017-09-30
相关资源
最近更新 更多