详解Webpack实战之创设,Electron基本概念

Electron是什么?

官网是这般描述的:Build cross platform desktop apps with JavaScript,
HTML, and CSS

翻译一下:使用JavaScript,HTML以及CSS搭建跨平台桌面应用

Electron是什么?

官方网址是如此描述的:Build cross platform desktop apps with JavaScript,
HTML, and CSS

翻译一下:使用JavaScript,HTML以及CSS搭建跨平台桌面应用

Electron能够让你利用支付 Web
的技术去开拓跨平台的桌面端应用,由 Github 主导和开源,大家熟谙的 Atom 和
VSCode 编辑器便是利用 Electron 开辟的。

<a href=”;

诞生遇到

1人博主那样开玩笑说:
大概根本是因为,猿类里的亚种——前端开采——又有了新的出路了呢,还没找工作的前端开拓,又有了新的岗位能够去采纳,已经在岗的前端也有了新一年的
KPI/OK索罗德,刚运维的创业集团得以只拉三个前端就能支付跨平台的两个桌面客户端…
…(开个玩笑)。

JavaScript近几年的全领域前进,从compile once,run everywhere转换为code
once,run
everywhere,由于JavaScript本身的是壹门解释性的脚本语言,那让它渐渐的成为全宇宙使用最广大的语言,未有之一。

澳门葡京 1

JavaScript只是JavaScript,在浏览器中,它操作DOM和BOM,在服务器端它操作FileSystem,HTTP,所以在其余处境,他都可以实施,纵然是在几M的内部存款和储蓄器情况,那点对物联网来讲很器重。

落草情形

一位博主那样开玩笑说:
恐怕根本是因为,猿类里的亚种——前端开辟——又有了新的出路了吗,还没找职业的前端开采,又有了新的地点能够去挑选,已经在岗的前端也有了新一年的
KPI/OK中华V,刚启航的创业集团能够只拉四个前端就能开荒跨平台的多少个桌面客户端…
…(开个玩笑)。

JavaScript近几年的全领域前进,从compile once,run everywhere调换为code
once,run
everywhere,由于JavaScript本人的是1门解释性的脚本语言,那让它慢慢的变成全宇宙使用最广泛的语言,未有之壹。

澳门葡京 2

JavaScript只是JavaScript,在浏览器中,它操作DOM和BOM,在劳动器端它操作FileSystem,HTTP,所以在其余意况,他都得以进行,尽管是在几M的内部存款和储蓄器境况,那一点对物联网来讲很主要。

Electron 是 Node.js 和 Chromium 浏览器的结合体,用 Chromium
浏览器展现出的 Web 页面作为利用的 GUI,通过 Node.js 去和操作系统交互。
当你在 Electron
应用中的3个窗口操作时,实际上是在操作2个网页。当你的操作必要经过操作系统去做到时,网页会通过
Node.js 去和操作系统交互。

澳门葡京 3

调用须要:

历史观的PC软件开采花费太高,和网络的起来,让古板的开支渐渐被在线系统吊打,高花费必然逐步的倒退,那是适合经济上前进的主旋律,可是出于质量的难题,不管是V奥迪Q3依旧直播,需求搜集录制,音频,网卡音信,而那个模块大多数依然C、C++来获得

详解Webpack实战之创设,Electron基本概念。历史观局限:
在浏览器里,Web页面平时运营在2个沙盒遭逢里,它无法访问本地的能源。
譬如在Web页面里,调用本地GUI是不允许的,因为在Web页面里保管本地GUI能源是格外危急的还要非凡轻巧导致能源走漏。假设你想在Web页面进行GUI操作,该Web页面包车型大巴渲染进程必须经过和主进度通讯来呼吁主进程管理那一个操作。

调用要求:

价值观的PC软件开垦费用太高,和互联网的兴起,让守旧的支付稳步被在线系统吊打,高成本必然逐步的倒退,那是符合经济上前进的可行性,不过出于天性的标题,不管是V福睿斯照旧直播,须要搜集视频,音频,网卡音讯,而这么些模块大大多依旧C、C++来获取

思想局限:
在浏览器里,Web页面经常运维在三个沙盒境况里,它无法访问本地的财富。
比如在Web页面里,调用本地GUI是分化意的,因为在Web页面里管理位置GUI能源是老大危急的同时分外轻易导致能源败露。假如您想在Web页面进行GUI操作,该Web页面包车型大巴渲染进程必须经过和主进度通讯来呼吁主进度管理那几个操作。

使用那种格局支付桌面端应用的优点有:

electron-banner

Electron的组成

  1. 软件组成:Electron: 一.二.6 Node: 陆.壹.0 Chromium: 5一.0.270四.10陆 V八:
    五.一.2八1.陆五

  2. 工具帮助:(官方提供)

    效率上支撑:

    1. Automatic updates
    2. Native menus & notifications
    3. App crash reporting
    4. Debugging & profiling
    5. Windows installers

    写代码&部署:

    Electron Packager — Package your apps

    Electron Builder — Deploy your apps

    Spectron — Test your apps Devtron —

    Debug your apps Electron

    Prebuilt — Install Electron

    Menubar — Create menubar apps

  3. 学习材料:官方网站提供一个相比较完善的DEMO,包含健康的种类等第操作,通讯,截图,调用PDF等例子

  4. 出品:官互连网点数了很多大家相比精晓的有Atom,VSC,slack

Electron的组成

  1. 软件组成:Electron: 壹.二.6 Node: 6.1.0 Chromium: 5一.0.270四.拾陆 V八:
    五.一.2八一.陆5

  2. 工具援救:(官方提供)

效率上帮衬:

  1. Automatic updates
  2. Native menus & notifications
  3. App crash reporting
  4. Debugging & profiling
  5. Windows installers

    写代码&部署:

    Electron Packager — Package your apps

    Electron Builder — Deploy your apps

    Spectron — Test your apps Devtron —

    Debug your apps Electron

    Prebuilt — Install Electron

    Menubar — Create menubar apps

  6. 学习材质:官方网址提供二个相比较完善的DEMO,包涵健康的种类品级操作,通讯,截图,调用PDF等例子

  7. 出品:官网络点数了诸多大家相比较熟习的有Atom,VSC,slack

  1. 下跌开采门槛,只需调节网页开拓手艺和 Node.js 就能够,大量的 Web
    开采才干和现有库能够复用于 Electron;
  2. 鉴于 Chromium 浏览器和 Node.js 都以跨平台的,Electron
    能做到写1份代码在分歧的操作系统运维。

</a>

Have a try!

三个最简便易行的electron项目涵盖八个文本:

  • package.json (Node.js项目标配备文件)
  • index.html (桌面应用的界面页面)
  • main.js (应用的启航入口文件)

里头,宗旨的文本是 ==index.html== 和 ==main.js== 大家得以下载官方的quick
start的例证

# Clone the Quick Start repository
$ git clone https://github.com/electron/electron-quick-start

# Go into the repository
$ cd electron-quick-start

# Install the dependencies and run
$ npm install && npm start

Electron基础文书档案

选取 AngularJS 和 Electron
创设桌面应用

结缘React创立Electron桌面应用

Have a try!

四个最简易的electron项目涵盖几个文本:

  • package.json (Node.js项目标布局文件)
  • index.html (桌面应用的分界面页面)
  • main.js (应用的运转入口文件)

当中,大旨的文本是 ==index.html== 和 ==main.js== 我们得以下载官方的quick
start的事例

# Clone the Quick Start repository
$ git clone https://github.com/electron/electron-quick-start

# Go into the repository
$ cd electron-quick-start

# Install the dependencies and run
$ npm install && npm start

Electron基础文书档案

运用 AngularJS 和 Electron
营造桌面应用

构成React创设Electron桌面应用

在运作 Electron 应用时,会从起步三个主进程起初。主进度的开发银行是经过
Node.js 去施行八个进口 JavaScript 文件落到实处的,那个进口文件 main.js
内容如下:

主进程(Main Process)

package.json中的main钦命的脚本是主进程。主进度首要负担:

  • 创建Web页面(BrowserWindow实例)并管理Web页面;
  • 担任进度间通讯;
  • 拍卖类别事件;
const { app, BrowserWindow } = require('electron')
// 保持一个对于 window 对象的全局引用,如果你不这样做,
// 当 JavaScript 对象被垃圾回收, window 会被自动地关闭
let win
// 打开主窗口
function createWindow() {
 // 创建浏览器窗口
 win = new BrowserWindow({ width: 800, height: 600 })
 // 加载应用的 index.html
 const indexPageURL = `file://${__dirname}/dist/index.html`;
 win.loadURL(indexPageURL);
 // 当 window 被关闭,这个事件会被触发
 win.on('closed', () => {
  // 取消引用 window 对象
  win = null
 })
}

// Electron 会在创建浏览器窗口时调用这个函数。
app.on('ready', createWindow)

// 当全部窗口关闭时退出
app.on('window-all-closed', () => {
 // 在 macOS 上,除非用户用 Cmd + Q 确定地退出
 // 否则绝大部分应用会保持激活
 if (process.platform !== 'darwin') {
  app.quit()
 }
})

渲染进度(Renderer Process)

每贰个Web页面都运作在独家的历程中,这里的历程正是渲染进度。Electron能够在Web页面中应用Node.js
APIs与底层操作系统交互,这点尤其了不起,也是Electron应用于桌面应用开荒的重中之重价值(作者大概更关切的是经过Node.js访问操作系统硬件设施的本事)。

特点:

  • 渲染进度之间是割裂的;
  • 种种渲染进程只关怀本人的Web页面;
  • 在Web页面中不允许调用和地面GUI相关的APIs;
  • 1旦Web页面需求施行GUI操作,则必须由渲染进度请求主进程代为实践;

留意:在日常的浏览器中,Web页面是运维在沙箱碰着中,分化意访问本地财富(应该是居于用户数量安全性思考)。

主进度运行后会一直驻留在后台运营,你眼睛所看得的和操作的窗口并不是主进程,而是由主进度新开发银行的窗口子进度。

经过间通讯

旗帜鲜明,这里的进程间通信包括三种情形:

动用从起步到退出有一多重生命周期事件,通过 electron.app.on()
函数去监听生命周期事件,在一定的时刻做出反应。 举个例子在 app.on(‘ready’)
事件中通过 BrowserWindow 去展示应用的主窗口。

– 主进度和渲染进程通讯:

[ipcRenderer](https://link.jianshu.com?t=http://electron.atom.io/docs/api/ipc-renderer/)  
-
[ipcMain](https://link.jianshu.com?t=http://electron.atom.io/docs/api/ipc-main/)  
-
[remote](https://link.jianshu.com?t=http://electron.atom.io/docs/api/remote/)
  • 渲染进度之间通讯:share data between web
    pages

启航的窗口其实是3个网页,运行时会去加载在 loadU宝马X3L 中传来的网页地址。
每一个窗口都以2个单独的网页进度,窗口之间的通讯须求借助主进程传递消息。

运用结构

一般的话,Electron app的组织是那般的:

your-app/
├── package.json
├── main.js
└── index.html

package.json的格式与Node模块中的格式完全等同(从某种程度上看,Electron
app也是一个Node模块,不过只可以通过Electron推行,而不是Node实施)。

main.js则是主进度脚本。index.html正是采纳的UI。

澳门葡京 4

参考链接

  • Quick
    Start

澳门葡京 ,读书原版的书文
| 小编官方网址 |
公众号
|
Feed
|
订阅
|
发私信

总体来说开采 Electron 应用和开销 Web 应用很相似,不同在于 Electron
的运营境遇同时内置了浏览器和 Node.js 的
API,在支付网页时除了能够采用浏览器提供的 API 外,还足以使用 Node.js
提供的 API。

接入 Webpack

接下去做多少个轻易的 Electron
应用,要求为使用运转后显示二个主窗口,在主窗口里有叁个开关,点击那个开关后新突显1个窗口,且使用
React 开垦网页。

鉴于 Electron
应用中的每1个窗口对应三个网页,所以必要花费一个网页,分别是主窗口的
index.html 和新开垦的窗口 login.html 。
也便是说项目由叁个单页应用组成,这和三-10管制多个单页应用
中的项目尤其相似,让我们来把它改动成贰个 Electron 应用。

亟待改动的地点如下:

在项目根目录下新建主进度的输入文件 main.js ,内容和上边提到的同等;

主窗口网页的代码如下:

import React, { Component } from 'react';
import { render } from 'react-dom';
import { remote } from 'electron';
import path from 'path';
import './index.css';
class App extends Component {
 // 在按钮被点击时
 handleBtnClick() {
  // 新窗口对应的页面的 URI 地址
  const modalPath = path.join('file://', remote.app.getAppPath(), 'dist/login.html');
  // 新窗口的大小
  let win = new remote.BrowserWindow({ width: 400, height: 320 })
  win.on('close', function () {
   // 窗口被关闭时清空资源
   win = null
  })
  // 加载网页
  win.loadURL(modalPath)
  // 显示窗口
  win.show()
 }
 render() {
  return (
   <div>
    <h1>Page Index</h1>
    <button onClick={this.handleBtnClick}>Open Page Login</button>
   </div>
  )
 }
}
render(<App/>, window.document.getElementById('app'));

其间最重大的片段在于在开关点击事件里透过 electron 库里提供的 API
去新开垦二个窗口,并加载网页文件所在的地址。

页面部分的代码已经修改形成,接下去修改创设方面包车型地铁代码。
那里塑造需求做到以下几点:

创设出1个可在浏览器里运营的网页,分别对应一个窗口的分界面;

  1. 由于在网页的 JavaScript 代码里可能会有调用 Node.js 原生模块大概electron
    模块,也正是出口的代码依赖这一个模块。但由于这么些模块都以放到支持的,创设出的代码不能够把这一个模块打包进去。
  2. 要变成以上须要至极轻巧,因为 Webpack 内置了对 Electron 的支撑。
    只要求给 Webpack 配置文件加上1行代码就能够,如下:
target: 'electron-renderer',

那句配置曾在二-七任何配置项-Target中涉嫌,意思是指让
Webpack 创设出用于 Electron 渲染进度用的 JavaScript
代码,也正是那3个窗口供给的网页代码。

以上修改都变成后再次实施 Webpack
营造,对应的网页供给的代码都输出到了项目根目录下的 dist 目录里。

为了以 Electron 应用的格局运营,还索要安装新重视:

# 安装 Electron 执行环境到项目中
npm i -D electron

安装成功后在品种目录下试行 electron .
你就能得逞看到运营的桌面应用了,效果如图:

澳门葡京 5

本实例提供品类总体代码

如上正是本文的全部内容,希望对我们的上学抱有援助,也指望我们多多帮助脚本之家。

你只怕感兴趣的篇章:

  • 行使Electron营造React+Webpack桌面应用的艺术

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website