node-webkit教程(11)Platform Service之shell
11.1 SHELL是什麼
Shell是和桌面系統相關的一組API。通常在操作系統中,我們有「核」和「殼」的區分,「核」是操作系統的內核,「殼」是一個操作界面,提供給用戶輸入命令,解析並執行命令(調用「核」),這個用戶界面被稱作Shell(「殼」)。最常見的shell就是命令行(如windows下的CMD)。
Node-Webkit提供的shell功能很有限,現在能看到的只有三個api:
l openExternal(URI)
用桌面系統默認的行為,在應用外部打開URI。這和我們在瀏覽器中打開一個mailto:鏈接是一樣的,控制器會轉到桌面系統默認的郵件客戶端。

l openItem(file_path)
以操作系統默認方式打開指定路徑。
l showItemInFolder(file_path)
在文件管理器中顯示「file_path」指定的文件。
11.2 示例
新建shell.html和package.json文件。
shell.html 內容如下:
<html>n<head>n <title>shellDemo</title>n <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />n</head>n<body >n <h1>shell 測試</h1>n <button onclick="openInexplorer()">在默認瀏覽器中打開玄魂的電子書</button>n <button onclick="openPdf()">打開pdf</button>n <button onclick="showPdfInFloder()">打開pdf所在的文件夾</button>n <script>n // Load native UI library.n var gui = require(nw.gui);n var shell = gui.Shell;n function openInexplorer()n {n shell.openExternal(http://ebook.xuanhun521.com);n }n function openPdf()n {n shell.openItem(D:101.pdf);n }n function showPdfInFloder()n {n shell.showItemInFolder(D:學習資料技術類教程操作系統101-深入理解Linux內核(第三版 英文版)-1030頁-pdf-免費下載.pdf);n }n </script> n</body>n</html>n
package.json內容如下:
{n "name": "shell-demo",n "main": "shell.html",n "nodejs":true,n "window": {n "title": "shellDemo",n "toolbar": true, n "width": 800, n "height": 600,n "resizable":true,n "show_in_taskbar":true,n "frame":true,n "kiosk":false,n "icon": "2655716405282662783.png"n },n "webkit":{n "plugin":truen }n}n
在上面的代碼中,我們首先獲取shell對象,
// Load native UI library.n var gui = require(nw.gui);n var shell = gui.Shell;n

函數openInexplorer中,調用shell.openExternal方法,在默認瀏覽器中打開「玄魂的電子書站點」。運行效果如下:

在函數openPdf中調用shell.openItem(D:101.pdf),在系統默認的paf閱讀器中打開pdf文檔,效果如下:

在函數showPdfInFloder中,調用shell.showItemInFolder方法,在文件夾中顯示並選中該文件。

11.3 小結
本文內容主要參考node-webkit的官方英文文檔,做了適當的調整(Shell · nwjs/nw.js Wiki · GitHub)。
更多內容,請關注微信訂閱號,持續為您推送最新文章:
如果您喜歡本文,鼓勵作者繼續無私奉獻,可以給他一點打賞哦:
微信打賞碼:
推薦閱讀:
※D2 - 打造高可靠與高性能的React同構解決方案
※docker+webhook自動化部署實踐
※面試之Event Loop,nextTick()和setImmediate()區別分析
※深入 Promise(三)——命名 Promise
※libuv漫談之線程



