Electron基础
[[toc]]
简介
Electron 是一个由 GitHub 开发的开源库,通过将 Chromium) 和Node.js 组合并使用 HTML,CSS 和 JavaScript 进行构建 Mac,Windows,和 Linux 跨平台桌面应用程序。
优点:
方便快捷的开发桌面应用,跨平台,对前端开发者友好,活跃的社区,丰富的api……
缺点:
性能肯定比不上原生的桌面应用,发布的包很大。(DeskGap这个不带浏览器的功能,包比较小)
初始化项目
1.electron-react-boilerplate
2. 使用脚手架electron-forge
//全局安装脚手架 |
3. 自己搭建
新建main.js
/**
* Author: hzf;
* Date: 2019-08-08 13:57;
* Description:主进程
*/
const electron = require('electron');
const {app, BrowserWindow} = electron;
//保持对window对象的全局引用
// 垃圾回收的时候,window对象将会自动的关闭
let win;
const createWindow = () => {
// 创建浏览器窗口
win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
nodeIntegration: true
}
});
// 加载index.html文件
win.loadFile('index.html');
// 打开开发者工具
win.webContents.openDevTools();
// 当 window 被关闭,这个事件会被触发。
win.on('closed', () => {
// 取消引用 window 对象,如果你的应用支持多窗口的话,
// 通常会把多个 window 对象存放在一个数组里面,
// 与此同时,你应该删除相应的元素。
win = null
})
};
// Electron 会在初始化后并准备
// 创建浏览器窗口时,调用这个函数。
// 部分 API 在 ready 事件触发后才能使用。
app.on('ready', createWindow);
// 当全部窗口关闭时退出。
app.on('window-all-closed', () => {
// 在 macOS 上,除非用户用 Cmd + Q 确定地退出,
// 否则绝大部分应用及其菜单栏会保持激活。
if (process.platform !== 'darwin') app.quit()
});
app.on('activate', () => {
// 在macOS上,当单击dock图标并且没有其他窗口打开时,
// 通常在应用程序中重新创建一个窗口。
if (win === null) createWindow()
});新建index.html
//渲染进程
<!DOCTYPE html>
<html lang="zh-Hans-CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Hello!</h1>
</body>
</html>初始化git
npm init -y |
API
//加载index.html文件 |
打包
devDependencies与dependencies的区别
如果不是发布npm包,例如我们常用的就是clone源码,然后npm install,这样的话,这两个地方包含的依赖都会被正确下载到 node_modules 里,意思就是,没区别。
但是,如果你要发布npm包,那就要注意了,这种情况如果有人想使用你的npm模块,npm install只会下载在 dependencies 的依赖。举个例子,你做了个日历插件,day.js,没有把它放在dependencies,
而是放在了 devdependencies,那别人使用你的日历插件的时候就会报错,因为在dependencies找不到day.js ,反过来 dependencies 的包放到 devdependencies 里面,这样就会增加本地项目的体积。