electron 网页TodoList工具打包成win桌面应用exe
创始人
2024-12-16 04:07:35
0

参考:
electron安装(支持win、mac、linux桌面应用)
https://blog.csdn.net/weixin_42357472/article/details/140643624
TodoList工具
https://blog.csdn.net/weixin_42357472/article/details/140618446

electron打包过程:

要将这个TodoList网页应用转换成Mac、Windows和Linux的桌面应用,你可以使用Electron框架。Electron允许你使用web技术(HTML、CSS和JavaScript)来创建跨平台的桌面应用。以下是将你的TodoList转换为Electron应用的步骤:

  1. 准备工作
    首先,确保你的系统中安装了Node.js和npm。

  2. 创建一个新的Electron项目
    创建一个新文件夹,并在其中初始化一个新的Node.js项目:

    mkdir todolist-app cd todolist-app npm init -y 

这里TodoList工具主要是:index.html、styles.css 、script.js
其他是electron打包需要配置文件:main.js 、package.json
在这里插入图片描述

  1. 安装Electron

    cnpm install electron --save-dev 
  2. 创建主进程文件
    在项目根目录创建一个名为main.js的文件,内容如下:

    const { app, BrowserWindow } = require('electron') const path = require('path')  function createWindow () {   const win = new BrowserWindow({     width: 800,     height: 600,     webPreferences: {       nodeIntegration: true,       contextIsolation: false     }   })    win.loadFile('index.html') }  app.whenReady().then(() => {   createWindow()    app.on('activate', () => {     if (BrowserWindow.getAllWindows().length === 0) {       createWindow()     }   }) })  app.on('window-all-closed', () => {   if (process.platform !== 'darwin') {     app.quit()   } }) 
  3. 修改package.json
    package.json文件中添加以下内容:

    {   "main": "main.js",   "scripts": {     "start": "electron ."   } } 
  4. 将你的HTML、css、js文件放在项目根目录
    index.html

                 TodoList            

TodoList

    styles.css

    body {     font-family: Arial, sans-serif;     max-width: 500px;     margin: 0 auto;     padding: 20px; } h1 {     text-align: center; } #todo-form {     display: flex;     margin-bottom: 20px; } #todo-input {     flex-grow: 1;     padding: 10px;     font-size: 16px;     border: 1px solid #ddd;     border-radius: 4px 0 0 4px; } #add-button {     padding: 10px 20px;     font-size: 16px;     background-color: #4CAF50;     color: white;     border: none;     border-radius: 0 4px 4px 0;     cursor: pointer; } #todo-list {     list-style-type: none;     padding: 0; } .todo-item {     display: flex;     align-items: center;     padding: 10px;     background-color: #f9f9f9;     border: 1px solid #ddd;     margin-bottom: 10px;     border-radius: 4px; } .todo-item.completed {     text-decoration: line-through;     opacity: 0.6; } .todo-item input[type="checkbox"] {     margin-right: 10px; } .delete-button {     margin-left: auto;     background-color: #f44336;     color: white;     border: none;     padding: 5px 10px;     border-radius: 4px;     cursor: pointer; } 

    script.js

    const todoForm = document.getElementById('todo-form'); const todoInput = document.getElementById('todo-input'); const todoList = document.getElementById('todo-list');  function loadTodos() {     chrome.storage.sync.get(['todos'], function(result) {         const todos = result.todos || [];         todos.forEach(todo => {             addTodoToDOM(todo.text, todo.completed);         });     }); }  function saveTodos() {     const todos = Array.from(todoList.children).map(li => ({         text: li.querySelector('span').textContent,         completed: li.classList.contains('completed')     }));     chrome.storage.sync.set({todos: todos}); }  function addTodoToDOM(text, completed = false) {     const li = document.createElement('li');     li.className = 'todo-item' + (completed ? ' completed' : '');     li.innerHTML = `         completed ? 'checked' : ''}>         ${text}              `;      li.querySelector('input[type="checkbox"]').addEventListener('change', function() {         li.classList.toggle('completed');         if (li.classList.contains('completed')) {             todoList.appendChild(li);         } else {             todoList.insertBefore(li, todoList.firstChild);         }         saveTodos();     });      li.querySelector('.delete-button').addEventListener('click', function() {         li.remove();         saveTodos();     });      if (completed) {         todoList.appendChild(li);     } else {         todoList.insertBefore(li, todoList.firstChild);     } }  todoForm.addEventListener('submit', function(e) {     e.preventDefault();     if (todoInput.value.trim() === '') return;      addTodoToDOM(todoInput.value);     saveTodos();     todoInput.value = ''; });  loadTodos(); 
    1. 运行应用
      现在你可以通过以下命令运行你的Electron应用:

      npm start 

    看效果
    在这里插入图片描述

    1. 打包应用
      要为不同平台打包应用,你可以使用electron-builder。首先安装它:

      cnpm install electron-builder --save-dev 

      然后在package.json中添加build配置

      {   "build": {     "appId": "com.yourcompany.todolist",     "mac": {       "category": "public.app-category.productivity"     },     "win": {       "target": [         "nsis"       ]     },     "linux": {       "target": [         "AppImage",         "deb"       ]     }   },   "scripts": {     "start": "electron .",     "build": "electron-builder --mac --win --linux"   } } 

      在这里插入图片描述

    最终package.json文件:
    icon是图标应用,大小至少需要放256*256大小像素的

    {   "name": "todolist-app",   "version": "1.0.0",   "main": "main.js",   "build": {     "appId": "com.yourcompany.todolist",     "mac": {       "category": "public.app-category.productivity"     },     "win": {       "icon": "icons/icon.png",       "target": [         "nsis"       ]     },     "linux": {       "target": [         "AppImage",         "deb"       ]     }   },   "scripts": {     "start": "electron .",     "build": "electron-builder  --win"   },   "keywords": [],   "author": "",   "license": "ISC",   "description": "",   "devDependencies": {     "electron": "^31.2.1",     "electron-builder": "^24.13.3"   } }  
    1. 构建应用
      运行以下命令来为所有平台构建应用:

      npm run build 

      这将在dist文件夹中生成针对Mac、Windows和Linux的安装包。
      注意:这里"build": “electron-builder --win” 只生成win平台的,其他linux需wsl打开或者linux平台操作;mac只能mac电脑操作

    在这里插入图片描述
    运行完会再dist文件下
    在这里插入图片描述
    双击exe启动
    在这里插入图片描述

    相关内容

    热门资讯

    玩家必看科普!胡莱三国辅助工具... 玩家必看科普!胡莱三国辅助工具(辅助挂)果然有开挂辅助脚本(有挂教学)暗藏猫腻,小编详细说明胡莱三国...
    揭秘一下!丰县14张脚本(辅助... 揭秘一下!丰县14张脚本(辅助挂)一向有开挂辅助黑科技(有挂分享)是一款可以让一直输的玩家,快速成为...
    发现一款!微乐小程序修复系统有... 您好,微乐小程序修复系统有用吗这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很...
    揭秘一下!aapoker怎么开... 揭秘一下!aapoker怎么开辅助器,pokermaster脚本(透视)固有有开挂辅助神器(有开挂工...
    一分钟了解!河洛杠次脚本入口在... 一分钟了解!河洛杠次脚本入口在哪(辅助挂)果然有开挂辅助工具(有挂存在);一、河洛杠次脚本入口在哪A...
    让我来分享经验!创思维辅助软件... 让我来分享经验!创思维辅助软件(辅助挂)先前有开挂辅助插件(有挂教学)是一款可以让一直输的玩家,快速...
    发现一款!微乐麻将脚本掌上程序... 发现一款!微乐麻将脚本掌上程序,雀姬辅助器,细节揭秘(有挂方式);发现一款!微乐麻将脚本掌上程序,雀...
    推荐一款!佛手在线有挂吗,德州... 推荐一款!佛手在线有挂吗,德州透视是真的假的(透视)切实有开挂辅助软件(有开挂攻略)是一款可以让一直...
    科技介绍!越乡游辅助工具(辅助... 科技介绍!越乡游辅助工具(辅助挂)果然有开挂辅助脚本(有挂解密)科技介绍!越乡游辅助工具(辅助挂)果...
    普及知识!拱趴大菠萝修改器(辅... 普及知识!拱趴大菠萝修改器(辅助挂)原本有开挂辅助神器(有挂教学),拱趴大菠萝修改器是用手机号来登录...