第一章 入门
简介
官方描述:Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js到 二进制的 Electron 允许你保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。
学习前提
需要了解node.js、js、html、css,并熟悉nodejs基本的语法。
快速开始
安装 Node.js, 建议使用最新的LTS版本。具体安装步骤请查看官网或者其他网站资料,在此不在详细说明。
安装后检查是否安装成功可在控制台使用命令:
node -v
本次demo使用的是 v10.15.1版本
创建一个demo应用
- 初始化项目
Electron 应用程序与其他 Node.js 项目相同的结构。 首先创建一个文件夹并初始化 npm 包,命令如下:
mkdir my-electron-app && cd my-electron-app npm init
初始化后我们将package.json中的scripts改为:
"scripts": {
"start": "electron ."
}
我们手动设置electron版本为15.1.1最终的效果如下:
{
"name": "my-electron-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "electron ."
},
"author": "hwq",
"license": "ISC",
"devDependencies": {
"electron": "15.1.1"
}
}
- 安装electron依赖
npm install
安装有点慢,可以喝杯茶…
主进程index.js
安装完成后项目目录是没有index.js文件的,所以需要手动创建。这个”main“字段对应的index.js文件就是程序的入口,它运行在一个完整的Node.js环境中,负责控制您应用的生命周期,显示原生界面,执行特殊操作并管理渲染器进程。
我们参照Electron官网文档建立一个index.js
// index.js
const { app, BrowserWindow } = require('electron')
const path = require('path')
function createWindow () {
// 创建一个浏览器窗口
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
})
// 为应用加载 index.html页面
mainWindow.loadFile('index.html')
}
// 当electron初始化完成后创建 browser windows
app.whenReady().then(() => {
createWindow()
app.on('activate', function () {
if (BrowserWindow.getAllWindows().length === 0) createWindow()
})
})
// 当所有窗口关闭后退出应用.
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit()
})
-
app 模块
它控制应用程序的事件生命周期。
-
BrowserWindow 模块
它创建和管理应用程序 窗口。
在 Electron 中,只有在 app 模块的 ready 事件被激发后才能创建浏览器窗口。 您可以通过使用 app.whenReady() API来监听此事件。 在whenReady()成功后调用createWindow()。
创建渲染进程
// preload.js
//所有的Node.js APIs 都可以在这里使用
window.addEventListener('DOMContentLoaded', () => {
const replaceText = (selector, text) => {
const element = document.getElementById(selector)
if (element) element.innerText = text
}
for (const dependency of ['chrome', 'node', 'electron']) {
replaceText(`${dependency}-version`, process.versions[dependency])
}
})
创建页面indx.html
<!--index.html-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
We are using Node.js <span id="node-version"></span>,
Chromium <span id="chrome-version"></span>,
and Electron <span id="electron-version"></span>.
<!-- 引用渲染进程js -->
<script src="./renderer.js"></script>
</body>
</html>
运行demo
npm start
效果如下
下章预告-项目实战客服IM
原型
敬请期待哦…