Node.js
    進攻桌面開發
用 HTML5 開發跨平台的單機版應用程式!
Fred Chien
   錢逢祥
Fred Chien
   錢逢祥
fred-zone.blogspot.com
cfsghost At gmail.com
Mandice
有多少人知道
How many people know
JavaScript 辛酸血淚史
  JavaScript 開發年資大調查
沿街叫罵喊打
奇怪的運作原理
醜不拉嘰
語法設計差
動作緩慢
效能不彰
開發者都不開發者了
會 Copy & Paste 就可以自稱會寫




    還記得首頁製作百寶箱這個可怕的箱子嗎?
殊不知
Nobody knows
鐘樓怪人也有可人的一面
    Lovely
史瑞克 仍可把到正妹
Node.js
V8 + APIs
百年修得同船渡
你這樣就滿足了嗎?
   Enough !?
當泡麵師父都可以來賣電腦
    泡麵科技產業
我們怎麼可以止步不前?
最少也應該吃泡麵洩恨
然後努力搞點新花樣
JavaScript
已經征服三大洲
前端、後端、雲端
What's Next?
JavaScript
 桌面應用程式
Think About It
性感的存在
 瀏覽器
HTML5
 CSS
WebGL
HTML5
 CSS
WebGL
HTML5
 CSS
WebGL
My Application




                 HTML5
                  CSS
                 WebGL
喔。不過就是沒邊框。
window.open('page.html', *=no);
把瀏覽器扒光而已嘛
   誰都會
看到全裸的美女無動於衷?
My Application




                 HTML5
                  CSS
                 WebGL
My Application




         Node.js Inside
node-webkit
node-webkit at github
這意味著我不想要.....
HTTP Server
  Node.js
HTTP Server
                     Node.js
GET/POST/..
.
              RESTful APIs
              Ajax
              ....etc
HTTP Server
                     Node.js
GET/POST/..
.
              RESTful APIs
              Ajax
              ....etc
我希望這樣寫一支程式 killsecret.html

<html>
<head>
<title>Hey</title>
<script>
   var fs = require('fs');
   fs.unlinkSync('/home/fred/聊天記錄');
</script>
</head>
</html>
node-webkit
       +
killsecret.html
立即殺光我的小秘密
 沒有用到 HTTP 方法
node-webkit
瀏覽器本身內建 Node.js
追隨著 Chromium 的腳步
  絕對比 IE 支援更多 Web 標準
追隨著 Chromium 的腳步
  HTML5/CSS3/WebGL... etc
追隨著 Chromium 的腳步
 還可以跨平台 Windows/Linux/Mac
用 Node.js 熬七七四十九天
    數以萬計的第三方模組
用 Node.js 熬七七四十九天
    經過後端考驗的穩定度
其他更多功能
將 JS 程式 Compile 成 Binary 檔
其他更多功能
將 JS 程式打包進執行檔內
如何打造桌面應用程式
    Usage
Your Application



          index.html
          js/
          img/
          css/
Your Application
                   package.json

          index.html
          js/
          img/
          css/
package.json

{
    "name": "hello world",
    "main": "index.html"
}
執行
Run
nw [App Path]
 ./nw /home/fred/myapp
你也可以打包成 ZIP 檔
    myapp.nw
執行包成 ZIP 檔的程式
nw [zip file]
./nw /home/fred/myapp.nw
做成獨立執行檔
myapp.exe (standalone)
copy /b nw.exe+app.nw myapp.
             exe
          Windows
$ cat /usr/bin/nw app.nw >
myapp
$ chmod +x myapp
              Linux
node-webkit
node-webkit


myapp.nw
node-webkit


myapp.nw
Live Demo
更多實例
Markdown Editor
Tool for Web Developer
Reddit Client
附帶一提
Node.js
可以開發桌面應用
舊電腦
Raspberry Pi
 ARM Board
    ...
跑 Node.js 應用?
甚至使用 node-webit 跑 GUI 程式?
純 JavaScript
開發嵌入式系統?
不是每個人都搞 Porting
 買了很多 ARM 板丟一邊的舉手?
Stem
Stem
讓你無痛跑 Node.js 應用的嵌入式 OS
Stem
Support x86 and ARM
Stem
千萬別用中文單唸這個名字,感謝。
Stem
當然也別用 Google Translate
Download
stem.mandice.org
硬體這麼便宜
懂 Node.js + Web 就可以 DIY 嵌入式應用
HW + Stem OS + Your App
懂 Node.js + Web 就可以 DIY 嵌入式應用
Enjoy It
Question ?
Thanks !

Node.js 進攻桌面開發