2021-11-04

electron基本使用

简介:

1.基于chromium和nodeJs 开发
2.使用JavaScript、html、css 构建跨平台应用程序
3.是开源的
4.兼容mac / windows / linux
5.比nwjs 靠谱

1.使用方法

(1)初始化文件夹 npm init

(2)先装入模块 npm i electron -S (加载electron)

2.修改入口文件

(1)Package.json的 Main 入口中导入 main.js 文件
(2)新增命令: “electron”:”electron .”
(3)运行npm run electron 启动 程序
2021-11-04

3.使用热加载

npm -save-dev electron-reloader (自动刷新页面)

//  热加载
const reloader = require('electron-reloader')
reloader(module)

4.主进程和渲染进程:

Main 入口文件(只有1个) , 渲染的页面可以有多个 (窗口可以有多个)
(1)查看主进程npm run electron
(2)查看渲染进程(控制台) : ctrl + shift + i,

// 打开控制台的代码: 
mainWindow.webContents.openDevTools()
mainWindow.webContents.openDevTools()

5.自定义原生菜单:

(1)定义一个模板 (template)
// 定义菜单模板

const template = [
    {
      label:'文件',
      submenu:[
        {
          label:'新建窗口',
          click: ()=>{
            new BrowserWindow({
              width: 200,
              height: 200
            })
          }
        }
      ]
    },
    {
      label:'关于我们'
    },
    {
      label:'菜单标题',
      submenu:[
        {
          label:'新建窗口'
        }
      ]
    },
  ]

(2)编译模板成菜单 (menu)
// 编译模板

  const menu = Menu.buildFromTemplate(template)

(3)设置菜单
// 设置菜单

  Menu.setApplicationMenu(menu)

6.自定义顶部菜单

需要将窗口的frame属性设置为false frame:false
/* 可拖拽 */

    -webkit-app-region: drag;    // 不拖拽 no-drag

(1)点击页面打开浏览器 (shell)

shell.openExternal(item.href)

href 是a 标签的属性

7.打开对话框读取和保存文件 (dialog)

(1)读取文件
①拿一个标签来显示传过来的文件的值
②打开文件显示需要使用fs 模块

const fs = require('fs')
const textareaEl = document.querySelector('textarea')
//  点击打开文件
const openFile = function (){
    
    const res = dialog.showOpenDialogSync({
        title:'读取文件',
        buttonLabel:'按钮的文字(读取)',
        filters:[
            {
                name:'Custom File Type',extensions:['js'],
            }
        ]
    })
    console.log('res---',res[0])
    const filesContent = fs.readFileSync(res[0]).toString()
    console.log('-filesContent------',filesContent)
    textareaEl.value = filesContent
}

(2)保存文件

//  点击保存文件
const saveFile = function (){
    
    const res = dialog.showSaveDialogSync({
        title:'保存文件',
        buttonLabel:'按钮的文字(保存)',
        filters:[
            {
                name:'保存的文件类型',extensions:['js'],
            }
        ]
    })
    console.log('res---',res)
    fs.writeFileSync(res,textareaEl.value)
}

8.渲染进程和主进程通信

(1)渲染进程使用ipcRenderer 发送信息


// 全局控制窗口大小
let windowSize = 'unmax-window'
// 点击窗口变成最大化
const maxWindow = function (){
    windowSize = windowSize === 'unmax-window' ? 'max-window' : 'unmax-window'
    // 渲染进程和主进程的通讯
    ipcRenderer.send('max-window',windowSize)
}

(2)主进程使用ipcMain接收信息

// 通讯触发
    ipcMain.on('max-window',(event,arg)=>{
      if(arg === 'max-window'){
        mainWindow.maximize()
      }else{
        mainWindow.unmaximize()
      }
    })

9.打包electron

(1)加载

npm i electron-packager -D

(2)添加 命令

"build": "electron-packager ./ HelloWorld --platform=win32 --arch=x64 --out ./outApp --overwrite --icon=./favicon.ico"

(3)打包可能会遇到的问题
①需要将devDependencies 里的模块 复制到 dependencies 中,因为打包是打包的dependencies

跟着路线走基本都能做出来,遇到的问题也说了
以上是在bilibili 看视屏的总结,如有侵权联系我,即刻删

上一篇:vue echarts 条形 bar 基本需求归纳


下一篇:electron-PC端部署流程梳理