最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Electron上手指南

    正文概述 掘金(棕小渐)   2021-07-21   586

    前置

    配置代理,解决网络问题:

    npm set electron_mirror https://npm.taobao.org/mirrors/electron/ # electron 二进制包镜像
    npm set ELECTRON_MIRROR https://cdn.npm.taobao.org/dist/electron/ # electron 二进制包镜像
    

    安装:

    npm install electron --save-dev
    

    使用

    和开发 Web 应用非常类似。

    index.html

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
        <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>.
      </body>
    </html>
    

    main.js

    const { app, BrowserWindow } = require('electron')
    ​
    function createWindow() {
      const win = new BrowserWindow({
        width: 800,
        height: 600
      })
    ​
      win.loadFile('index.html')
    }
    ​
    app.whenReady().then(() => {
      createWindow()
    })
    

    甚至可以直接加载一个现成的线上应用:

    const { app, BrowserWindow } = require('electron')
    ​
    function createWindow() {
      const win = new BrowserWindow({
        width: 800,
        height: 600
      })
    ​
      win.loadURL('https://www.baidu.com/')
    }
    ​
    app.whenReady().then(() => {
      createWindow()
    })
    

    package.json

    {
      "name": "electron-demo",
      "version": "1.0.0",
      "description": "",
      "main": "main.js",
      "scripts": {
        "start": "electron ."
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "electron": "^13.1.7"
      }
    }
    

    执行:

    npm start
    

    打包构建

    npm install --save-dev @electron-forge/cli
    npx electron-forge import
    ​
    npm run make
    

    流程模型

    Electron 与 Chrome 类似采用多进程架构。作为 Electron 应用开发者,可以控制着两种类型的进程:主进程和渲染器。

    主进程

    每个 Electron 应用都有一个单一的主进程,作为应用程序的入口点。 主进程在 Node.js 环境中运行,这意味着它具有 require 模块和使用所有 Node.js API 的能力。

    窗口管理

    主进程的主要目的是使用 BrowserWindow 模块创建和管理应用程序窗口。 BrowserWindow 类的每个实例创建一个应用程序窗口,且在单独的渲染器进程中加载一个网页。 可从主进程用 window 的 webContent 对象与网页内容进行交互。

    const { BrowserWindow } = require('electron')
    ​
    const win = new BrowserWindow({ width: 800, height: 1500 })
    win.loadURL('https://github.com')
    ​
    const contents = win.webContents
    console.log(contents)
    

    应用程序生命周期

    主进程还能通过 Electron 的app 模块来控制应用程序的生命周期。 该模块提供了一整套的事件和方法,可以添加自定义的应用程序行为 ( 例如:以编程方式退出您的应用程序、修改程序坞或显示关于面板 ) 。

    // 当 macOS 无窗口打开时退出应用
    app.on('window-all-closed', function () {
      if (process.platform !== 'darwin') app.quit()
    })
    

    渲染器进程

    每个 Electron 应用都会为每个打开的 BrowserWindow ( 与每个网页嵌入 ) 生成一个单独的渲染器进程。

    预加载脚本

    预加载(preload)脚本包含了那些执行于渲染器进程中,且先于网页内容开始加载的代码 。

    预加载脚本可以在 BrowserWindow 构造方法中的 webPreferences 选项里被附加到主进程。

    const { BrowserWindow } = require('electron')
    //...
    const win = new BrowserWindow({
      preload: 'path/to/preload.js'
    })
    //...
    

    由于预加载脚本与渲染器共享同一个全局 Window 接口,并且可以访问 Node.js API,因此它通过在 window 全局中暴露任意的网络内容来增强渲染器。


    起源地下载网 » Electron上手指南

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元