electron桌面应用程序搭建及简单运行

yizhihongxing

下面是详细的“electron桌面应用程序搭建及简单运行”的完整攻略。

一、什么是Electron?

Electron 是由 Github 开发,用 HTML,CSS 和 JavaScript 来构建跨平台桌面应用程序的一个开源库。通过 Electron,可以使用 Web 技术如 HTML,CSS 和 JavaScript 来设计和构建 Windows、MacOS 和 Linux 等跨平台桌面应用程序。

二、Electron开发环境安装

1. 安装Node.js

Electron 是基于 Node.js 运行的,所以必须先安装 Node.js。安装方法可以上 Node.js 官网下载对应的安装包。

2. 安装Electron

在命令行中执行以下命令安装 Electron:

npm install electron -g

3. 使用Electron

创建一个新的项目目录,进入该目录,新建一个 package.json 文件(用于管理项目依赖),然后执行命令安装 Electron 的依赖:

npm init
npm install electron --save-dev

安装完成后,在项目的根目录下创建一个 main.js 文件,文件内容如下:

const { app, BrowserWindow } = require('electron')

function createWindow () {
  // 创建窗口对象
  let win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      // 使用nodejs
      nodeIntegration: true
    }
  })

  // 窗口加载html页面
  win.loadFile('index.html')
}

// electron初始化完成时触发
app.on('ready', createWindow)

在项目根目录下新建一个 index.html 文件,文件内容如下:

<!DOCTYPE html>
<html>
<head>
  <title>Hello World!</title>
</head>
<body>
  <h1>Hello World!</h1>
</body>
</html>

接下来,在命令行中输入以下命令运行应用程序:

electron .

运行成功后,将会在桌面上弹出一个 Electron 应用程序,窗口中将会显示一个 “Hello World!” 的标题。

三、示例说明

下面我们来实现一个简单的托盘应用程序和一个文件选择器应用程序。

1. 托盘应用程序

创建一个名为 tray-app 的项目目录。

在该目录下创建如下文件:

index.html 文件:

<!DOCTYPE html>
<html>
<head>
  <title>Tray App</title>
  <script type="text/javascript">
    const { app, Menu, Tray } = require('electron')

    let tray

    function createTrayIcon() {
      tray = new Tray('./icon.png')
      const contextMenu = Menu.buildFromTemplate([
        { role: 'quit' }
      ])
      tray.setToolTip('Tray App')
      tray.setContextMenu(contextMenu)
    }

    app.whenReady().then(() => {
      createTrayIcon()
    })
  </script>
</head>
<body>
  <p>Tray App</p>
</body>
</html>

main.js 文件:

const { app, BrowserWindow, Tray } = require('electron')
const path = require('path')

let win

function createWindow () {
  win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })

  win.loadFile('index.html')
}

app.whenReady().then(() => {
  // 监听关闭事件
  app.on('window-all-closed', function () {
    // 判断是不是 Mac 系统
    if (process.platform !== 'darwin') {
      app.quit()
    }
  })

  app.on('activate', function () {
    if (win === null) {
      createWindow()
    }
  })

  // 创建菜单栏
  const template = [{
    label: 'Edit',
    submenu: [
      {role: 'undo'},
      {role: 'redo'},
      {role: 'cut'},
      {role: 'copy'},
      {role: 'paste'},
      {role: 'selectall'}
    ]
  }]

  const menu = Menu.buildFromTemplate(template)
  Menu.setApplicationMenu(menu)

  createWindow()
})

将图片文件 icon.png 放在项目根目录下。

在命令行中输入以下命令运行应用程序:

electron .

运行成功后,将会在系统托盘中看到 Tray App 图标。

2. 文件选择器应用程序

在上面的 tray-app 项目目录下创建一个名为 dialog-app 的项目目录。

在该目录下创建如下文件:

index.html 文件:

<!DOCTYPE html>
<html>
<head>
  <title>Dialog App</title>
  <script type="text/javascript">
    const { app, dialog } = require('electron')

    function openFileDialog() {
      dialog.showOpenDialog({
        properties: ['openFile', 'multiSelections']
      }).then(result => {
        console.log(result.filePaths)
      }).catch(err => {
        console.log(err)
      })
    }
  </script>
</head>
<body>
  <button onclick="openFileDialog()">选择文件</button>
</body>
</html>

main.js 文件:

const { app, BrowserWindow } = require('electron')

let win

function createWindow () {
  win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })

  win.loadFile('index.html')
}

app.whenReady().then(() => {
  // 监听关闭事件
  app.on('window-all-closed', function () {
    // 判断是不是 Mac 系统
    if (process.platform !== 'darwin') {
      app.quit()
    }
  })

  app.on('activate', function () {
    if (win === null) {
      createWindow()
    }
  })

  createWindow()
})

在命令行中输入以下命令运行应用程序:

electron .

运行成功后,将在应用程序窗口中看到一个选择文件的按钮,点击按钮可调用系统文件选择器。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:electron桌面应用程序搭建及简单运行 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • oracle(创建视图)

    Oracle – 创建视图 在Oracle数据库中,视图(View)是一种虚拟表,它不存储数据,而是基于一个或多个表的查询结果返回的临时结果集。在查询数据时,视图可以用作查询表的一个代理,它可以简化查询操作,同时保证查询操作的安全性。本文将介绍 Oracle 数据库中如何创建视图。 语法 创建视图的语法如下: CREATE [OR REPLACE] [FOR…

    其他 2023年3月28日
    00
  • Linux系统中如何实现远程控制

    在Linux系统中,我们可以使用远程控制工具来实现远程控制。下面将详细讲解两种实现远程控制的方法,包括SSH和VNC。 1. SSH远程控制 1.1 什么是SSH SSH是一种广泛用于远程登录和传输数据的加密协议。它可以通过互联网或本地网络连接到远程计算机,使用户可以通过命令行界面(CLI)进行操作。 1.2 基本用法 使用SSH需要在本地计算机上安装SSH…

    other 2023年6月27日
    00
  • JS实现自定义弹窗功能

    当用户操作的某些行为需要提示时,一般会使用弹窗(Modal)来提醒用户。JS实现自定义弹窗功能可以增强网站的交互体验,并且也有助于优化用户体验。 下面是JS实现自定义弹窗功能的完整攻略: 步骤一:创建弹窗模板 首先,我们需要创建一个弹窗模板,在这个模板中设置弹窗的样式、布局等。以下是一个简单的弹窗模板: <div class="modal&q…

    other 2023年6月25日
    00
  • Python查询IP地址归属完整代码

    Python查询IP地址归属完整代码攻略 简介 在Python中,我们可以使用第三方库来查询IP地址的归属地信息。一个常用的库是ip2region,它提供了一个简单的接口来查询IP地址的归属地信息。下面是一个完整的攻略,包含了安装库、使用库查询IP地址归属地的代码示例。 步骤 1. 安装ip2region库 首先,我们需要安装ip2region库。可以使用p…

    other 2023年7月30日
    00
  • 基于Comparator对象集合实现多个条件按照优先级的比较

    基于Comparator对象集合实现多个条件按照优先级的比较 在Java中,我们可以使用Comparator对象来实现多个条件按照优先级进行比较。Comparator接口是一个函数式接口,它定义了一个compare方法,用于比较两个对象的顺序。我们可以自定义一个Comparator对象,并使用它来排序一个对象集合。 下面是一个完整的攻略,用于实现多个条件按照…

    other 2023年6月28日
    00
  • JAVA中堆、栈,静态方法和非静态方法的速度问题

    JAVA中堆、栈,静态方法和非静态方法的速度问题 在Java中,堆和栈是两种不同的内存区域,而静态方法和非静态方法是两种不同的方法类型。它们在速度方面有一些区别。 堆和栈的速度问题 堆 堆是用于存储对象的内存区域。在堆中分配内存需要动态分配和回收,因此速度相对较慢。堆中的对象可以被多个线程共享,因此需要进行线程同步操作。 示例说明1:堆中的对象分配和回收 p…

    other 2023年10月15日
    00
  • TP(thinkPHP)框架多层控制器和多级控制器的使用示例

    接下来我会详细讲解ThinkPHP框架中多层控制器和多级控制器的使用示例。 什么是多层控制器和多级控制器 在Web开发中,控制器是MVC框架中的重要组成部分。在大型Web应用中,通常会将控制器进行层次化或分级管理,以方便代码管理和维护。在ThinkPHP框架中,我们可以通过多层控制器和多级控制器来实现控制器的层次化和分级管理。 多层控制器指的是在应用目录下新…

    other 2023年6月27日
    00
  • java生成随机字符串方法(三种)

    以下是关于Java生成随机字符串方法的完整攻略,包括三种生成随机字符串的方法和两个示例说明。 方法一:使用Random类生成随机字符串 使用Java的Random类可以生成随机字符串。以下是使用Random类生成随机字符串的步骤: 创建一个Random对象; 定义一个字符串变量,用于存储生成的随机字符串; 使用Random对象生成随机数,并将其转换为字符; …

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部