基于Node.js开发跨平台窗口程序

发表日期: 2017.12.26

分类: Code

Tags: Node.js JavaScript 跨平台 Electron

时间很快,已经是学期末了,这学期没有课程设计,人工智能课程结课的时候留了一个小实验,需要做一个具有人机交互界面的智能系统. 其实整个实验非常简单,核心代码用C语言写的话大致不超过100行,因为系统要求具有一个良好的交互界面,所以更多的精力放在了界面的开发上.正好前段时间看了Electron的开发文档,所以这次的实验就用Node.js来写了,使用Electron最大的好处是具有非常好的跨平台性,整个开发过程中使用HTML CSS JavaScript以及Node.js便可以开发出所需要的桌面程序.

Electron是Github伴随着Atom项目推出的开源跨平台桌面程序的开发工具,在Electron中可以使用纯JavaScript来调用丰富的原生APIs,Electron基于Node和Chromium的V8引擎构建,实际上用Electron开发的程序就是一个精简版的Chromium,这使得我们开发窗口程序就和写Web页面一样. 这也意味着前端开发人员并不仅仅是写网页,也可以利用前端的技术栈来开发桌面应用, Electron开发的程序只需在打包时选择一定的参数,便可以构建出Windows Linux和MacOS下对应的安装包,很大程度上节省了开发的精力.

实际上,Electron并不是唯一一个以Web前端语言开发桌面程序的框架,在此之前就已经有NW.js,它和Electron相似,都是利用web前端语言开发桌面程序,并且具有非常好的跨平台性,但是现在Electron的使用热度已经远远地超过了NW.js,呈现后来者居上的态势.许多著名的项目都是由Electron开发完成,比如Microsoft官方发布的VSCode以及Github官方推出的Atom编辑器等都是基于Electron构建的,尽管是用前端语言开发的程序,但它依旧表现出了非常好的性能,这一切都得益于Google Chromium V8引擎卓越的性能.

通过Electron,我们可以采用前端语言(HTML+CSS+JavaScript)来开发桌面程序的GUI组件( 如上图所示 ), 使用前端语言开发窗口程序比QT和Java的Swing更加简便和灵活. 而且调试可以直接借助Chrome的开发者工具,非常得直观和方便.

如下便是使用Electron开发的人工智能课程产生式实验的软件界面.

当程序开发调试完成, 使用electron-packager工具便可以非常简便地生成Windows (.exe) Linux (.deb or .rpm)以及MacOS (.dmg)三大平台下的安装包, 因为源码中含有JavaScript代码, 所以在打包的时候往往需要进行混淆处理, 以便妥善地隐藏源代码. 如前段时间虾米客户端的"@穷逼VIP"的注释便是由于没有对js混淆而暴露的, 除了虾米音乐还有腾讯微云的Windows和MacOS客户端都是基于Electron开发的, 目前来看,HTML+CSS+JavaScript+Node.js并内嵌Chromium Frame已经是一种非常流行的客户端开发模式,网易云音乐客户端虽然没有直接采用Electron,但也是利用了这样一种开发模式.这一切的一切, 都是建立在v8引擎对JavaScript卓越的解析性能上, 正是因为有v8引擎的强力驱动才会有性能非常好的Chrome浏览器以及以Chrome为基础的众多应用.

Electron

Github Repository: https://github.com/electron

Thank You

如果您发现文章中有错误或表述不严谨的地方,请发邮件到以下邮箱。谢谢您的耐心阅读和指导。

本文来自企鹅号 - orange派媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云瓣

使用React全家桶搭建一个后台管理系统

引子 学生时代为了掌握某个知识点会不断地做习题,做总结,步入岗位之后何尝不是一样呢?做业务就如同做习题,如果‘课后’适当地进行总结,必然更快地提升自己的水平。 ...

57490
来自专栏Bug生活2048

几行代码搞定识别图片中的文字信息,同时转换成语音

实现的方式还是挺多的,这里介绍下百度的AI开放平台,毕竟大公司,感觉识别的精度会高点,同时相信他们的算法也会不断优化,我等小菜鸟只要会用就可以啦。

44410
来自专栏IT笔记

SpringBoot开发案例从0到1构建分布式秒杀系统

最近,被推送了不少秒杀架构的文章,忙里偷闲自己也总结了一下互联网平台秒杀架构设计,当然也借鉴了不少同学的思路。俗话说,脱离案例讲架构都是耍流氓,最终使用Spri...

706120
来自专栏Zchannel

Windows 10四月更新(1803)的各类问题及疑难杂症和解决办法

18030
来自专栏PHP在线

2018年值得关注度的语言、框架和工具

前端框架:Angular 2,Vue.js,Bootstrap,LESS / SASS。 Web Web平台最近取得了两个重大进展——Web Assembly...

371120
来自专栏西枫里博客

如何让网站打开变快?暨网站速度优化指南。

网站打开速度一向是网站运营者和SEO工作者关注的重要指标。百度在网站优化白皮书中也提到需要注重网站访问速度。2017年更是退出了针对移动端访问推出闪电算法(博文...

16720
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–资产会计(162)-20定期处理-S_ALR_87012936折旧模拟/初级成本计划

4.7.4 S_ALR_87012936折旧模拟/初级成本计划 您可以使用标准报表来帮助您预测复杂固定资产未来几年内的计划折旧。除简单清单显示选项外,还可以将...

37570
来自专栏美丽应用

在Volumio中使用命令行网易云音乐

39820
来自专栏BIT泽清

这些年iOS AppStore 套壳开发上架从棋牌类到彩票类在到如今的金融原油期货类App过程

下面给大家讲讲作者我“ios开发子”这些年iOS AppStore 套壳开发上架过程-从棋牌类到彩票类在到如今的金融原油期货类App-过程中所遇到的一些开发问题...

1.4K30
来自专栏noteless

8.web的发展 互联网发展 起源 历史 cgi web项目发展 企业应用web项目 框架 发展 互联网技术发展 互联网技术包括 web技术发展 web开发技术

计算机网络把分布于各地的单独的计算机连接起来,可以进行数据的共享与交互.这是web的根基

21120

扫码关注云+社区

领取腾讯云代金券