01

为什么用 JavaScript 来开发桌面应用?

曾经的 JavaScript 脆弱、简陋、甚至有被边缘化的危险,不过 JavaScript 在经过了两次飞跃后(以 V8 为首的 JavaScript 引擎和 Node.js 的问世),不再受人欺负,早已升级为绿博士(复仇者联盟 4 中班纳博士和绿巨人的合体,强大而充满智慧)。

V8 引擎让 JavaScript 的运行速度飞快,Node.js 让 JavaScript 不仅仅能做 Web 前端页面,还能开发后端应用。

尽管有了 Node.js,JavaScript 可以开发服务端应用,但有一类重要的应用它还是无法胜任——桌面应用。目前 Web 应用和移动应用看似成为主流,但如果没有桌面应用,Web 应用和移动应用甚至都不会存在。

所有的 Web 浏览器(IE、Chrome、Firefox、Safari 等)都是桌面应用,如果没有桌面应用,Web 页面根本没地方运行;用于开发移动应用的开发工具(IDE)也是桌面应用。

而且 Windows 的开始菜单和 Mac OS X 的 Docker 中的每一个图标都对应一个桌面应用,可以说,桌面应用无处不在。

如果将 Web 应用和移动应用比作国王,那么桌面应用就是国王头上的那顶王冠,没有了王冠,国王什么都不是,而赐予 JavaScript 制作王冠之神力的正是 Electron。

这是一个基于 V8 引擎和 Node.js 的开发框架,允许用 JavaScript 开发跨平台(Windows、Mac OS X 和 Linux)桌面应用。

02有哪些著名应用是使用 Electron 开发的

目前有相当多的桌面应用是使用 Electron 开发的,例如,著名的 Visual Studio Code(微软推出的一个跨平台源代码编辑器)就是用 Electron 开发的、蚂蚁小程序(在支付宝中运行的小程序)也是用 Electron 来开发的;

以小米、华为为主的众多手机厂商推出的快应用(类似于微信小程序)的 IDE 也是用 Electron 开发的。

蚂蚁小程序 IDE:

此外,大家熟悉的 Slack、Atom、XMind ZEN、WebTorrent、Hyper 等都是基于 Electron 的应用。

从 Electron 的主要用户来看,很多都是大厂,如蚂蚁金服、小米、华为、GitHub(Electron 就是 GitHub 推出的)、微软等,由于现在 GitHub 被微软收购了,因而目前 Electron 的后台是微软。因此学习 Electron 不用担心以后没市场,毕竟,各大厂都在用 Electron。

03

Electron 开发的好处

用 Electron 来开发有什么好处呢?Electron 本身是基于 Node.js 的,这样就可以利用 Node.js 的现成资源。

而且 Electron 是跨平台的,可以同时开发 Web 应用和桌面应用,无论是 UI,还是代码(JS),大多数资源都可以共享,这也为开发者大大减少了工作量,甚至企业也无需重复投入人力来开发系统。

此外,Web 应用在网络环境不好的情况下,页面加载缓慢,它不仅仅要传递数据,而且要传递大量与 UI 相关的代码(如 CSS、HTML 等),非常耗时。

但桌面应用就不同了,运行时至少 UI 部分不需要从网络上更新,顶多是与服务端交互数据,就算网络不畅通,也可以暂时使用本地的数据。

就算我们不开发这些“高大上”的产品,只开发相对容易的管理系统,在本地运行仍然会大幅度提升用户体验。

最重要的一点,Electron 不仅仅支持 Web API,完成与 Web 应用相同的工作,而且还允许调用很多操作系统底层 API 来访问计算机的硬件设备,甚至可以自己用 C++、Go 来编写本地模块,可以完成很多 Web 应用无法做到的事情。

可能有很多读者以前开发过桌面应用,认为桌面应用也有缺点。比如,桌面应用很难做到实时更新,维护相对于 Web 应用费时费力,不过这个缺点是针对传统桌面应用的,而基于 Electron 的应用没有这个缺点。

Electron 之所以这么多人用,并不仅仅是因为它基于 Web 技术,而且它还能调用很多本地 API,在实现很多功能时与本地应用非常接近。

04

学习 Electron,成为更优秀的开发者

作为一名开发者,学会开发桌面应用,会非常显著地提升自己的核心竞争力,而且 Electron 开发桌面应用使用的是 Web 技术,可以考虑将 Web 应用与桌面应用作为一个应用来开发,这样会大大提升开发效率。

前面提到,国外许多著名应用使用 Electron 来开发,包括常用的 Visual Studio Code。目前 ,Electron 在国内也不断升温,例如支付宝小程序 IDE、快应用 IDE 等都是使用 Electron 开发的。

此外,尽管微信小程序 IDE 不是使用 Electron 开发的,但却是使用了类似的 NW.js 开发的,而 NW.js 的使用方法与 Electron 很像,举一反三即可。

本课程笔者团队也正在使用 Electron 开发一款跨平台的开发工具 OriUnity,可以使用 JavaScript 同时开发桌面应用、Web 应用、移动 App 和小程序,而且可以将客户端与服务端融为一体。

在开发产品的过程中,我们也积累了很多 Electron 的实践经验。因此正好借着达人课的机会,将 Electron 的一些开发经验总结出来,希望对想入门 Electron 的读者有一定的借鉴作用。

前端判断是否安装桌面应用_前端开发人员的桌面应用神器 Electron相关推荐

  1. java web打包神器_前端开发人员的桌面应用神器 Electron

    原标题:前端开发人员的桌面应用神器 Electron 01 为什么用 Java 来开发桌面应用? 曾经的 Java 脆弱.简陋.甚至有被边缘化的危险,不过 Java 在经过了两次飞跃后(以 V8 为首 ...

  2. 前端开发人员的桌面应用神器 Electron

    01 为什么用 JavaScript 来开发桌面应用? 曾经的 JavaScript 脆弱.简陋.甚至有被边缘化的危险,不过 JavaScript 在经过了两次飞跃后(以 V8 为首的 JavaScr ...

  3. 大学可以学前端开发_所有开发人员在大学中应该学习的东西

    大学可以学前端开发 忘记"代码行" (Forget About "Lines of Code") Source 资源 As a developer, you'l ...

  4. python判断某年是否为闰年_python如何判断某年是否是闰年_后端开发

    如何基于Hyperf实现RabbitMQ+WebSocket消息推送_后端开发 基于 Hyperf+ WebSocket +RabbitMQ 实现的一个简单大屏幕的消息推送.利用 WebSocket ...

  5. 如何调换手机桌面位置_如何改变华为手机桌面三个方向按键的位置?

    展开全部 到设置中找到管理应用程序里面的全部应用程序,看看有没有华为桌面有的话清e69da5e6ba903231313335323631343130323136353331333363396435除数 ...

  6. java h5 桌面应用_用HTML5打造本地桌面应用

    本文作者html5tricks,转载请注明出处 在手机端,有一个非常棒的工具叫做PhoneGap,使用这个快速开发平台,任何人都可以使用HTML5+CSS3+JavaScript开发出安卓,iOS等应 ...

  7. citrixreceiver云桌面系统_基于Citrix的云桌面方案

    基于 Citrix 的云桌面方案① 刘 夏 1, 孙 鹏 1, 霍旭轮 1, 陈明锐 2 [摘 要] 由于传统 IT 网络架构不相同 , 移动办公日渐增多 , 远程的管理和维护也 更加困难 , 提出一 ...

  8. alfred 开发_适用于开发人员设计师和博客的7种Alfred工作流程

    alfred 开发 Alfred is one of the best productivity apps for macOS. It lets you reduce dependency on th ...

  9. 如何成为一个区块链开发人员_成为开发人员是社会工作

    如何成为一个区块链开发人员 Times have changed since the old days when an IT professional was this typical shy per ...

最新文章

  1. 《JAVA练习题目2》 输入十个学生的考试成绩,将及格学生的成绩从高到低排序输出。
  2. Matplotlib中中文不显示问题
  3. 史上最详细、最完全的ipython使用教程,Python使用者必备!
  4. 中国钢筋加工设备运营现状与未来前景规划报告2022-2028年版
  5. pipenv 虚拟环境新玩法
  6. q7goodies事例_Java 8 Friday Goodies:本地交易范围
  7. html页面判断是否登录,egg(103)--egg之定义公共的中间件判断用户是否登录以及去结算页面制作...
  8. 微型计算机二进制,微型计算机原理二进制十进制十六进制.docx
  9. GDB中创建要素数据集
  10. 操作系统 第四章 文件管理
  11. 微信JS图片上传与下载功能--微信JS系列文章(三)
  12. 第三季-第15课-信号通讯编程
  13. 免费java模板下载安装_java程序员免费简历模板下载
  14. koa2 请求转发实现
  15. 【Java 8 新特性】Java 8 Collectors:reducing 示例(List分组取最值)
  16. 爬虫python创意_爬虫案例:利用python爬虫关键词批量下载高清大图
  17. SpringBoot程序排除@Configuration配置类
  18. kaggle:谁是NBA最佳防守球员?(二)
  19. 2020 最美最有意思辞职信
  20. C语言disp的头文件,TM1638.h 单片机C语言头文件

热门文章

  1. 效率提升,英特尔助力企业驶入“快车道”
  2. kafka window 启动_Apache Flink结合Kafka构建端到端的Exactly-Once处理
  3. mysql 通过存储过程 插入测试百万数据
  4. 解决在已办任务菜单中都会抛出异常,由于definitionId=undefined导致的问题
  5. 实战06_SSM整合ActiveMQ支持多种类型消息
  6. JavaScript-表单提交验证及前端密码MD5加密
  7. 点读笔客户端_新手妈妈如何选购点读笔
  8. 解析html生成xpath,html使用xpath解析xml
  9. C/C++ _strupr_s 函数 – 字符串小写转大写 - C语言零基础入门教程
  10. 成员变量(全局变量)和局部变量区别