webpack进程回收-Webpack建立Electron应用实例解读

2023-12-12 0 2,341 百度已收录

Electron 允许您使用 Web 开发技术来开发跨平台的桌面应用程序。 它由 Github 主导并开源。 熟悉的 Atom 和 VSCode 编辑器都是使用 Electron 开发的。 本文主要介绍Webpack构建Electron应用的实际使用。 小编觉得还是蛮不错的。 现在我就分享给大家,给大家一个参考。 下面就跟随小编来看看吧,希望能够对您有所帮助。

Electron 是 Node.js 和 Chromium 浏览器的组合。 它使用Chromium浏览器显示的Web页面作为应用程序的GUI,并通过Node.js与操作系统交互。 当你在 Electron 应用程序的窗口中进行操作时,你实际上是在操作一个网页。 当你的操作需要通过操作系统来完成时,网页会通过Node.js与操作系统进行交互。

使用这些方法开发桌面应用程序的优点是:

降低开发门槛,只需要掌握Web开发技术和Node.js即可。 大量的Web开发技术和现成的库可以在Electron中复用;

由于 Chromium 浏览器和 Node.js 都是跨平台的,Electron 可以编写在不同操作系统上运行的代码。

当运行 Electron 应用程序时,它首先启动一个主进程。 主流程是通过 Node.js 执行入口 JavaScript 文件来启动的。 该入口文件main.js内容如下:

const { app, BrowserWindow } = require('electron')
// 保持一个对于 window 对象的全局引用,如果你不这样做,
// 当 JavaScript 对象被垃圾回收, window 会被自动地关闭
let win
// 打开主窗口
function createWindow() {
 // 创建浏览器窗口
 win = new BrowserWindow({ width: 800, height: 600 })
 // 加载应用的 index.html
 const indexPageURL = `file://${__dirname}/dist/index.html`;
 win.loadURL(indexPageURL);
 // 当 window 被关闭,这个事件会被触发
 win.on('closed', () => {
  // 取消引用 window 对象
  win = null
 })
}
// Electron 会在创建浏览器窗口时调用这个函数。
app.on('ready', createWindow)
// 当全部窗口关闭时退出
app.on('window-all-closed', () => {
 // 在 macOS 上,除非用户用 Cmd + Q 确定地退出
 // 否则绝大部分应用会保持激活
 if (process.platform !== 'darwin') {
  app.quit()
 }
})

webpack进程回收-Webpack建立Electron应用实例解读

登录后复制

主进程启动后,仍会在后台运行。 你能看到和操作的窗口并不是主进程,而是主进程新启动的窗口子进程。

应用程序从启动到退出经历了一系列的生命周期风暴。 使用 Electron.app.on() 函数来监听生命周期风暴并在特定时刻做出反应。 例如,在app.on('ready')事件中,通过BrowserWindow显示应用程序的主窗口。

虽然启动的窗口是网页,但是启动时会加载loadURL中传入的网页地址。 每个窗口都是一个独立的网页进程,窗口之间的通信需要使用主进程来传递消息。

webpack进程回收-Webpack建立Electron应用实例解读

一般来说,开发 Electron 应用程序与开发 Web 应用程序非常相似。 不同的是,Electron 运行环境既有外部浏览器,又有 Node.js API。 开发网页时,不仅可以使用浏览器提供的API,还可以使用Node.js。 .js 提供的 API。

连接到 Webpack

接下来,制作一个简单的 Electron 应用程序。 应用程序启动后需要显示主窗口。 主窗口中有一个按钮。 单击此按钮将显示一个新窗口,并使用React开发网页。

由于Electron应用中的每个窗口都对应一个网页,因此需要开发两个网页,分别是主窗口的index.html和新打开的窗口login.html。 也就是说,该项目由2个单页应用组成,与3-10管理多个单页应用中的项目非常相似。 让我们将其转换为 Electron 应用程序。

需要修改的地方如下:

在项目根目录下新建主流程入口文件main.js。 内容与上述相同;

主窗口网页代码如下:

import React, { Component } from 'react';
import { render } from 'react-dom';
import { remote } from 'electron';
import path from 'path';
import './index.css';
class App extends Component {
 // 在按钮被点击时
 handleBtnClick() {
  // 新窗口对应的页面的 URI 地址
  const modalPath = path.join('file://', remote.app.getAppPath(), 'dist/login.html');
  // 新窗口的大小
  let win = new remote.BrowserWindow({ width: 400, height: 320 })
  win.on('close', function () {
   // 窗口被关闭时清空资源
   win = null
  })
  // 加载网页
  win.loadURL(modalPath)
  // 显示窗口
  win.show()
 }
 render() {
  return (
   

    

Page Index

        

  )  } } render(, window.document.getElementById('app'));

登录后复制

最关键的部分是利用Electron库提供的API在按钮点击风暴期间打开新窗口并加载网页文件的地址。

17b3ffa5fd9c4e407dcee4689a0f9fe5

该页面的代码已更改。 接下来,更改创建代码。 这里需要进行以下操作来创建:

构造两个可以在浏览器中运行的网页,分别对应两个窗口的界面;

因为网页的JavaScript代码可能会调用Node.js原生模块或Electron模块,即输出代码依赖于该模块。 但由于此类模块是外部支持的webpack进程回收,因此构建的代码无法封装此类模块。

完成上述需求非常简单,因为Webpack内置了对Electron的支持。 只需在Webpack配置文件中添加一行代码即可,如下:

target: 'electron-renderer',

登录后复制

这个配置在2-7其他配置项-Target中提到过,意思是让Webpack构建Electron渲染过程的JavaScript代码,也就是这两个窗口需要的网页代码

上述修改完成后webpack进程回收,重新执行Webpack构建,相应网页所需的代码就会输出到项目根目录下的dist目录中。

为了作为 Electron 应用程序运行,您还需要安装新的依赖项:

# 安装 Electron 执行环境到项目中
npm i -D electron

登录后复制

安装成功后,在项目目录下执行Electron。 可以成功看到启动的桌面应用,如图:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 webpack webpack进程回收-Webpack建立Electron应用实例解读 https://www.wkzy.net/game/199708.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务