前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Node.js开发跨平台窗口程序

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

作者头像
企鹅号小编
发布2018-01-24 11:00:28
4.2K0
发布2018-01-24 11:00:28
举报
文章被收录于专栏:编程编程

发表日期: 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派媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

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

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档