第01课:Electron 开发的优势

本文探讨了JavaScript如何通过Node.js从Web应用扩展到桌面应用,特别是Electron框架如何使得JavaScript成为全栈开发的重要语言。文章介绍了Node.js的背景,解释了为什么使用Electron开发跨平台桌面应用,以及Web应用面临的挑战和桌面应用的优势。Electron降低了桌面应用开发的门槛,允许Web开发者使用熟悉的JavaScript技术构建高性能的桌面应用。
摘要由CSDN通过智能技术生成

1.1 Node.js,一个让 JavaScript 从丑小鸭变成白天鹅的框架

可能很多读者会感到奇怪,本系列课程主要介绍的是 Electron,为什么一开始要提到 Node.js 和 JavaScript 呢?它们是什么关系呢?别急,听我慢慢道来。

相信做 JavaScript 开发的读者对 Node.js 不陌生,Node.js 诞生于 2009 年,类似于 ASP.NET,是用来开发服务端程序的框架,使用的编程语言是 JavaScript。基于 Node.js 的 Web 框架非常多,比较常用的有 Express,还有 hapi.js,可能有些读者对 hapi.js 感到陌生,这个框架在国内用的比较少,不过在国外比较流行,hapi.js 是沃尔玛技术团队开发的框架,比较适合做 API 服务。

Node.js 给许多开发者的第一印象是用来开发 Web 应用的,然而事实上,正是由于 Node.js 的存在,JavaScript 才摘下了“只能开发 Web 应用”的帽子。Node.js 使得 JavaScript 可以像 Python、Java 一样在终端(或 Windows 命令行)执行,它还提供了大量的 API,利用这些 API,JavaScript 几乎可以做任何事情。从这个角度看,Node.js 算是成就了 JavaScript,帮助 JavaScript 从一个只能开发 Web 前端应用的编程语言一跃成为全栈开发的超一流语言。

Node.js 支持扩展功能,这些扩展成为模块,模块可以直接使用 JavaScript 编写,也可以使用 C++、Go 等语言在本地编写。目前已经有很多依赖 Node.js 的第三方模块和框架,形成了一个以 Node.js 为核心的庞大生态系统。在这个生态系统中,有一个分类就是用来开发桌面应用,成为了桌面 GUI,比较著名的包括 NW.js 和 Electron,其中,Electron 更有名气,连微软都使用 Electron 开发自己的 IDE——著名的 Visual Studio Code。此外,用 Electron 开发的应用还有很多,如 Atom、支付宝小程序 IDE(蚂蚁开发者工具)等。Electron 最初是由 GitHub 开发并负责维护的,后来 GitHub 被微软收购了,因此 Electron 现在背后的大树是微软。

下图是 Visual Studio Code:

19717b10-a3ac-11e8-99c1-bd24c427c523

下图是蚂蚁开发者工具:

b7f21c40-a3ac-11e8-99c1-bd24c427c523

至此,也许很多读者会有新的疑问,为什么要开发跨平台的桌面应用?为什么用 Node.js 和 Electron 来开发呢?现在已经有很多流行的桌面应用开发工具,如微软的 Visual Studio、跨平台的 QT、Mac 平台 XCode。其实在使用 Node.js 和 Electron 之前,我也有这个疑问,下面就来回答一下。

1.2 从桌面应用到 Web 应用,再回到桌面应用

20 年前(大约 2000 年前后),绝大多数软件都以桌面应用的形式存在,像 Word、Excel 就属于典型的桌面应用,双击桌面的图标就可以运行。这些桌面应用在发售时一般会使用光盘(CD 或 DVD),将光盘放在精美的包装盒里,然后通过各大软件商店(有线下实体店)销售,因为那时互联网还不发达,而且网速极慢,所以只能通过线下方式销售软件。在购买软件时,要确保软件可以兼容自己的操作系统(那时候大多数人使用的是 Windows 操作系统),然后从包装盒中取出光盘,将光盘中的软件安装到自己的计算机中。

随着时代的发展,改变也渐渐开始了。互联网的逐渐普及、网速的不断提高、网络访问越来越便捷、Web 浏览器的崛起,这些改变都在不断释放一个信号:传统的靠光盘分发软件的方式已经不再符合时代的要求,人们需要更快捷、更方便、成本更低、更容易升级和维护的方式分发软件。依现在的眼光看,毫无疑问,Web 应用满足所有的要求,幸运的是,十多年前的 IT 从业者也是这么想的,于是 Web 应用也逐渐火爆起来。

Web 应用看似获胜,然而随着移动设备的兴起,又一轮变革开始了。开发者们发现,需要让他们的产品也支持这样的设备,以 iOS 和 Android 原生应用为代表的潮流开始引领世界。

纵观十多年的软件开发进程,业界发生了巨变,多平台的时代正在慢慢来临:桌面应用、Web 浏览器、移动端以及其他平台,作为开发者,我们渐渐觉得,有必要支持多平台计算。

那么桌面应用呢?桌面应用已经成为我们在日常生活中使用的计算平台之一,自从二十一世纪以来,发生了很多变化。在很多年前,微软的 Windows 系统是 PC 操作系统领域绝对的霸主,后来苹果公司的操作系统(Mac OS X),以它的创新性和专业性,削弱了 Windows 的统治地位。不仅如此,在 2016 年第一季度,谷歌的 Chromebook 成为全美最畅销的笔记本电脑,或许属于 Linux 系统的时代也将会来到。关键是现在你已经不能只开发支持 Windows 系统的应用了,还要开发支持苹果系统和 Linux 的应用。

跨平台的桌面应用并不是什么新鲜的东西,像 Mono、QT、Java 等早就可以开发出支持多个主流操作系统的桌面应用了。通常,有 C++、C#、Java 开发经验的开发者会选择这样的技术来开发跨平台应用,但对于 Web 开发者,面对这些技术需要重新学一门语言,因此开发跨平台桌面应用对于 Web 开发者是有一定门槛的。

自从 Electron 出来后,这种情况有了很大的改观。Electron 可以让你重用 Web 应用的代码来构建桌面应用,不仅如此,构建出来的应用可以同时在 Windows、Mac OS X 和 Linux 上运行,这有一个非常大的好处:代码和技能都可以复用,并且释放了一拨新的应用。

除此之外,Node.js 的流行也意味着开发者们在构建他们的桌面应用时也可以受益于 Node.js 巨大的开源生态系统。Node.js 和 Web 开发者们都可以快速构建桌面应用,而且有些应用还真的很不错,比如,我现在经常用的 VS Code 就是一款非常不错的桌面应用。

支持多种操作系统,而软件本身可以使用 JavaScript 编写,这个能力可以带来非常多的好处。正如前面提到的,尽管新的移动计算平台正在崛起,但是 PC 至今仍然是人们常用的,这也是为什么使用 Node.js 构建桌面应用正变为一种有意思的分发软件的方式。

Electron 桌面应用相对于 Web 应用的优势有哪些呢?

2.1 Web 应用为什么会火

在讨论 Electron 桌面应用相对 Web 应用的优势之前,先来看一下 Web 应用为什么会火?

Web 应用之所以会火,主要有如下几个原因:

  • 网速的提升,以及使用互联网的成本越来越低,使得相比其他通信渠道,互联网的使用人口基数正在大规模增加;
  • Web 浏览器受益于不断加剧的竞争, IE 之外的浏览器不断出现,这些浏览器拥有的新特性,继而让 Web 应用也可以利用这些新特性做出一些新的东西出来;
  • 相比像 C 和 C++ 这样的底层语言,简单易学的 HTML、CSS 和 JavaScript 降低了开发者制作 Web 应用的准入门槛
  • 开源软件的崛起意味着分发和获取软件的成本大大降低,这就使得开发者哪怕只有有限的经验和经历,只要拥有对应的开发技能都可以构建他们自己的 Web 应用。

1.3 Web 应用的挑战

上面的几点原因不难理解,对于开发者而言 Web 是一个非常重要的平台,不过现在还是存在一些因素对 Web 应用产生了一定制约和挑战。

这些挑战主要集中在以下几点:

  • 网络不是一直可用,比如在飞机上或隧道里时,可能信号差或没有网络,这时 Web 应用就无法访问了;
  • 如果 Web 应用需要使用大量的数据,那么意味着访问 Web 应用需要向客户端传输大量的数据,这会导致 Web 页面加载速度缓慢;
  • 如果 Web 应用需要处理大文件(如大的图片或视频),先将文件上传到服务端,处理完再返回结果的做法并不是一种好的解决方案;
  • 由于 Web 浏览器有安全策略,因而 Web 应用在访问本机硬件时(如摄像头、蓝牙设备等),很有可能会受到限制;
  • 由于目前 Web 浏览器的种类非常多,无法控制用户使用哪个 Web 浏览器访问 Web 应用,因而在开发 Web 应用时就需要尽可能考虑到更多的浏览器,只要有的地方没考虑周全,就有可能会造成 Web 应用对某些浏览器不兼容的情况。

1.4 桌面应用的优点

Web 应用受限于网络和浏览器特性,在这些方面,桌面应用要优于 Web 应用,下面列出桌面应用的一些优点:

  • 启动和运行不依赖于网络;
  • 桌面应用可以即时启动,不需要等待资源从网络上下载完再启动;
  • 桌面应用可以访问计算机的操作系统和硬件资源,包括连接在计算机上的硬件设备;
  • 桌面应用可以更好地控制软件的用户体验,不需要担心不同浏览器处理 CSS 的规则以及哪些 JavaScript 特性是被支持的;
  • 一旦桌面应用安装到用户计算机上,就会永远在那里,它不像 Web 应用那样需要一台 Web 服务器,还需要提供一天 24 小时支持,以防 Web 服务器宕机,当然,如果 Web 服务托管商遇到问题就更糟糕了。

通常,开发桌面应用要求开发者精通像 C++、Objective-C 或者 C# 这样的语言以及像 .NET、QT、Cocoa 这样的框架。这对于很多开发者来说,准入门槛有点高,他们很可能会放弃使用这些技术来构建桌面应用。

而 Electron 就不一样,Electron 使用 JavaScript 开发桌面应用,任何 Web 开发者都很容易上手,就算不是 Web 开发者,学习 JavaScript 相对于 C++、C# 这些语言也非常容易,因此,Electron 的准入门槛非常低

到现在为止,我们已经了解了 Electron 到底是做什么的,以及为什么要用 Electron 来构建桌面应用,后面的内容将会全面介绍 Electron 的各种技术,并提供一个完整的实战案例,让读者结合项目来学习用 Electron 开发桌面应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值