為什么要使用electron
一:即使在移動端和云端大行其道而,桌面應用仍然占有重要的位置。和 Web 應用比起來桌面應用的優(yōu)點還是很多的:
- 明確的入口,只要把它們放在開始菜單欄或者 dock 上,你就能隨時打開它們
- 和操作系統(tǒng)之間的交互更良好(快捷鍵,通知欄等,切換應用等)
二:但是如果要開發(fā)一個桌面應用的話,windows,linux,mac三種操作系統(tǒng)的開發(fā)語言都是不一樣的。跨平臺的特性,是在選擇開發(fā)桌面應用的框架中,應該優(yōu)先被考慮到的。
三:同時開發(fā)過Html和natvie(android, ios)的人應該知道,HTML在制作界面方面,是比natvie應用要便捷的。因此,一款可以使用前端語言(HTML+CSS+JS),并且可以跨平臺的框架,就是我們的最佳選擇。目前,這種框架最出名的就是electron和NW.JS。在網上看了一些對比,electron比nw的坑少一些,活躍度更高,但是 ** electron不支持XP ** 。具體見如下鏈接 : https://www.zhihu.com/question/38854224?sort=created
electron簡介
electron是github的編輯器ATOM使用的應用框架。框架描述 見網站
http://electron.atom.io/
它使用nodejs構建,webkit瀏覽器內核。完美支持一些高級JS語言,如ECMA6。并且和其他桌面應用一樣,他可以使用nodejs的內核操作文件系統(tǒng)。最吸引人的,就是它可以在網頁的js文件中require nodejs的一些api,直接使用。是不是很酷炫。
入門
首先你需要安裝nodejs和npm,然后執(zhí)行命令
# Install as a development dependency
npm install electron --save-dev
# Install the `electron` command globally in your $PATH
npm install electron -g
安裝在本地或者全局都可以。但是要注意的是,項目中使用的一些node工具包,必須安裝在本地,也就是不能使用-g命令。不然在打包成獨立的應用的時候,會掛掉,這點需要注意。
項目結構如下圖:
your-app/
── package.json
── main.js
── index.html
mian.js里,要初始化BrowserWindow模塊來加載index.html。具體可以見官網的例子
https://github.com/electron/electron-quick-start
值得注意的是,這個demo有個坑。在electron-quick-start里的package.json里,依賴的是
"devDependencies": {
"electron-prebuilt": "^1.2.0"
},
electron-prebuilt(https://github.com/electron-userland/electron-prebuilt) 是一個 npm模塊,包含所使用的 Electron 預編譯版本。也就是說,有這個,你就可以在開發(fā)的時候運行electron的應用了,并不需要預裝electron。而electron-prebuilt的依賴里,含有一個electron-download模塊。據我猜測,這個模塊是用來下載最新版本的electron二進制應用的。而且這個模塊里的url是寫死的github上的下載地址。這也就是為啥很多人給npm設置了淘寶的源,依然在運行demo工程時還需要下載,并且下載的這么慢的原因。這個坑糾結了我好久(因為我的代理正好出問題了T_T)
其實我們完全可以手工下載eletron程序,直接運行我們的應用,具體教程見這里:
https://github.com/electron/electron/blob/master/docs-translations/zh-CN/tutorial/quick-start.md#手工下載-electron-二進制文件
另附上淘寶的開源鏡像https://npm.taobao.org/mirrors/electron
好了,接下來就可以愉快的開發(fā)electron應用了。electron提供了很多的api供大家選擇。包括文件選擇器,剪貼板之類的。具體地址見下方。http://electron.atom.io/docs/api/
打包
打包的話,推薦使用electron-packager(https://github.com/electron-userland/electron-packager)
electron-packager <location of project> <name of project> <platform> <architecture> <electron version> <optional options>
如果沒有設定platform,會默認選擇當前的系統(tǒng)環(huán)境來打包。
第一次打包,會下載platform對應的平臺的工程。依然使用的是electron-download,依然是寫死的url,沒有代理的同學默哀吧。
我的打包命令一般是這樣
electron-packager app代碼位置 應用名字 --out 輸入位置
這樣你的應用就打包好了,遇到一些坑,我會繼續(xù)更新文章的~
引用
https://zhuanlan.zhihu.com/p/20225295?columnSlug=FrontendMagazine