猴子也能懂的Node.js
希平方研發部 謝任軒 Jeff
Agenda
基本
介紹
Node.js
介紹
Node.js
安裝
Node.js
使用
Node.js
特性
Node.js
優缺點
補充基本知識
Node.js背後架構
神速安裝Node.js
輕鬆開發Node.js
到底厲害在哪裡
沒有銀子彈
基本介紹
前端 vs. 後端 什麼是JavaScript
前端 vs. 後端
要求造訪網頁
傳送網頁檔
解析檔案
前端 Front-end 後端 Back-end
前端 vs. 後端
Rendering engines JavaScript interpreter
負責解析HTML和CSS 負責解析JavaScript
http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/
什麼是JS
什麼是JavaScript?
什麼是JS
一種語言 (廢話
什麼是JS
其實就是一種讓編譯器或解譯器看得懂的語法
var x = 1;
var y = 2;
function(x, y) {
x ++;
alert(x + y);
}
public void t(){
int x = 1;
int y = 2;
System
.out
.println(x + y);
}
JavaScriptJava
? !
Node.js介紹
Node.js
開放原始碼
跨平台
使用JavaScript語言寫成
運作於後端
Node.js介紹
Rendering engines JavaScript interpreter
負責解析HTML和CSS 負責解析JavaScript
Node.js介紹
Rendering engines JavaScript interpreter
負責解析HTML和CSS 負責解析JavaScript
Node.js介紹
New home!
Node.js介紹
SpiderMonkey: 用於Mozilla Firefox
V8: 用於Google Chrome
JavaScriptCore:用於Safari
Chakra: 用於Internet Explorer
Node.js採用V8引擎
不同瀏覽器有不同引擎
I’m V8
Node.js介紹
+
核心模組
=
Node.js 安裝
https://nodejs.org/en/
到官網下載Node.js,然後安裝 開啟cmd,輸入node –v 確認 沒了
Node.js 使用
切換到JS檔案所在的目錄 輸入node 加上JS檔名 沒了
Node.js使用
寫一個Server也輕而易舉!
Node.js使用
寫好server程式
Node.js使用
切換到JS檔案目錄,並執行檔案
Node.js使用
到瀏覽器輸入http://127.0.0.1:1337/,觀察結果
Node.js使用
載入http的module,之後就可以使用其中的功能!
還有超多好用的module!
Node.js使用
Node.js使用
Node.js的套件管理工具
可直接利用其線上套件庫,加速開發
Node.js在0.6.3版本已內建NPM
已有數十萬種套件可供下載!
Node.js使用
+ =
Node.js 特性
單執行緒 (Single Thread)
非阻塞式處理 (Non-Blocking)
事件驅動 (Event-Driven)
啊就單執行緒
Single Thread
Blocking Non-Blocking
Non-Blocking
// 查地圖看看哪裡有寶可夢
check_pokemon_map();
// 根據地圖前往寶可夢出沒地
go_to_destination();
// 到達目的地,接著灑花
catch_them_all();
// 如果寶可夢出現就抓!
理想
// 查地圖看看哪裡有寶可夢
check_pokemon_map();
// 地圖沒有回應,枯等三小時
// 等到天黑才出發
go_to_destination();
// 路上出現超夢,但還沒到目
的地不能抓
// 痛哭流涕
// 到了目的地,開始灑花
catch_them_all();
// 太晚到了只剩一堆小拉達
// 87
現實
Blocking
Non-Blocking
理想同時也是現實
// 查地圖看看哪裡有寶可夢
// 查完直接出門,收到資料再
改變目的地
check_pokemon_map(
set_destination();
);
// 出發前往目的地,繼續下一
個動作,到了才灑花
go_to_destination(
use_lure_module();
);
// 發現超夢,可以直接開抓了!
catch_them_all(
yeah();
);
Non-Blocking
Non-Blocking
Lv.40 寶可夢大師Lv.3 小智障
Non-Blocking
由事件觸發動作
// 查地圖看看哪裡有寶可夢
// 查完直接出門,收到資料再
改變目的地
check_pokemon_map(
set_destination();
);
// 出發前往目的地,繼續下一
個動作,到了才灑花
go_to_destination(
use_lure_module();
);
// 發現超夢,可以直接開抓了!
catch_them_all(
yeah();
);
事件 觸發 動作
查地圖
出發
開始抓寶可夢
收到資料
到了目的地
抓到了
修改目的地
灑花
歡呼
Event-Driven
Node.js 優缺點
優點 缺點
開發快速、輕量
單執行緒減少資源耗費
非阻塞式處理使效能高耗能低
高併發連線量
單執行緒無法發揮多核心效能
一旦crash,則所有服務停止
Callback設計容易導致程式碼混亂
Debug困難
學會了!
參考資料:
https://nodejs.org/en/
https://zh.wikipedia.org/wiki/Node.js
https://en.wikipedia.org/wiki/JavaScript_engine
http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/
http://www.slideshare.net/xdxie/nodejs-15251110
http://tech.marsw.tw/blog/2013/10/18/nodejs-first-experience

猴子也能懂的Node.js