随着 Web 技术的发展,越来越多的开发者希望通过 Web 技术来构建桌面应用。Electron 是一个流行的框架,允许开发者使用 Web 技术(HTML、CSS 和 JavaScript)来创建跨平台的桌面应用。本文将介绍如何使用 Electron 构建、打包和分发桌面应用。
Electron 是由 GitHub 开发的开源框架,它允许开发者使用 Web 技术构建桌面应用。Electron 提供了许多原生应用的特性,如安装程序、自动更新、崩溃报告和通知。可以将 Electron 视为 Web 应用的包装器,它创建可在不同操作系统上运行的可执行文件,并提供与底层操作系统通信的方式。这样,就不需要为每个操作系统创建单独的应用了。
使用 Electron 创建最简单的桌面混合应用通常需要三个文件:Index.html、Main.js 和 Package.json。
        Index.html 是一个 HTML 文档,包含想要展示的 Web 内容。例如:
        
            <!DOCTYPE html>
            <html>
            <head>
                <meta charset="UTF-8">
                <title>First Hybrid app!</title>
            </head>
            <body>
                <h1>Hello From Electron Side!</h1>
            </body>
            </html>
        
        Main.js 是一个 JavaScript 文件,用于启动应用并创建操作系统中的容器来渲染 HTML 文件。例如:
        
            'use strict';
            const electron = require('electron');
            const app = electron.app;
            const BrowserWindow = electron.BrowserWindow;
            let mainWindow;
            function createWindow () {
                mainWindow = new BrowserWindow({width: 800, height: 600});
                mainWindow.loadURL('file://' + __dirname + '/index.html');
                mainWindow.webContents.openDevTools();
                mainWindow.on('closed', function() {
                    mainWindow = null;
                });
            }
            app.on('ready', createWindow);
            app.on('window-all-closed', function() {
                if (process.platform !== 'darwin') {
                    app.quit();
                }
            });
            app.on('activate', function() {
                if (mainWindow === null) {
                    createWindow();
                }
            });
        
        Package.json 是一个配置文件,包含应用应该从哪个文件开始启动,以及应用依赖的列表。例如:
        
            {
                "name": "electron-quick-start",
                "version": "1.0.0",
                "description": "A minimal Electron application",
                "main": "main.js",
                "scripts": {
                    "start": "electron main.js"
                },
                "repository": {
                    "type": "git",
                    "url": "git+https://github.com/atom/electron-quick-start.git"
                },
                "keywords": [
                    "Electron",
                    "quick",
                    "start",
                    "tutorial"
                ],
                "author": "GitHub",
                "license": "CC0-1.0",
                "bugs": {
                    "url": "https://github.com/atom/electron-quick-start/issues"
                },
                "homepage": "https://github.com/atom/electron-quick-start#readme",
                "devDependencies": {
                    "electron-prebuilt": "^0.36.0"
                }
            }
        
创建了最简单的 Electron 应用后,需要在操作系统上构建和测试它。本文以 Windows 操作系统为例,但这个过程对于 Linux 和 OS X 也是相同的。
        如果安装了预构建的示例项目,可以跳过这一步,直接进行下一步。如果没有,需要安装配置文件中列出的依赖。打开命令行,切换到包含这三个文件的目录(称之为根目录),然后执行以下命令:
        npm install
        这将安装配置文件中列出的依赖。
    
        接下来,将安装一个名为 electron-packager 的预构建包,它将三个文件打包成操作系统可执行文件。要安装这个包,请在命令行工具中执行以下命令:
        npm install electron-packager -g
        这里的 -g 表示这个库将在机器上全局安装,以后可以重复使用它。
    
        现在打开 package.json 文件,并在 scripts 部分添加以下脚本:
        
            "build": "electron-packager . myapp --platform=win32 --arch=x64 version=0.36.12"
        
        scripts 部分现在看起来像这样:
        
            "scripts": {
                "start": "electron main.js",
                "build": "electron-packager . --platform=win32 --arch=x64"
            }
        
        然后,在命令行工具中运行以下脚本:
        npm run build
        这将执行脚本并将文件打包成 Windows x64 的可执行文件。可以在根目录中新创建的文件夹(version=0.36.12-win32-x64)中找到可执行应用。可以在 https://www.npmjs.com/package/electron-packager 查找平台和架构的可用选项。
    
现在有了一个作为桌面应用运行的 Web 应用。从这一点开始,可以随意修改 HTML 文件或 JS 文件,而不需要再次执行构建脚本。可以在新目录(根目录 -> version=0.36.12-win32-x64 -> resources-> app)中找到源文件,可以修改它们并直接运行可执行文件以查看更改。
当然,不想复制所有这些文件并发送给朋友或客户,所以让制作一个可执行文件,可以分发它以在其他机器上使用。要创建安装程序,需要一个名为 "grunt electron installer" 的库,以及这个库依赖的其他两个库,还需要在根目录中添加一个新的配置文件。
        要添加这些库,请依次执行以下命令:
        npm install grunt-cli -g
npm install grunt
npm install grunt-electron-installer
        在根目录中,添加一个新文本文件并将其重命名为 gruntfile.js。这个文件的内容如下:
        
            module.exports = function(grunt) {
                'use strict';
                grunt.initConfig({
                    pkg: grunt.file.readJSON('package.json'),
                    'create-windows-installer': {
                        x64: {
                            appDirectory: 'version=0.36.12-win32-x64',
                            outputDirectory: 'build/',
                            authors: 'Banan IT.',
                            exe: 'BSc.exe',
                            noMsi: true
                        }
                    }
                });
                grunt.loadNpmTasks('grunt-electron-installer');
            };
        
        这段简单的代码是一个 JavaScript 函数,它将为运行一个任务来创建安装程序。请注意,应用程序目录指的是包含可执行文件的文件夹,输出目录指的是将包含安装程序的文件夹。