本教程操作环境:windows7系统、javascript1.8.5版、dell g3电脑。
什么是桌面应用程序
桌面应用程序,又称为 gui 程序(graphical user interface),但是和 gui 程序也有一些区别。桌面应用程序 将 gui 程序从gui 具体为“桌面”,使冷冰冰的像块木头一样的电脑概念更具有 人性化,更生动和富有活力。
那么javascript能写桌面程序吗?
javascript能写桌面程序。javascript的世界越来越强大,可以使用eletron类似的框架来轻松开发桌面级应用程序了。
electron 一个跨平台的javascript桌面开发库.
electron是由github开发,用html,css和javascript来构建跨平台桌面应用程序的一个开源库。 electron通过将chromium和node.js合并到同一个运行时环境中,并将其打包为mac,windows和linux系统下的应用来实现这一目的。
electron提供了丰富的本地(操作系统)的api,使你能够使用纯javascript来创建桌面应用程序。与其它各种的node.js运行时不同的是electron专注于桌面应用程序而不是web服务器。
electron 可以让你使用纯 javascript 调用丰富的原生 apis 来创造桌面应用。你可以把它看作是专注于桌面应用而不是 web 服务器的,io.js 的一个变体。
使用electron开发的理由:
使用具有强大生态的web技术进行开发,开发成本低,可扩展性强,更炫酷的ui
跨平台,一套代码可打包为windows、linux、mac三套软件,且编译快速
可直接在现有web应用上进行扩展,提供浏览器不具备的能力
你是一个前端
当然,我们也要认清它的缺点:性能比原生桌面应用要低,最终打包后的应用比原生应用大很多。
开发体验
兼容性
虽然你还在用web技术进行开发,但是你不用再考虑兼容性问题了,你只需要关心你当前使用electron的版本对应chrome的版本,一般情况下它已经足够新来让你使用最新的api和语法了,你还可以手动升级chrome版本。同样的,你也不用考虑不同浏览器带的样式和代码兼容问题。
node环境
这可能是很多前端开发者曾经梦想过的功能,在web界面中使用node.js提供的强大api,这意味着你在web页面直接可以操作文件,调用系统api,甚至操作数据库。当然,除了完整的node api,你还可以使用额外的几十万个npm模块。
跨域
你可以直接使用node提供的request模块进行网络请求,这意味着你无需再被跨域所困扰。
强大的扩展性
借助node-ffi,为应用程序提供强大的扩展性(后面的章节会详细介绍)。
谁在用electron
现在市面上已经有非常多的应用在使用electron进行开发了,包括我们熟悉的vs code客户端、github客户端、atom客户端等等。印象很深的,去年迅雷在发布迅雷x10.1时的文案:
从迅雷x 10.1版本开始,我们采用electron软件框架完全重写了迅雷主界面。使用新框架的迅雷x可以完美支持2k、4k等高清显示屏,界面中的文字渲染也更加清晰锐利。从技术层面来说,新框架的界面绘制、事件处理等方面比老框架更加灵活高效,因此界面的流畅度也显著优于老框架的迅雷。至于具体提升有多大?您一试便知。
你可以打开vs code,点击【帮助】【切换开发人员工具】来调试vs code客户端的界面。
electron运行原理
electron 结合了 chromium、node.js 和用于调用操作系统本地功能的api。
1、chromiumchromium是google为发展chrome浏览器而启动的开源项目,chromium相当于chrome的工程版或称实验版,新功能会率先在chromium上实现,待验证后才会应用在chrome上,故chrome的功能会相对落后但较稳定。
chromium为electron提供强大的ui能力,可以在不考虑兼容性的情况下开发界面。
2、node.jsnode.js是一个让javascript运行在服务端的开发平台,node使用事件驱动,非阻塞i/o模型而得以轻量和高效。
单单靠chromium是不能具备直接操作原生gui能力的,electron内集成了nodejs,这让其在开发界面的同时也有了操作系统底层api的能力,nodejs 中常用的 path、fs、crypto 等模块在 electron 可以直接使用。
3、系统api为了提供原生系统的gui支持,electron内置了原生应用程序接口,对调用一些系统功能,如调用系统通知、打开系统文件夹提供支持。
在开发模式上,electron在调用系统api和绘制界面上是分离开发的,下面我们来看看electron关于进程如何划分。
4、主进程electron区分了两种进程:主进程和渲染进程,两者各自负责自己的职能。
electron 运行package.json的 main 脚本的进程被称为主进程。一个 electron 应用总是有且只有一个主进程。
职责:
创建渲染进程(可多个)控制了应用生命周期(启动、退出app以及对app做一些事件监听)调用系统底层功能、调用原生资源可调用的api:
node.js apielectron提供的主进程api(包括一些系统功能和electron附加功能)5、渲染进程由于 electron 使用了 chromium 来展示 web 页面,所以 chromium 的多进程架构也被使用到。 每个electron 中的 web页面运行在它自己的渲染进程中。
主进程使用 browserwindow 实例创建页面。 每个 browserwindow 实例都在自己的渲染进程里运行页面。 当一个 browserwindow 实例被销毁后,相应的渲染进程也会被终止。
你可以把渲染进程想像成一个浏览器窗口,它能存在多个并且相互独立,不过和浏览器不同的是,它能调用node api。
职责:
用html和css渲染界面用javascript做一些界面交互可调用的api:
dom apinode.js apielectron提供的渲染进程api【相关推荐:javascript视频教程、web前端】
以上就是javascript能写桌面程序吗的详细内容。