(1/7)Electron教程(一)什么是 Electron,由来、适用场景 和 Electron 的环境搭建(1/7)

(1/7)Electron教程(一)什么是 Electron,由来、适用场景 和 Electron 的环境搭建(1/7)最近自己有个小的需求 是做一个能编辑本地特定文本的工具 需要跨平台 Windows 和 macOS 这样 如果用原生开发的话 Windows 就要用 c macOS 就要用 swift 学习成本高 并且学完用处也不是很大 我本身是前端开发的 发现了这个 electron 能满足我的需求 跨平台运行 内部是 js 驱动的 简直就是如鱼得水 顺便把学习的经历写出来 分享需要的人 我会按标题序号渐进式地编写内容 electron

(1/7)Electron教程(一)什么是 Electron,由来、适用场景 和 Electron 的环境搭建

一、前言

最近自己有个小的需求,是做一个能编辑本地特定文本的工具,需要跨平台, Windows 和 macOS,这样,如果用原生开发的话,Windows 就要用 c# macOS 就要用 swift,学习成本高,并且学完用处也不是很大。
我本身是前端开发的,发现了这个 electron 能满足我的需求,跨平台运行,内部是 js 驱动的,简直就是如鱼得水。
顺便把学习的经历写出来,分享需要的人,我会按标题序号渐进式地编写内容。
如果你喜欢这个文章,欢迎点赞评论支持。






二、什么是 electron

electron 其实就是个壳子,一个可以展示网页内容的壳子,相当于一个独立的浏览器,而这个浏览器可以提供给你一些接口,去调用系统的资源。
一般在浏览器中网页是没有权限去调用系统资源的,本地文件都无法自主获取,只能通过用户操作喂给浏览器才行。
有了 electron 就自由了,可以调用 electron 提供的一些系统功能,所有 nodejs 中可以使用的功能都可以。




你看到的 electron 程序内的界面全是 html + css 搭建的,并不是原生系统的界面方法。

electron 的一个很大的优势是可以做到一套代码通吃各平台,因为它的核心逻辑是 js 写的,只需要给不同平台的应用套上一个对应的外壳即可。

应用场景
我感觉有两种应用场景很适合用 electron,都是趋于本地化的:

  • 一种是希望给现有项目打包成可执行文件,直接双击打开使用,不需要布署 web 服务器
  • 另一种是想做一个本地化的工具,能操作系统资源,并且能跨平台使用

实例
其实你正在用的应用中就有不少是用 Electron 做的, VSCode 就是,你敢信?还有比较不错的下载工具 Motrix

由来
electron 的前身是 atom 编辑器,是在它的基础上实现过来的一套跨平台解决方案,

参阅:Introducing Electron

electron具体能实现些什么功能,具体可以看这里

https://www.electronjs.org/docs

三、环境搭建

1. 所需的基础文件

基础的环境搭建只需要三个文件

github: https://github.com/KyleBing/electron-demo

.
├── app.js
├── index.html
└── package.json

所有使用 npm 的项目都是一个 npm 包,只不过你的包是私密的。这个可以去看 npm 基础。

package.json

package.json 中只需要在 devDependencies 标签中添加 electron 即可
字段 main 指定程序的入口 js 文件,也就是上面的 app.js
这个名字自己随便定, main.js 也行,对应上就可以。




electron 的版本号不一定非是这个,用最新的就好了。这个是我写教程时的最新版本。

{ 
    "name": "electron-demo", "version": "0.1.0", "private": true, "author": { 
    "name": "KyleBing", "email": "" }, "description": "demo-electron", "main": "app.js", "scripts": { 
    "start": "electron ." }, "devDependencies": { 
    "electron": "^13.1.7" } } 
app.js

这是程序的入口文件,electron 的主进程就是这个。里面是关于 electron app 的一些生命周期方法

const { 
   app, BrowserWindow} = require('electron'); const url = require("url"); const path = require("path"); let mainWindow function createWindow() { 
    mainWindow = new BrowserWindow({ 
    width: 800, height: 600, webPreferences: { 
    nodeIntegration: true, contextIsolation: false } }) mainWindow.loadURL( url.format({ 
    pathname: path.join(__dirname, 'index.html'), // 指定好对应的主页文件就好了 protocol: "file:", slashes: true }) ) mainWindow.on('closed', function () { 
    mainWindow = null }) mainWindow.webContents.openDevTools() // 显示这个窗口的调试窗口,如果不想显示,删除该段即可 } // 程序启动时 app.on('ready', ()=>{ 
    createWindow() }) // 所有窗口关闭时 app.on('window-all-closed', function () { 
    if (process.platform !== 'darwin') app.quit() }) // 程序处于激活状态时 app.on('activate', function () { 
    if (mainWindow === null) { 
    createWindow() } }) 
index.html

目前只是简单的 html 主页文件

 
    DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Eelctron-Demo 
      title>  
       head> <body> <h1>Electron Demo 
        h1> <p>你好呀! 
         p>  
          body>  
           html> 

2. 安装依赖

在当前目录下,终端执行 npm 包的安装即可,可以使用 npm

npm i 

请添加图片描述

也可以使用 yarn

yarn 

请添加图片描述

我喜欢使用 yarn

3. 运行

现在就可以运行了

npm run start 

请添加图片描述

关于打包等一些高级操作,请看专栏后续文章

四、它可以做成什么样子

五笔助手 https://github.com/KyleBing/wubi-dict-editor

在这里插入图片描述
当然,这肯定不是一天就写成的,从无到有还是要有个过程的:

过程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203922.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午9:17
下一篇 2026年3月19日 下午9:17


相关推荐

  • MySQL explain详解

    MySQL explain详解MySQLexplain详解Explain简介本文主要讲述如何通过explain命令获取select语句的执行计划,通过explain我们可以知道以下信息:表的读取顺序,数据读取操作

    2022年7月2日
    26
  • Ubuntu安装ssh服务详细过程[通俗易懂]

    SSH服务简介(来自百度百科)SSH为SecureShell的缩写,由IETF的网络小组(NetworkWorkingGroup)所制定;SSH为建立在应用层基础上的安全协议。SSH是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、.

    2022年4月6日
    61
  • kafka的优点包括_如何利用优势

    kafka的优点包括_如何利用优势Kafka的优势有哪些?经常应用在哪些场景?Kafka的优势比较多如多生产者无缝地支持多个生产者、多消费者、基于磁盘的数据存储、具有伸缩性、高性能轻松处理巨大的消息流。多用于开发消息系统,网站活动追踪、日志聚合、流处理等方面。今天我们一起来学习Kafka的相关知识吧!一、Kafka的优势有哪些?1.多生产者可以无缝地支持多个生产者,不论客户端在使用单个主题还是多个主题。2.多消费者支持多个消费者从一个单独的消息流上读取数据,且消费者之间互不影响。3.基于磁盘的数据存储支持消费者非实时地

    2022年10月14日
    3
  • [分布式]:分布式系统的CAP理论

    [分布式]:分布式系统的CAP理论2000年7月,加州大学伯克利分校的EricBrewer教授在ACMPODC会议上提出CAP猜想。2年后,麻省理工学院的SethGilbert和NancyLynch从理论上证明了CAP。之后,CAP理论正式成为分布式计算领域的公认定理。CAP理论概述一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition…

    2022年6月16日
    32
  • linux下安装oracle客户端

    linux下安装oracle客户端linux 下安装 oracle 客户端 1 下载 oracle 官网下载安装包根据访问数据的版本下载对应客户端 每种包又分 zip rpm 两种格式包 zip 包相当于解压后免安装版 rpm 包需要安装版 2 安装解压缩到 oracle 事先创建好 oracle 用户及 oracle 目录 unzipinstant basic linux x64 11 2 0 4 0 zipunzipinst sqlplus linux x64 11 2 0 4 0 zip 生成目录 usr l

    2026年3月18日
    2
  • Mac MAMP 使用终端shell操作mysql数据库

    Mac MAMP 使用终端shell操作mysql数据库

    2021年10月17日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号