Electron快速入手,拥有自己的第一个桌面应用

简介: Electron 是一个跨平台的、基于 Web 前端技术的桌面 GUI 应用程序开发框架。支持 Web 技术开发桌面应用,其本身是基于 C++ 开发的,GUI 核心来自于 Chrome,而 JavaScript 引擎使用 v8。这使得我们使用前端技术就可以开发出属于自己的第一个桌面应用。

前言

Electron是什么?

Electron 是一个跨平台的、基于 Web 前端技术的桌面 GUI 应用程序开发框架。

支持 Web 技术开发桌面应用,其本身是基于 C++ 开发的,GUI 核心来自于 Chrome,而 JavaScript 引擎使用 v8。

这使得我们使用前端技术就可以开发出属于自己的第一个桌面应用。

目前市场上很多成熟的桌面端应用都是使用Electron开发的。例如:VScode有道云飞书等。

Electron解决了什么?

1、一套代码可以在多个平台运行。
Electron 兼容 Mac、Windows 和 Linux,一套代码可以构建出三个平台的应用程序。

2、开发简单便捷,而且前端人员自己就可以独立开发。
Electron 基于 Chromium 和 Node.js, 可以使用 HTML、CSS、JavaScript 便捷开发并构建应用。

3、混合开发,降低开发难度,减少开发时间。
系统底层C++ 插件可以编译成 Node 文件供 Electron 直接使用。

涉及到的技术栈

使用Electron开发桌面应用,会用到哪些技术栈呢?

1、Electron:提供桌面端应用能力。

2、Nodejs:用于本地文件系统和操作系统,或提供 server 能力。

3、html、css、javascript:可以使用 React、Vue 等编译后的文件。

4、打包工具:webpack、vite 等。

都是前端技术栈,唯一不同的是,需要学习 Electron。

废话不多说,直接 hello world!

本地环境

搭建 Node 环境即可

node -v
npm -v

注意:ElectronNodejs的各自版本必须要对应,具体两者对应版本见版本发布

image.png

我们用 Electron 官方提供的最新稳定版本进行演示。

Electron 19.0.8
Node 16.14.2

Hello World

克隆运行代码

git clone https://github.com/electron/electron-quick-start
cd electron-quick-start
npm install
npm start

这样项目就启动成功了。。。

代码解析

main.js 是应用的入口文件。里面包含了应用启动完成、窗口创建等。

入口文件的路径配置在 package.json 中。

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

function createWindow () {
   
   
  const mainWindow = new BrowserWindow({
   
   
    width: 800,
    height: 600,
    webPreferences: {
   
   
      preload: path.join(__dirname, 'preload.js')
    }
  })

  mainWindow.loadFile('index.html')
  // mainWindow.webContents.openDevTools()
}

app.whenReady().then(() => {
   
   
  createWindow()

  app.on('activate', function () {
   
   
    // On macOS it's common to re-create a window in the app when the
    // dock icon is clicked and there are no other windows open.
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

app.on('window-all-closed', function () {
   
   
  if (process.platform !== 'darwin') app.quit()
})

页面的入口文件 html,按照前端的正常开发就可以。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'">
    <link href="./styles.css" rel="stylesheet">
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    <p>窗口创建成功</p>
    <!-- You can also require other files to run in this process -->
    <script src="./renderer.js"></script>
  </body>
</html>

以上就是一个简单桌面端应用的代码。

桌面端开发,核心是开发独立窗口。 那么如何开发独立窗口呢?

BrowserWindow

BrowserWindow 是用来创建、管理窗口的 Native API

const mainWindow = new BrowserWindow({
   
   
    width: 800,
    height: 600,
    webPreferences: {
   
   
      preload: path.join(__dirname, 'preload.js')
    }
})

mainWindow.loadFile('index.html')

可以自定义设置窗口的宽度,实现窗口尺寸的调整(位置也可以调整,详见 setBounds、setPosition)。

loadFile 用于加载本地文件,也可以直接加载网络地址,如:

mainWindow.loadURL('https://github.com');

如果想像浏览器那样可以查看、调试运行的代码,就打开 DevTools。

mainWindow.webContents.openDevTools()

页面html是不能直接使用端的能力的,所以Electron提供了 preload

Preload

preload 可以通过加载调用端能力的 Api 文件,从而使用端的能力。

端的能力是由 Nodejs、Electron 提供的,如下方 process。

// preload.js
window.addEventListener('DOMContentLoaded', () => {
   
   
  const replaceText = (selector, text) => {
   
   
    const element = document.getElementById(selector)
    if (element) element.innerText = text
  }

  for (const type of ['chrome', 'node', 'electron']) {
   
   
    // 通过getElementById赋值process信息
    replaceText(`${
     
     type}-version`, process.versions[type])
  }
})

《快速拥有自己的第一个Electron桌面应用》就介绍到这里。

结语

感谢您的阅读!希望本文带给您有价值的信息。

如果对您有帮助,请「点赞」支持,并「关注」我的主页获取更多后续相关文章。同时,也欢迎「收藏」本文,方便以后查阅。

写作不易,我会继续努力,提供有意义的内容。感谢您的支持和关注!

下一篇分享

Electron从0到1构建跨平台应用

目录
相关文章
|
资源调度 运维 JavaScript
使用electron创建桌面应用及常见打包错误解决
使用electron创建桌面应用及常见打包错误解决
1987 3
|
缓存 JavaScript 前端开发
高效打造跨平台桌面应用:Electron加载服务器端JS
【9月更文挑战第17天】Electron 是一个基于 Chromium 和 Node.js 的开源框架,允许使用 HTML、CSS 和 JavaScript 构建跨平台桌面应用。加载服务器端 JS 可增强应用灵活性,实现代码复用、动态更新及实时通信。通过 HTTP 请求、WebSocket 或文件系统可实现加载,但需注意安全性、性能和兼容性问题。开发者应根据需求选择合适方法并谨慎实施。
771 3
|
安全 Linux 开发工具
零基础构建开源项目OpenIM桌面应用和pc web- Electron篇
OpenIM 为开发者提供开源即时通讯 SDK,作为 Twilio、Sendbird 等云服务的替代方案。借助 OpenIM,开发者可以构建安全可靠的即时通讯应用,如 WeChat、Zoom、Slack 等。 本仓库基于开源版 OpenIM SDK 开发,提供了一款基于 Electron 的即时通讯应用。您可以使用此应用程序作为 OpenIM SDK 的参考实现。本项目同时引用了 @openim/electron-client-sdk 和 @openim/wasm-client-sdk,分别为 Electron 版本和 Web 版本的 SDK,可以同时构建 PC Web 程序和桌面应用(Wi
1269 2
|
开发框架 JavaScript 前端开发
Electron技术深度解析:构建跨平台桌面应用的利器
【10月更文挑战第13天】Electron技术深度解析:构建跨平台桌面应用的利器
1141 0
|
容器 iOS开发 Linux
震惊!Uno Platform 响应式 UI 构建秘籍大公开!从布局容器到自适应设计,带你轻松打造跨平台完美界面
【8月更文挑战第31天】Uno Platform 是一款强大的跨平台应用开发框架,支持 Web、桌面(Windows、macOS、Linux)及移动(iOS、Android)等平台,仅需单一代码库。本文分享了四个构建响应式用户界面的最佳实践:利用布局容器(如 Grid)适配不同屏幕尺寸;采用自适应布局调整 UI;使用媒体查询定制样式;遵循响应式设计原则确保 UI 元素自适应调整。通过这些方法,开发者可以为用户提供一致且优秀的多设备体验。
645 0
|
前端开发 JavaScript API
强强联手打造桌面应用新标杆:Angular与Electron的完美融合——从环境搭建到通信机制,全面解析构建跨平台应用的最佳实践与技巧
【8月更文挑战第31天】随着Web技术的进步,开发者们越来越多地采用Web技术来构建桌面应用程序。通过结合使用开源框架Electron及前沿的前端框架Angular,开发者能充分利用JavaScript、HTML和CSS打造出高性能且易维护的跨平台桌面应用。本文将详细介绍如何搭建基于Angular与Electron的开发环境,包括创建Angular项目、安装Electron及相关依赖、配置Electron主进程以及实现Angular应用与Electron间的通信等关键步骤,并最终将应用打包成多平台可执行文件,为读者提供了一套完整的解决方案以快速入门并实践这一强大技术组合。
816 0
|
JavaScript 前端开发 安全
【TypeScript技术专栏】TypeScript在Electron桌面应用中的实践
【4月更文挑战第30天】本文介绍了如何在Electron桌面应用中采用TypeScript以提升代码质量和可维护性。Electron利用Chromium和Node.js让前端开发者能创建桌面应用,而TypeScript的强类型系统和高级语言特性有助于管理复杂项目。通过初始化项目、安装依赖、配置TypeScript、编写主进程和渲染进程代码,开发者可以在Electron中实践TypeScript。一个简单的文本编辑器案例展示了TypeScript在确保类型安全方面的优势。尽管有学习成本,但TypeScript对大型Electron项目来说是值得的。
1619 0
|
JavaScript 前端开发 API
如何利用JavaScript和Electron构建具有丰富功能的桌面应用
【4月更文挑战第30天】如何利用JavaScript和Electron构建具有丰富功能的桌面应用
185 0
|
JavaScript 前端开发 Linux
Vue.js + Electron 的跨平台桌面应用程序开发
本文介绍了 Vue.js 和 Electron 的基本特点和原理,并分析了它们在桌面应用程序开发中的优势和应用场景。在基于 Vue.js 和 Electron 的桌面应用程序开发实践中,本文详细介绍了项目的搭建和配置,包括环境的准备、项目的初始化和依赖的安装等步骤。然后,本文介绍了使用 Vue.js 进行界面设计和组件开发的方法,并提供了相关的示例代码和实现细节。接下来,本文探讨了 Electron 主进程和渲染进程的开发,包括窗口管理、文件系统访问和与底层系统交互等方面的内容。最后,本文对基于 Vue.js 和 Electron 的桌面应用程序开发做出了总结,并展望了未来的发展方向和应用前景
1324 2
|
Ubuntu Linux Windows
Electron如何在UOS操作系统(统信)下打包成桌面应用?
Electron如何在UOS操作系统(统信)下打包成桌面应用?
Electron如何在UOS操作系统(统信)下打包成桌面应用?