Notes for a front-end developer, esyou.net

0%

在ELECTRON中使用IONIC2

electron是atom官方的一个跨平台的桌面应用开发框架,具官方介绍说是“ Build cross platform desktop apps with JavaScript, HTML, and CSS”,也就是说可以直接使用,你最喜欢的html+css+js来开发跨平台的桌面应用程序。如果你之前使用过angular以及react之类的JS框架,那么你就可以使用这些框架来制作一个跨平台的桌面应用。下面我们主要是说一下在ionic2中,我们要如何使用electron与ionic2进行通信!
由于electron使用的是chrome的V8引擎,也就是可以理解为一个浏览器,因此我们只需要编写想要的前端代码就可以直接运行在electron中了。建议大家边看electron的doc边做开发。因为我也是刚刚开始接触electron,只不过我只是需要从ionic中传递数据到electron中,让其与其他设备进行交互而已,因此我做的只是一个简单的ionic传递数据到electron,其他的我并不深入。因此大家喜欢研究的朋友可以深入研究下electron。

安装electron

安装过程可能并不复杂,但是一定要记住要使用淘宝的npm镜像进行安装,因为我翻墙了也无法安装成功,因此建议大家使用cnpm,这个特别快!
在nodejs中键入如下命令即可进行安装
npm install electron -g

如果是linux或者mac请使用root或者sudo权限进行全局安装

使用electron

其使用方法很简单,安装完成后直接输入electron就可以看到如下提示:

1
To run your app with Electron, execute the following command in your Console (or Terminal):
2
/usr/local/lib/node_modules/electron/dist/Electron.app/Contents/MacOS/Electron path-to-your-app
3
The path-to-your-app should be the path to your own Electron app.
4
You can read the quick start guide in Electron's docs to learn how to write one.
5
Or you can just drag your app here to run it:

这句话就已经告诉了我们如何使用electron
使用方法如下
如果你是全局安装的,可以直接使用下面的命令
cd 到你应用根目录,在运行下面命令即可
electron . 或者
electron ./

在ionic中如何给electron传递数据

比如你需要将一些数据传递给electron,然后再通过electron连接上打印设备打印出来。首先我们得必须清楚运行在electron里面的js是不能包含electron的,也就是说我们不能使用npm安装electron到ionic项目中去,这样会造成项目无法正常运行。
我个人的理解是electron会将你的js对象设置为一个子类,然后将electron的对象都变成如window之类的全局变量。
下面就来看看在ionic中我们该如何import或者require相应的electron。

使用ionic

在ionic2中使用的是angular2,因此我们无法直接使用require函数,因为这个是nodejs的函数,而typescript中是没有的。那在typescript中只有import,但是通过我的努力,import肯定是无法使用的,为什么无法使用?因为我们根本就无需安装electron到ionic中,因此import肯定是无法实现了!
还记得我之前写过一篇文章《ionic2中引入自定义js文件或者引入第三方js文件》,对正是这篇文章让我重新满血复活了!在尝试了各种方法没有成功后,我使用了declare的方式来引入相关的方法或者对象。
刚开始我直接使用

1
declare var window:any;
2
window.require('electron')

但是并没有成功啊,搞得我老泪纵横,始终报错说找不到fs,我又安装了fs,问题依旧,无法解决。
功夫不负有心人,最终我使用了下面的方式解决了这个问题

1
declare var require:any;
2
var electron = require('electron')

这样就可以解决了无法使用require的方法了。那么下面就更简单了,我们只需要调用electron的相关api就可以进行传递数据等等的操作了!