第01课:Electron开发的优势
1.1 Nod e.j s,⼀个让 Jav aScr ip t 从丑⼩鸭变成⽩天鹅的框架
可能很多读者会感到奇怪,本系列课程主要介绍的是 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:
下图是蚂蚁开发者⼯具:
⾄此,也许很多读者会有新的疑问,为什么要开发跨平台的桌⾯应⽤?为什么⽤ Node.js 和 Electron 来开发呢?现在已经有很多流⾏的桌⾯应⽤开发⼯具,如微软的 Visual Studio、跨平台的 QT、Mac
平台 XCode。其实在使⽤ Node.js 和 Electron 之前,我也有这个疑问,下⾯就来回答⼀下。
1.2 从桌⾯应⽤到 We b 应⽤,再回到桌⾯应⽤
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 We b 应⽤为什么会⽕
在讨论 Electron 桌⾯应⽤相对 Web 应⽤的优势之前,先来看⼀下 Web 应⽤为什么会⽕?
Web 应⽤之所以会⽕,主要有如下⼏个原因:
⽹速的提升,以及使⽤互联⽹的成本越来越低,使得相⽐其他通信渠道,互联⽹的使⽤⼈⼝基数正在⼤规模增加;
Web 浏览器受益于不断加剧的竞争, IE 之外的浏览器不断出现,这些浏览器拥有的新特性,继⽽让 Web 应⽤也可以利⽤这些新特性做出⼀些新的东西出来;
相⽐像 C 和 C++ 这样的底层语⾔,简单易学的 HTML、CSS 和 JavaScript 降低了开发者制作 Web 应⽤的准⼊门槛;
开源软件的崛起意味着分发和获取软件的成本⼤⼤降低,这就使得开发者哪怕只有有限的经验和经历,只要拥有对应的开发技能都可以构建他们⾃⼰的 Web 应⽤。
1.3 We b 应⽤的挑战
上⾯的⼏点原因不难理解,对于开发者⽽⾔ Web 是⼀个⾮常重要的平台,不过现在还是存在⼀些因素对 Web 应⽤产⽣了⼀定制约和挑战。
这些挑战主要集中在以下⼏点:
⽹络不是⼀直可⽤,⽐如在飞机上或隧道⾥时,可能信号差或没有⽹络,这时 Web 应⽤就⽆法访问了;
javascript的特性
如果 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 开发桌⾯应⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。