Electron

electron入门

2018-12-10  本文已影响0人  广州芦苇科技web前端

标签: electron


简介

  1. electron使用html,css和JavaScript来构建块跨平台桌面应用程序(Mac,Windows和Linux)的一个开源库。
  2. electron将Chromium和Node.js合并到同一个运行环境。
  3. electron只使用了Chromium的渲染库而不是全部组件,这使得升级Chromium更加容易,但缺少了Google Chrome里的一些浏览器相关的特性。

构建开发环境

  1. 使用npm init初始化项目目录
npm init 
// 或者
npm init -y

  1. package.json中编写一个start脚本
{
  "name": "helloelectron",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  1. 安装electron
npm install --save electron

了解进程

主进程

渲染进程

开始开发

编写main.js

// app可以理解为主进程
// BrowserWindow用于创建渲染进程
const {app, BrowserWindow} = require('electron')

app.on('ready', function createWindow () {
    // 可以创建多个渲染进程
    let win1 = new BrowserWindow({
        width: 1024,
        height: 768
    })

    let win2 = new BrowserWindow({
        width: 1024,
        height: 768
    })

    // 渲染进程中的web页面可以加载本地文件
    win1.loadFile('index.html')

    // 也可以加载远程页面
    win2.loadURL('http://www.baidu.com')

    // 记得在页面被关闭后清除该变量,防止内存泄漏
    win1.on('closed', function () {
        win1 = null
    })
    win2.on('closed', () => {
        win2 = null
    })

})

// 页面全部关闭后关闭主进程,这里在不同平台可能有不同的处理方式,这里不深入研究
app.on('window-all-closed', () => {
    app.quit()
})
// index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>electron应用</title>
</head>
<body>
    <script>
    const fs = require('fs')

    fs.readFile('./demo.txt', function (err, data) {
        document.write(data)
    })
    </script>
</body>
</html>

分发应用

  1. 复制node_modules/electron/dist目录下的文件到任意文件夹yourapp

  2. 复制你的项目文件到yourapp/resources/app

  3. 删除yourapp/resources/default_app.asar文件

  4. 运行yourapp/electron.exe

<script>
    const fs = require('fs')
    const path = require('path')

    fs.readFile(path.resolve(__dirname, 'demo.txt'), function (err, data) {
        document.write(data)
    })
</script>

往期精彩回顾


叶茂 广州芦苇科技web前端工程师

上一篇 下一篇

猜你喜欢

热点阅读