嗨,我是勾勾。今天要介绍的是 Electron 跨平台桌面应用开发。

Electron(https://electronjs.org/)是一个运行平台,它能够让我们通过 HTML + CSS + JavaScript 开发桌面应用程序。

核心原理就是 Electron 中将 Chromium(Chrome 的内核)和 Node.js 打包到了一起,通过 Chromium 提供 WebView 从而实现 UI 编程能力,通过 Node.js 提供 APIs 从而实现系统接口调用。

简单来说就是,在 Electron 中我们可以像在 Web 开发中一样,通过 HTML + CSS 完成 UI 开发,通过 JavaScript(ECMAScript)调用 APIs 实现业务功能,只不过这里的 APIs = Web APIs + Node APIs。

快速上手

一个最基本的 Electron 项目需要有如下的几个必要文件:

your

与 Web 所不同的是,这里 Electron 启动的入口是 JavaScript 文件,也就是这里的 main.js 文件(简单示例)。

// main.js

在这个 JavaScript 文件中创建页面窗口用于加载所需要在界面上显示的页面文件 index.html。更完整的 main.js 应该如下:

const 

index.html 中可以是任何你想要呈现的内容。你也可以使用不同的库和框架,这与 Web 中没什么两样,所不同的是,当你 BrowserWindow → webPreferences → nodeIntegration 设置为 true 时,你可以在页面的脚本中使用 Node APIs。这看起来非常棒,但是要小心使用这个特性,因为如果你加载的不是本地的脚本,那就存在风险。

案例:文件编辑器

为了体现 Electron 的能力,我们通过一个简单的记事本应用案例来感受。

克隆基础项目结构代码:

$ 

安装项目依赖的模块:

$ yarn # or npm install 

页面结构与样式:

<!-- 

页面脚本文件 renderer.js:

// renderer.js

当然 Electron 模块中提供了更合适的 APIs,用于提示用户保存文件位置、让用户选择打开某个文件:

const 

注意事项:

  1. 在渲染进程中使用 Node APIs 需要开启当前 BrowserWindow 的 nodeIntegration(针对 Electron 5 以上版本)。
  2. 由于渲染进程是运行在 Chromium 中的,所以不管是样式还是脚本都不需要考虑兼容其他环境问题,你可以放心大胆的使用新特性。

通过以上的示例,我们应该就可以体会到 Electron 开发的过程,以及 Electron 的内部组成。

主进程与渲染进程

Electron 中有两种进程类型,分别为「主进程」和「渲染进程」,它们的职责和能力各不相同:

通过 Electron 直接启动运行的脚本,运行这个脚本的进程被称为「主进程」。一个 Electron 应用总是有且只有一个主进程。一般我们都会在这个进程中管理整个应用,所以我个人也把它称之为「调度进程」。

通过 BrowserWindow 创建的页面窗口运行在单独的进程当中,称之为「渲染进程」。负责展示页面以及运行页面上所需要的脚本。

With Framework

接下来我们再来了解一下,如何配合使用 React.js 或者 Vue.js 这样的 UI 框架开发 Electron 应用。

如果你不需要使用 JSX 或者单文件组件这些特性,你可以直接把这些框架当作库,直接在页面中使用。

当然,就现阶段来说,大家很自然的会把这些有特性和框架捆绑,总是用 A 就必须要用 B,所以这里还是需要推荐给大家一个我觉得非常方便的集成环境。

electron-webpack

electron-webpack 其实是一个通过 webpack 编译 Electron 代码的集成工具,通过简单的配置就可以支持 React.js 和 Vue.js,当然你也可以让它支持更多。

electron-webpack:

https://github.com/electron-userland/electron-webpack​github.com

它要求你有通过特定的项目结构编写代码:

my

我们可通过官方提供的模板快速创建这样结构的项目:

$ 

这个项目中提供了一些有用的 scripts:

# 

使用 Vue.js

由于 electron-webpack 中会自动加载 Vue.js 所需的 loader,所以只需要安装对应的模块,Vue.js 单文件组件将自动工作。

yarn add vue electron-webpack-vue --dev 

使用 React.js

同理,React.js 的工作也只需要安装相应的模块:

yarn add react react-dom @babel/preset-react --dev

打包和发布

我们可以使用类似 electron-builder(https://www.electron.build)的一些集成工具轻松完成跨平台打包任务。

刚刚介绍的 electron-webpack 的初始项目模板中就包含了此工具的使用。

最近在重写一个基于 Vue.js + TypeScript 的 Electron 骨架项目,如需自取:

https://github.com/zce/electron-boilerplate​github.com

本文转载自公众号:勾勾的前端世界

收获更多前端技术, 欢迎来找勾勾交流

vue引用electron_如何搞定跨平台桌面开发?Electron助你快速起步相关推荐

  1. 你真的会用 VS Code 的 Ctrl、Shift和Alt吗?高效易用的快捷键:多光标、跳转引用等轻松搞定

    你真的会用 VS Code 的 Ctrl.Shift和Alt吗?高效易用的快捷键:多光标.跳转引用等轻松搞定 使用键盘浏览代码.敲代码是一件很高效的事:主力手在鼠标和键盘之间反复移动,长时间下来,很容 ...

  2. 一步搞定WIN10桌面快捷方式图标显示小白块如何去除

    WIN10桌面快捷方式图标显示小白块如何去除 1.问题描述,桌面图标显示如下图. 2.打开软件进行设置,一步搞定.  软件下载链接见文章末尾 软件下载链接: (30条消息) Dism一步搞定WIN10 ...

  3. vue引用electron_前端跨平台桌面开发技术:Electron 快速起步

    嗨,我是勾勾.今天要介绍的是 Electron 跨平台桌面应用开发. Electron(https://electronjs.org/)是一个运行平台,它能够让我们通过 HTML + CSS + Ja ...

  4. 万字长文带你 搞定 linux BT 宝塔面板 之外网上快速搭建苹果CMS电影网站

    文章目录 万字长文带你搞定宝塔面板 一.本地搭建宝塔面板及安装ecshop 1.1前言 1.2面板特色功能 1.3安装环境说明 1.4安装BT面板 1.5常用管理命令 1.6 BT面板一键安装LAMP ...

  5. 五分钟搞定:Centos中Kafka和Zookeeper的快速安装教程

    [提前声明] 文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章 写作不易,转载请注明,谢谢! 代码案例地址: ?https://github.com/Mydreamandrea ...

  6. 【搞定配色】超实用!帮你快速搞定网页配色的方法(附配色神器)

    编者按:完全零基础的新手如何做好网页配色?今天@喪心病狂十六夜貓 这篇好文,从网页基色.强调色.深色到应用整个配色方案都有详细的流程与教学,每个步骤几乎都不用思考,用文章提供的配色神器就可以搞定了,你 ...

  7. 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞

    转载自:http://www.blogjava.net/huliqing/archive/2008/04/18/193907.html 对于作Java桌面应用来说,比较烦人的就是安装部署问题,客户端是 ...

  8. vue 全局排序_搞定VUE [ 一 ]

    击上方  蓝字  关注我 首先.以我个人的观点,不赞成把这些东西死记下来,会使用,能上手做,有不明白的及时的去浏览.翻阅,在实战中去快速的理解和掌握,之后水到渠成式的一步步去走向深入.当然,从自身的职 ...

  9. 玩转华为云开发|老板万万没想到:刚入职的我一人就搞定人脸识别开发

    摘要:程序猿小Hi入职公司不到三个月,就被老板单独叫到了办公室-- 初创公司R:刚刚创立,致力于通过信息化技术,帮助中小企业数字化转型,华丽转身. 公司成员:老板.程序猿小Hi.- - 程序猿小Hi入 ...

最新文章

  1. HALCON识别数字ID
  2. iOS自动布局进阶用法
  3. java树洞_SSM框架开发案例——铁大树洞后台管理系统
  4. 是什么让你开始劝退的?(@韩冬)
  5. 【Elasticsearch】索引和查询性能调优的21条建议-以及调优参数
  6. ICQ被购后看腾讯出击DST:迈出国际化的关键一步
  7. Cesium:修改初始相机默认位置以及HomeButton返回默认位置按钮方法
  8. UINavigationController 直接pop到指定controllerView的方法
  9. Android循环ViewPager(二)
  10. C/C++编程:log4cpp使用学习
  11. FireFox 插件xpi文件签名2
  12. (L)小写l和(i)大写I的区分方法
  13. Vue路由守卫(通俗易懂)
  14. 又是被打败的一天 (记招商银行笔试)
  15. 实战 Mantle 解析界面app 科技频道
  16. 红米ac2100有ipv6吗_Redmi路由器AC2100开箱:六天线简单直接,功能丰富对玩家友好...
  17. CAD Express Tools下载与简介
  18. Google官方网络框架Volley实战——QQ吉凶测试,南无阿弥陀佛!
  19. 超详细域名备案+阿里云服务器配置+小程序开发(简略)+前后端分离(简略)
  20. ubuntu 安装touchpad-indicator方法 管理触控板

热门文章

  1. Pragma是什么?
  2. 人际关系的55个绝招
  3. 我要去 Google 工作了
  4. 除了要求app随手机壳颜色变之外,产品还要求....
  5. 新入行程序员须知的8件事
  6. ucinet使用手册_ucinet使用手册
  7. .bin 文件用excel文件打开_用python读Excel文件
  8. USACO详细介绍 全球中小学生均可参加
  9. 信奥中的数学:孙子定理 中国剩余定理
  10. 08产品经理要明白的人性思维-团队管理篇