• Electron 初体验


    先看看Electron的简介知道他是干嘛的

    https://www.electronjs.org/docs/tutorial/quick-start

    简介

    Electron 是一个能让你使用 JavaScript, HTML 和 CSS 来创建桌面应用程序的框架。 这些应用程序可以打包后在 macOS、Windows 和 Linux 上直接运行,或者通过 Mac App Store 或微软商店进行分发。

    通常,你可以使用操作系统 (OS) 特定的本地应用程序框架来创建一个桌面应用程序。 Electron 可以使用你了解的技术来编写应用程序。

    嗯 ,简单来说就是可以用我们web的技术来开发桌面应用,还是跨平台

    基本环境

    在使用 Electron 之前,您需要安装 Node.js。 我们建议您安装最新可用的 LTSCurrent 版本

    请使用为你平台预构建的 Node.js 安装器来进行安装。 否则,您可能会遇到与不同开发工具不兼容的问题。

    要检查 Node.js 是否正确安装,请在您的终端输入以下命令:

    node -v
    npm -v
    复制
    

    这两个命令应输出了 Node.js 和 npm 的版本信息。 如果这两个命令都执行成功,你就可以开始准备安装 Electron了。

    上面这段就是需要node环境了,关于node环境安装可以参考我的另一篇博客
    https://www.cnblogs.com/makalochen/p/13762163.html

    最后安装好了,如图
    image-20210201102535981

    创建基本应用程序

    从开发的角度来看,Electron 应用本质上是一个 Node.js 应用。 这意味着您的 Electron 应用程序的起点将是一个 package.json 文件,就像在其他的Node.js 应用程序中一样。 最小的 Electron 应用程序具有以下结构:

    my-electron-app/
    ├── package.json
    ├── main.js
    └── index.html
    

    让我们根据上面的结构创建一个基本的应用程序。

    安装 Electron

    为您的项目创建一个文件夹并安装 Electron:

    mkdir my-electron-app && cd my-electron-app
    npm init -y
    npm i --save-dev electron
    

    npm init -y初始化项目

    image-20210201103234946

    npm i --save-dev electron 安装

    正常下载安装,你会发现巨慢

    image-20210201103850662

    关于安装 Electron慢的解决办法

    参考:

    https://blog.csdn.net/ghosind/article/details/105152114

    https://github.com/cnpm/cnpmjs.org/issues/1530

    设置环境变量

    npm config set ELECTRON_MIRROR="https://cdn.npm.taobao.org/dist/electron/"
    

    查看

    npm config list
    

    image-20210201104511286

    再次安装

    npm i --save-dev electron
    

    你会发现快了好多

    image-20210201104810054

    创建主脚本文件

    主脚本指定了运行主进程的 Electron 应用程序的入口(就我们而言,是 main.js 文件)。 通常,在主进程中运行的脚本控制应用程序的生命周期、显示图形用户界面及其元素、执行本机操作系统交互以及在网页中创建渲染进程。 Electron 应用程序只能有一个主进程。

    主脚本可以如下所示:

    main.js文件

    //为了管理应用程序的生命周期事件以及创建和控制浏览器窗口,您从 electron 包导入了 app 和 BrowserWindow 模块 。
    const { app, BrowserWindow } = require('electron')
    
    //在此之后,你定义了一个创建 新的浏览窗口的函数并将 nodeIntegration 设置为 true,将 index.html 文件加载到窗口中(第 12 行,稍后我们将讨论该文件)
    function createWindow () {
        const win = new BrowserWindow({
             800,
            height: 600,
            webPreferences: {
                nodeIntegration: true
            }
        })
    
        win.loadFile('index.html')
    }
    
    //你通过调用 createWindow方法,在 electron app 第一次被初始化时创建了一个新的窗口。
    app.whenReady().then(createWindow)
    
    //您添加了一个新的侦听器,当应用程序不再有任何打开窗口时试图退出。 由于操作系统的 窗口管理行为 ,此监听器在 macOS 上是禁止操作的
    app.on('window-all-closed', () => {
        if (process.platform !== 'darwin') {
            app.quit()
        }
    })
    
    //您添加一个新的侦听器,只有当应用程序激活后没有可见窗口时,才能创建新的浏览器窗口。 例如,在首次启动应用程序后或重启运行中的应用程序
    app.on('activate', () => {
        if (BrowserWindow.getAllWindows().length === 0) {
            createWindow()
        }
    })
    

    image-20210201110427932

    创建网页

    这是应用程序初始化后您想要显示的页面。 此网页代表渲染过程。 您可以创建多个浏览器窗口,每个窗口都使用自己的独立渲染进程。 每个窗口都可以通过 nodeIntegration 选项完全访问 Node.js API。

    index.html 页面如下所示:

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Hello World!</title>
            <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" />
        </head>
        <body style="background: white;">
            <h1>Hello World!</h1>
            <p>
                We are using node <script>document.write(process.versions.node)</script>,
                Chrome <script>document.write(process.versions.chrome)</script>,
                and Electron <script>document.write(process.versions.electron)</script>.
            </p>
        </body>
    </html>
    

    修改package.json 文件

    您的 Electron 应用程序使用 package.json 文件作为主入口(像任何其它的 Node.js 应用程序)。 您的应用程序的主脚本是 main.js,所以相应修改 package.json 文件:

    {
        "name": "my-electron-app",
        "version": "0.1.0",
        "author": "your name",
        "description": "My Electron app",
        "main": "main.js"
    }
    

    注意:如果未设置 main 字段,Electron 将尝试加载包含在 package.json 文件目录中的 index.js 文件。

    注意:authordescription 字段对于打包来说是必要的,否则运行 npm run make 命令时会报错。

    默认情况下, npm start 命令将用 Node.js 来运行主脚本。 要使用 Electron 来运行脚本,您需要将其更改为这样:

    {
        "name": "my-electron-app",
        "version": "0.1.0",
        "author": "your name",
        "description": "My Electron app",
        "main": "main.js",
        "scripts": {
            "start": "electron ."
        }
    }
    

    例:

    {
      "name": "my-electron-app",
      "version": "0.1.0",
      "description": "test electron .....",
      "main": "main.js",
      "scripts": {
        "start": "electron ."
      },
      "keywords": [],
      "author": "makalo",
      "license": "ISC",
      "devDependencies": {
        "electron": "^11.2.1"
      }
    }
    

    运行应用

    npm start
    

    运行后如图

    image-20210201111704463

    感觉很像typora 有没有

    打包并分发应用

    分发你新创建的应用最简单和快捷的方法是使用 Electron Forge

    1. 导入 Electron Forge 到您的应用文件夹:

      npx @electron-forge/cli import
      
      ✔ Checking your system
      ✔ Initializing Git Repository
      ✔ Writing modified package.json file
      ✔ Installing dependencies
      ✔ Writing modified package.json file
      ✔ Fixing .gitignore
      
      We have ATTEMPTED to convert your app to be in a format that electron-forge understands.
      
      Thanks for using "electron-forge"!!!
      

      image-20210201112318748

    2. 创建一个分发版本:

      npm run make
      
      > my-gsod-electron-app@1.0.0 make /my-electron-app
      > electron-forge make
      
      ✔ Checking your system
      ✔ Resolving Forge Config
      We need to package your application before we can make it
      ✔ Preparing to Package Application for arch: x64
      ✔ Preparing native dependencies
      ✔ Packaging Application
      Making for the following targets: zip
      ✔ Making for target: zip - On platform: darwin - For arch: x64
      

      如果遇到这个

      image-20210201113028166

      去检查一下package.json里面的descriptionauthor这两个都不能为空

      Electron-forge 会创建 out 文件夹,您的软件包将在那里找到:

      // MacOS 示例
      out/
      ├── out/make/zip/darwin/x64/my-electron-app-darwin-x64-1.0.0.zip
      ├── ...
      └── out/my-electron-app-darwin-x64/my-electron-app.app/Contents/MacOS/my-electron-app
      

    image-20210201113727768

    至此基本的helloworld 应用已经全部搞定

  • 相关阅读:
    设计模式 --> (3)策略模式
    设计模式 --> (2)单例模式
    设计模式 --> (1)工厂模式
    Algorithm --> 十大排序算法
    Algorithm --> 求阶乘末尾0的个数
    网络通信 --> epoll用法
    数据库 --> sqlite3之api使用
    网络通信 --> select()用法
    网络通信 --> TCP三次握手和四次挥手
    『转载』周立功:专注的力量成就梦想
  • 原文地址:https://www.cnblogs.com/makalochen/p/14355788.html
Copyright © 2020-2023  润新知