美文网首页
Electron 简介

Electron 简介

作者: 隐号骑士 | 来源:发表于2020-05-23 00:15 被阅读0次

Electron是一个跨平台桌面应用开发工具

安装

npm install --save-dev electron

Hello World

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

function createWindow () {   
  // 创建浏览器窗口
  let win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true // 开启nodejs功能
    }
  })

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

app.whenReady().then(createWindow)

electron/electron-quick-start
官网模版推荐

架构

一个主进程 + 一或多个渲染进程
类似 Chromium 的多进程架构

在普通的浏览器中,web页面通常在沙盒环境中运行,并且无法访问操作系统的原生资源。 然而 Electron 的用户在 Node.js 的 API 支持下可以在页面中和操作系统进行一些底层交互。

主进程使用 BrowserWindow 实例创建页面。 每个 BrowserWindow 实例都在自己的渲染进程里运行页面。 当一个 BrowserWindow 实例被销毁后,相应的渲染进程也会被终止。

进程间通信

HTML5 APIs

Electron remote 模块

// main.js
    global.sharedObject = {
      someProperty: 'default value'
    }
// renderer.js
var electron = require('electron')
var sharedObject = electron.remote.getGlobal('sharedObject')

console.log(sharedObject.someProperty)

Electron ipc

ipcMain / ipcRenderer

// 在主进程中.
const { ipcMain } = require('electron')
ipcMain.on('asynchronous-message', (event, arg) => {
  console.log(arg) // prints "ping"
  event.reply('asynchronous-reply', 'pong')
})

ipcMain.on('synchronous-message', (event, arg) => {
  console.log(arg) // prints "ping"
  event.returnValue = 'pong'
})


//在渲染器进程 (网页) 中。
const { ipcRenderer } = require('electron')
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong"

ipcRenderer.on('asynchronous-reply', (event, arg) => {
  console.log(arg) // prints "pong"
})
ipcRenderer.send('asynchronous-message', 'ping')
// 在主进程中.
const {ipcMain} = require('electron');
ipcMain.on('synchronous-message', (event, arg) => { 
  console.log(arg) // prints "ping" event.returnValue = 'pong' 
})


//在渲染器进程 (网页) 中。
const { ipcRenderer } = require('electron');
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong"

打包

electron-builder

yarn add electron-builder --dev

在package.json中添加build配置

//摘自 react-electron-template 模版项目
"build": {
    "productName": "ElectronReact",
    "appId": "org.develar.ElectronReact",
    "files": [
      "dist/",
      "node_modules/",
      "app.html",
      "main.prod.js",
      "main.prod.js.map",
      "package.json"
    ],
    "dmg": {
      "contents": [
        {
          "x": 130,
          "y": 220
        },
        {
          "x": 410,
          "y": 220,
          "type": "link",
          "path": "/Applications"
        }
      ]
    },
    "win": {
      "target": [
        "nsis",
        "msi"
      ]
    },
    "linux": {
      "target": [
        "deb",
        "rpm",
        "AppImage"
      ],
      "category": "Development"
    },
    "directories": {
      "buildResources": "resources",
      "output": "release"
    },
    "publish": {
      "provider": "github",
      "owner": "electron-react-boilerplate",
      "repo": "electron-react-boilerplate",
      "private": false
    }
  },

参考:
https://www.electronjs.org/docs
https://newsn.net/say/electron-ipc.html
https://electron.org.cn/builder/index.html

相关文章

  • Electron入门-本地环境搭建

    Electron 简介 Electron 是 跨平台 的桌面应用。Electron 兼容 Mac, Windows...

  • electron开发入门(一)Hello world程序

    目录 electron简介 使用electron构建的应用 开发环境搭建 electron-quick-start...

  • Electron 简介

    Electron 简介 Electron是一个基于node.js的跨平台桌面应用组件(暂且称之为组件,对node....

  • Electron简介

    ·为什么选用Electron ·Electron是什么 ·Electron特点 ·为什么选用Electron ...

  • Electron简介

    Electron(最初名为Atom Shell[3])是GitHub开发的一个开源框架。它允许使用Node.js(...

  • electron简介

    安装与搭建开发环境 进程与线程 进程:正在执行的计算机程序,cpu总是运行一个进程,其他进程处于等待,一个进程中有...

  • Electron 简介

    本教程我们来学习 Electron 的基础知识,下面我们先来学习一下什么是 Electron。 Electron是...

  • electron -- 简介

    跨平台 一套代码可以编译出windows、linux、macos三个主流平台的应用。 web构建 基于html、j...

  • Electron 简介

    Electron是一个跨平台桌面应用开发工具 安装 Hello World electron/electron-q...

  • Electron

    1.简介 先来段代码感受下~~ const electron = require('electron'); con...

网友评论

      本文标题:Electron 简介

      本文链接:https://www.haomeiwen.com/subject/weqhahtx.html