Article Outline
1.0 Electron 基础概念
So begins a new age of knowledge
前言
作为初学Electron
的同学,官方文档就是最好的文档
定义
Electron, 可以理解是一个内置浏览器的桌面应用程序,这个桌面应用程序可以让你使用node.js,而不是局限在浏览器运行环境中,从而实现许多浏览器无法实现的功能,如I/O读写等。
优势
浏览器 + node.js
优势其一,就是定义中介绍了,可以node.js与
Electron
提供的api,实现许传统桌面应用才能实现的功能跨平台
一次开发, 多端运行,
Electron
只需要一份代码,就可以打包出兼容Mac、Windows、Linux平台的引用
活跃的社区
Electron
有着非常活跃的社区和各种各样的官网工具:Electron社区
应用架构
主进程与多进程架构
在Electron的应用架构中,包含着有且唯一的主进程(Main Porcess
)和多个渲染进程(Renderer Process
)
- 主进程(
Main Porcess
)
主进程即package.json中main字段指定的脚本,在应用中有且只有唯一一个主进程,在主进程中,使用BrowserWindow
实例创建页面,每个页面对应一个渲染进程
- 渲染进程(
Renderer Porcess
)
被主进程使用BrowserWindow
实例创建,每个Electron
中的web页面运行在它自己的渲染进程中。
调用electron的API
Electron官方提供了许多api帮助我们开发桌面应用程序,每个api在文档中都会声明可以在什么进程中调用,如BrowserWindow
只能在主进程中使用
// 这样写在主进程会有用,但是在渲染进程中会提示'未定义'
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
因为进程之间的通信是被允许的, 所以渲染进程可以调用主进程来执行任务。 Electron通过remote模块暴露一些通常只能在主进程中获取到的API。 为了在渲染进程中创建一个BrowserWindow的实例,我们通常使用remote模块为中间件:
//这样写在渲染进程中时行得通的,但是在主进程中是'未定义'
const { remote } = require('electron')
const { BrowserWindow } = remote
const win = new BrowserWindow()
调用nodejs的API
由于electron本质是一个nodejs应用,所有nodejs所有api在主进程和渲染进程都是可以调用的
const fs = require("fs")
const fileBuffer = fs.readFileSync("main.js")
console.log(fileBuffer)
NEXT TOPIC => 打造你的第一个electron应用:HelloWorld