快速上手Electron

一、Electron 是什么?

用白话说就是用html+css+js+nodejs+(Native Api)做兼容多个系统(Windows、Linux、Mac)的软件。

  • 一款应用广泛的跨平台的桌面应用开发框架。
  • Electron的本质是结合了 Chromium 和 Node.js。
  • 使用HTML、CSS、JS等 Web技术 构建桌面应用程序。

二、Elemtron流程模型

三、搭建Electron

3.1 安装node和npm

依赖node和npm,检测是否安装:

复制代码
node -v
npm -v

我已经安装过了:

安装Node.js 安装配置 | 菜鸟教程

3.2 项目初始化

QQ202617-101431-HD

3.3 安装 Electron

复制代码
npm install --save-dev electron
// 或
npm install electron -D

3.4 配置

在 package.json配置文件中的scripts字段中增加一条命令:

javascript 复制代码
{
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron .",
  }
}

完整的package.json:

创建main.js 并打印hello electron:

3.5 启动

输入命令:

javascript 复制代码
npm start

结果:

四、demo

4.1 案例1:加载一个远程页面

在main.js里写入:

javascript 复制代码
const {app, BrowserWindow} = require('electron')

app.on('ready', () => {
    // 当app完成初始化时,执行createWindow创建窗口
    const win = new BrowserWindow({
        width: 800, //窗口宽度
        height: 600, //窗口高度
        autoHideMenuBar: true, //自动隐藏菜单档
        alwaysOnTop: true, //置顶
        x: 0, //窗口位置x坐标
        y: 0 //窗口位置y坐标
    })
    //加载一个远程页面
   win.loadURL('https://www.baidu.com')
})

运行:

javascript 复制代码
npm start

成功打开窗口:

总结:

4.2 案例2:加载一个本地程序

新建pages目录,写页面:

就跟前端一样,随便写个页面, onepiece.html:

javascript 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="css/base.css" />
    <link rel="stylesheet" href="css/style.css" />
    <title>onepiece</title>
  </head>

  <body>
    <div class="w">
      <div class="nav"></div>
      <div class="header">
        <img src="images/topimg.jpg" alt="" />
        <img src="images/opweb_sp.png" alt="" />
        <img src="images/story_bar.jpg" alt="" />
      </div>
      <div class="banner clearfix">
        <ul>
          <li>
            <a href="#"><img src="images/stmn1.jpg" alt="" /></a>
          </li>
          <li>
            <a href="#"><img src="images/stmn2.jpg" alt="" /></a>
          </li>
          <li>
            <a href="#"><img src="images/stmn3.jpg" alt="" /></a>
          </li>
          <li>
            <a href="#"><img src="images/stmn4.jpg" alt="" /></a>
          </li>
          <li>
            <a href="#"><img src="images/stmn5.jpg" alt="" /></a>
          </li>
          <li>
            <a href="#"><img src="images/stmn6.jpg" alt="" /></a>
          </li>
        </ul>
      </div>
      <div class="banner2">
        <img src="images/chara_bar.jpg" alt="" />
        <a href="#"><img src="images/char2_off.jpg" alt="" /></a>
        <a href="#"><img src="images/opcom.jpg" alt="" /></a>
      </div>
      <div class="footer">
        <img src="images/under.gif" alt="" />
        <img src="images/cr.gif" alt="" />
      </div>
    </div>
  </body>
</html>

main.js里引入页面:

javascript 复制代码
const { app, BrowserWindow } = require('electron')

app.on('ready', () => {
  // 当app完成初始化时,执行createWindow创建窗口
  const win = new BrowserWindow({
    width: 1200, //窗口宽度
    height: 800, //窗口高度
    autoHideMenuBar: true, //自动隐藏菜单档
    alwaysOnTop: true, //置顶
    x: 0 ,//窗口位置x坐标
    y: 0 //窗口位置y坐标
  })
  // 引入本地页面
  win.loadFile('./pages/index/onepiece.html')
})

运行:

javascript 复制代码
npm start

起来了:

五、打包

5.1.安装electron-builder:

javascript 复制代码
npm install electron-builder -D

5.2.在package.json中进行相关配置:

javascript 复制代码
// 注意:json文件是不能有注释的
{
  "name": "electron_test",
  "version": "1.0.0",
  "main": "main.js",
  "author": "The Great Song",
  "license": "ISC",
  "description": "I am very handsome",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron .",
    "build": "electron-builder"  // 打包命令
  },
  "devDependencies": { // 开发依赖
    "electron": "^39.2.7",
    "electron-builder": "^26.4.0"
  },
  "build": {
    "directories": {
      "output": "build_output" // 输出目录
    },
    "appId": "com.song.onepiece", // 应用标识
    "win": {
      "icon": "./logo.ico", // 应用图标
      "target": [
        {
          "target": "nsis", // 安装格式
          "arch": ["x64"] // 生成 64 未安装包
        }
      ]
    },
    "nsis": {
      "oneClick": false, // 是否一键安装 false 否 显示安装界面
      "perMachine": true, // 根据机器安装, fasle 是根据用户安装
      "allowToChangeInstallationDirectory": true // 允许用户自定义目录
    }
  }
}

5.3.运行:

javascript 复制代码
npm run build

看效果:

QQ202617-12019-HD

相关推荐
携欢2 分钟前
portswigger靶场之修改序列化数据类型通关秘籍
android·前端·网络·安全
前端小L3 分钟前
专题二:核心机制 —— reactive 与 effect
javascript·源码·vue3
GuMoYu3 分钟前
npm link 测试本地依赖完整指南
前端·npm
代码老祖4 分钟前
vue3 vue-pdf-embed实现pdf自定义分页+关键词高亮
前端·javascript
未等与你踏清风4 分钟前
Elpis npm 包抽离总结
前端·javascript
代码猎人4 分钟前
如何使用for...of遍历对象
前端
秋天的一阵风6 分钟前
🎥解决前端 “复现难”:rrweb 录制回放从入门到精通(下)
前端·开源·全栈
林恒smileZAZ6 分钟前
【Vue3】我用 Vue 封装了个 ECharts Hooks
前端·vue.js·echarts
颜酱7 分钟前
用填充表格法-继续吃透完全背包及其变形
前端·后端·算法
代码猎人7 分钟前
new操作符的实现原理是什么
前端