Electron简单入门

第一章 入门

简介

官方描述: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
原型
在这里插入图片描述
敬请期待哦…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值