6步!!!用 Electron开发一个记事本


只需要6步, 用 Electron 开发一个记事本, 带打开,编辑,保存 功能。可以很方便编译成Windows、macOS或Linux的安装包

1.初始化项目

首先,你需要创建一个新的项目目录并初始化它:

mkdir electron-notepad
cd electron-notepad
npm init -y

2. 安装Electron

安装Electron作为项目的依赖:

npm install electron --save-dev

3. 创建主进程文件

在项目根目录下创建main.js,这将是Electron的主进程文件:

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

function createWindow ({
  // 创建浏览器窗口
  let win = new BrowserWindow({
    width800,
    height600,
    webPreferences: {
      nodeIntegrationtrue
    }
  });

  // 加载index.html文件
  win.loadFile('index.html');
}

app.on('ready', createWindow);

4. 创建HTML文件

在项目根目录下创建index.html,这将是记事本的界面:

<!DOCTYPE html>
<html>
<head>
  <title>Electron Notepad</title>
</head>
<body>
  <textarea id="notepad" style="width: 100%; height: 90%;"></textarea>
  <br>
  <button onclick="save()">保存</button>
  <button onclick="load()">打开</button>
  <script>
    const { ipcRenderer } = require('electron');

    function save({
      let text = document.getElementById('notepad').value;
      ipcRenderer.send('save-text', text);
    }

    function load({
      ipcRenderer.send('load-text');
    }

    ipcRenderer.on('received-text', (event, text) => {
      document.getElementById('notepad').value = text;
    });
  
</script>
</body>
</html>

5. 添加IPC通信

main.js中添加IPC通信,以便在Electron的主进程和渲染进程之间传递数据:

const { ipcMain } = require('electron');

ipcMain.on('save-text', (event, text) => {
  // 这里可以添加保存文件的逻辑
  console.log('Text saved:', text);
});

ipcMain.on('load-text', (event) => {
  // 这里可以添加加载文件的逻辑
  event.reply('received-text''This is loaded text.');
});

6. 编译安装包

要编译Electron应用程序为Windows、macOS或Linux的安装包,你可以使用electron-packagerelectron-builder。以下是使用electron-builder的步骤:

  1. 安装electron-builder
npm install electron-builder --save-dev
  1. package.json中添加构建脚本:
"scripts": {
  "start""electron .",
  "dist""electron-builder"
}
  1. 运行构建命令:
  • 对于Windows:
npm run dist --win
  • 对于macOS:
npm run dist --mac
  • 对于Linux:
npm run dist --linux

请注意,这个示例是一个基础的起点,实际的应用程序可能需要更多的错误处理、文件路径管理和其他功能。此外,Electron和相关工具的API可能会随时间更新,所以请确保查看最新的文档和指南。

相关推荐

  • 113K Star微软甄选!!!用这个框架开发百万人爱的VSCode
  • 月之暗面新活:Kimi浏览器插件
  • 聪明的大模型都认为9.11 大于 9.9……
  • AMD与国产AI芯势力创始人领衔!2024全球AI芯片峰会首批嘉宾公布,报名正式开启
  • 顶级AI投资人发起中国大模型群聊:十大趋势、具身智能、AI超级应用
  • 一年变现1500w,如何从0-1做一家小吃加盟店?
  • 博客园再次发出求救信
  • 牛皮!我被银行码农的工资惊到了
  • 前端 lockfile 合并冲突,如何正确地处理?
  • 【议题征集】2024 Hong Kong RISC-V Day 来了!
  • KubeCon+CloudNativeCon首次亮相香港,Jim Zemlin、Linus Torvalds引领行业巨擘共襄盛举
  • 什么赛博码农——脑机接口让脑出血“码农”重返岗位
  • 一个令人惊艳的 AI 开源神器,诞生了!
  • 专为 Excel 而生!微软推出新 AI 模型,网友:会计师和数据分析师,危?
  • 下半年,必须要干点大项目了
  • 绕晕了!9.11 大还是 9.9 大,难倒一批 AI 大模型?
  • 大模型集体失智!9.11比9.9大?全员翻车!
  • 曾年入140亿的巨头,要破产了
  • 30B!每秒100tokens!这是AMD对AI PC的“幻想时间”
  • Reddit传疯的Claude 3.5 Artifacts 的核心系统提示词!Code效果猛增