如何快速搭建Electron应用?

本文为Electron+Vue3开发桌面端软件系列文章第一篇

通过本文,你将获得:

  1. 如何快速搭建一个Electron项目
  2. 了解Electron的基本配置及修改

技术选型

开发桌面端有如下几种技术方案:

  1. Electron:使用HTML、CSS和JS构建跨平台的桌面应用程序,基于Chromium和Node.js。
  2. NW.js:(也称node-webkit)类似于Electron。
  3. React Native:使用React和JS。
  4. Flutter:使用Dart编程语言,可构建高度定制的桌面应用程序。

本文这里选择Electron。

创建项目

基于electron-vite创建,执行pnpm create @quick-start/electron

启动项目,会自动打开一个electron应用,如下图所示:

出现如上画面说明,基于electron-vite脚手架创建的项目成功了。

改造项目结构

首先来认识一下默认的项目目录结构。

scss 复制代码
|-src
	|-main
    |-index.js  // electron主程序执行
	|-preload
    |-index.js  // 预加载脚本的包
	|-renderer
  	|-src  // 业务代码
  	|-index.html  // 渲染页面

那对应的是,官网的这张图:

明白了项目结构,那最先可以改造的可以从renderer下手。renderer下就是常见的Vue3项目代码,清理App.vue中代码,修改成如下:

xml 复制代码
<template>Electron TodoList</template>
<script setup></script>
<style lang="less"></style>

画面会实时更新,如下图所示:

配置修改

修改renderer下的代码只会更新主窗口界面,那如何修改应用窗口的配置?例如窗口上名称,图标等。

标题

renderer/index.html,修改title

xml 复制代码
<title>Electron TodoList</title>

窗口上的标题会随之改变,如下图所示:

图标

准备一个png图片,尺寸建议在256*256

在根目录下的resources文件夹下,可以同名替换icon.png也可以自定义名称添加。例如,我在resources下放入一个图片chickenLeg.png

窗体的配置都在main/index.js中,new一个BrowserWindow时传入配置项,其中就有icon的配置。

javascript 复制代码
import chickenLeg from '../../resources/chickenLeg.png?asset'
const mainWindow = new BrowserWindow({
  ...
  icon: chickenLeg
})

main代码修改之后,都需要重新执行pnpm dev,正常如期显示:

其他配置

BrowserWindow其他配置参数,可以参考官网:www.electronjs.org/docs/latest...

常见的有:

  1. width:窗口的宽度,默认值为 800。
  2. height:窗口的高度,默认值为 600。
  3. show:窗口是否在创建时显示,默认值为 true。
  4. alwaysOnTop:窗口是否永远在别的窗口的上面,默认值为 false。
  5. frame:设置为 false 时可以创建一个无边框窗口,默认值为 true。
  6. backgroundColor:窗口背景色,默认值为 #FFF(白色)。
  7. autoHideMenuBar:自动隐藏菜单栏,除非按了Alt键,默认值为 false。

总结

  1. 通过脚手架electron-vite创建Electron项目,执行pnpm create @quick-start/electron
  2. BrowserWindow中修改Electron相关配置。
相关推荐
大龄秃头程序员39 分钟前
我在图文流 App 里落地双层缓存、弱网降级与 OOM 治理
前端
老王以为42 分钟前
React Renderer 分离的多平台架构
前端·react native·react.js
hunterandroid1 小时前
Kotlin Coroutines 与 Flow:让异步任务更清晰
前端
Bigger1 小时前
从零搭建 AI 代码审查服务:一份前端也能看懂的 Python 学习笔记
前端·ci/cd·ai编程
lichenyang4532 小时前
JSAPI、NAPI、Biz、Imp:ASCF Demo 如何真正调用系统能力和 C++ 能力
前端
lichenyang4532 小时前
IPC、JSVM、UIThread、libuv:ASCF 架构图里最容易混的几个词
前端
用户059540174462 小时前
Redis记忆存储故障恢复测试踩坑实录:手动测试让我漏掉了2个一致性Bug
前端·css
用户2136610035722 小时前
Vue2脚手架工程化与Axios集成
前端·vue.js
我不是外星人2 小时前
我把 Claude Code 搬到网页!自研高颜值 Web 交互工作台
前端·ai编程·claude
mixuecoding2 小时前
零成本搭建全球科技热点情报站:12 个平台,6 小时,0 元
前端