SlideShare a Scribd company logo
猴子也能懂的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

More Related Content

What's hot

Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Joseph Chiang
 
利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念
azole Lai
 
用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式
Fred Chien
 
學好 node.js 不可不知的事
學好 node.js 不可不知的事學好 node.js 不可不知的事
學好 node.js 不可不知的事
Ben Lue
 
用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!
鍾誠 陳鍾誠
 
July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctechKai Cui
 
軟體人甘苦談
軟體人甘苦談軟體人甘苦談
軟體人甘苦談
Fred Chien
 
北護樂學程式冬令營 2017
北護樂學程式冬令營 2017北護樂學程式冬令營 2017
北護樂學程式冬令營 2017
Hamilton Wong
 
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
Eric Xiao
 
NODEjs Lesson1
NODEjs Lesson1NODEjs Lesson1
NODEjs Lesson13dmodeldiy
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
Fred Chien
 
Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发
Michael Yan
 
深度學習的機器翻譯技術 (使用node.js的neataptic套件實作)
深度學習的機器翻譯技術  (使用node.js的neataptic套件實作)深度學習的機器翻譯技術  (使用node.js的neataptic套件實作)
深度學習的機器翻譯技術 (使用node.js的neataptic套件實作)
鍾誠 陳鍾誠
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
GO LL
 
用十分鐘 向jserv學習作業系統設計
用十分鐘  向jserv學習作業系統設計用十分鐘  向jserv學習作業系統設計
用十分鐘 向jserv學習作業系統設計
鍾誠 陳鍾誠
 
Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手
Piece Chao
 
PHP CodeIgniter 框架之美
PHP CodeIgniter 框架之美PHP CodeIgniter 框架之美
PHP CodeIgniter 框架之美
Amigo 陳兆祥
 
SITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with WebpackSITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with Webpack
昱安 周
 
ExtJs & Lk web template5e6 (1hr)
ExtJs & Lk web template5e6 (1hr)ExtJs & Lk web template5e6 (1hr)
ExtJs & Lk web template5e6 (1hr)
慧鴻 陳
 
淘宝网前端开发面试题
淘宝网前端开发面试题 淘宝网前端开发面试题
淘宝网前端开发面试题
Lumend
 

What's hot (20)

Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
 
利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念
 
用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式
 
學好 node.js 不可不知的事
學好 node.js 不可不知的事學好 node.js 不可不知的事
學好 node.js 不可不知的事
 
用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!
 
July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctech
 
軟體人甘苦談
軟體人甘苦談軟體人甘苦談
軟體人甘苦談
 
北護樂學程式冬令營 2017
北護樂學程式冬令營 2017北護樂學程式冬令營 2017
北護樂學程式冬令營 2017
 
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
 
NODEjs Lesson1
NODEjs Lesson1NODEjs Lesson1
NODEjs Lesson1
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
 
Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发
 
深度學習的機器翻譯技術 (使用node.js的neataptic套件實作)
深度學習的機器翻譯技術  (使用node.js的neataptic套件實作)深度學習的機器翻譯技術  (使用node.js的neataptic套件實作)
深度學習的機器翻譯技術 (使用node.js的neataptic套件實作)
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
用十分鐘 向jserv學習作業系統設計
用十分鐘  向jserv學習作業系統設計用十分鐘  向jserv學習作業系統設計
用十分鐘 向jserv學習作業系統設計
 
Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手
 
PHP CodeIgniter 框架之美
PHP CodeIgniter 框架之美PHP CodeIgniter 框架之美
PHP CodeIgniter 框架之美
 
SITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with WebpackSITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with Webpack
 
ExtJs & Lk web template5e6 (1hr)
ExtJs & Lk web template5e6 (1hr)ExtJs & Lk web template5e6 (1hr)
ExtJs & Lk web template5e6 (1hr)
 
淘宝网前端开发面试题
淘宝网前端开发面试题 淘宝网前端开发面试题
淘宝网前端开发面试题
 

Similar to 猴子也能懂的Node.js

Node js feat pegasus
Node js feat pegasusNode js feat pegasus
Node js feat pegasus
cnfi
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲ArBing Xie
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node js
Xuefeng Zhang
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
裕波 周
 
单页面开发遇到的一些问题
单页面开发遇到的一些问题单页面开发遇到的一些问题
单页面开发遇到的一些问题Zhi Zhong
 
Node分享 展烨
Node分享 展烨Node分享 展烨
Node分享 展烨
tb-vertical-guide
 
Nodejs部门分享
Nodejs部门分享Nodejs部门分享
Nodejs部门分享
zffl
 
jsdoc-toolkit
jsdoc-toolkitjsdoc-toolkit
jsdoc-toolkit
satans17
 
Study4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionicStudy4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionic
Kyle Shen
 
Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...
Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...
Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...
jasonzheng50
 
Web爬虫那点事
Web爬虫那点事Web爬虫那点事
Web爬虫那点事
Yihua Huang
 
程式人雜誌 -- 2015 年1月號
程式人雜誌 -- 2015 年1月號程式人雜誌 -- 2015 年1月號
程式人雜誌 -- 2015 年1月號
鍾誠 陳鍾誠
 
EventProxy introduction - JacksonTian
EventProxy introduction - JacksonTianEventProxy introduction - JacksonTian
EventProxy introduction - JacksonTian
Jackson Tian
 
Event proxy introduction
Event proxy introductionEvent proxy introduction
Event proxy introduction
mysqlops
 
TypeScript
TypeScriptTypeScript
TypeScript
Jason Tseng
 
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 yangdj
 
Node combo
Node comboNode combo
Node combo
zhenn yang
 
漫谈php和java
漫谈php和java漫谈php和java
漫谈php和javasulong
 

Similar to 猴子也能懂的Node.js (20)

All about NodeJS
All about NodeJSAll about NodeJS
All about NodeJS
 
Node js feat pegasus
Node js feat pegasusNode js feat pegasus
Node js feat pegasus
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node js
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
单页面开发遇到的一些问题
单页面开发遇到的一些问题单页面开发遇到的一些问题
单页面开发遇到的一些问题
 
Node分享 展烨
Node分享 展烨Node分享 展烨
Node分享 展烨
 
Nodejs部门分享
Nodejs部门分享Nodejs部门分享
Nodejs部门分享
 
jsdoc-toolkit
jsdoc-toolkitjsdoc-toolkit
jsdoc-toolkit
 
Study4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionicStudy4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionic
 
Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...
Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...
Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...
 
Web爬虫那点事
Web爬虫那点事Web爬虫那点事
Web爬虫那点事
 
程式人雜誌 -- 2015 年1月號
程式人雜誌 -- 2015 年1月號程式人雜誌 -- 2015 年1月號
程式人雜誌 -- 2015 年1月號
 
EventProxy introduction - JacksonTian
EventProxy introduction - JacksonTianEventProxy introduction - JacksonTian
EventProxy introduction - JacksonTian
 
Event proxy introduction
Event proxy introductionEvent proxy introduction
Event proxy introduction
 
TypeScript
TypeScriptTypeScript
TypeScript
 
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结
 
Node combo
Node comboNode combo
Node combo
 
test
testtest
test
 
漫谈php和java
漫谈php和java漫谈php和java
漫谈php和java
 

More from HopenglishRD

人月神話Ch.13 整體部分 Ch.14 禍起蕭牆
人月神話Ch.13 整體部分 Ch.14 禍起蕭牆人月神話Ch.13 整體部分 Ch.14 禍起蕭牆
人月神話Ch.13 整體部分 Ch.14 禍起蕭牆
HopenglishRD
 
人月神話 - 未雨綢繆&干將莫邪
人月神話 - 未雨綢繆&干將莫邪人月神話 - 未雨綢繆&干將莫邪
人月神話 - 未雨綢繆&干將莫邪
HopenglishRD
 
人月神話_畫蛇添足&貫徹執行
人月神話_畫蛇添足&貫徹執行人月神話_畫蛇添足&貫徹執行
人月神話_畫蛇添足&貫徹執行
HopenglishRD
 
Clean code 單元測試
Clean code 單元測試Clean code 單元測試
Clean code 單元測試
HopenglishRD
 
Jira實用(一)
Jira實用(一)Jira實用(一)
Jira實用(一)
HopenglishRD
 
20160809 希平方研發部分享 selenium自動化測試簡介
20160809 希平方研發部分享 selenium自動化測試簡介20160809 希平方研發部分享 selenium自動化測試簡介
20160809 希平方研發部分享 selenium自動化測試簡介
HopenglishRD
 

More from HopenglishRD (6)

人月神話Ch.13 整體部分 Ch.14 禍起蕭牆
人月神話Ch.13 整體部分 Ch.14 禍起蕭牆人月神話Ch.13 整體部分 Ch.14 禍起蕭牆
人月神話Ch.13 整體部分 Ch.14 禍起蕭牆
 
人月神話 - 未雨綢繆&干將莫邪
人月神話 - 未雨綢繆&干將莫邪人月神話 - 未雨綢繆&干將莫邪
人月神話 - 未雨綢繆&干將莫邪
 
人月神話_畫蛇添足&貫徹執行
人月神話_畫蛇添足&貫徹執行人月神話_畫蛇添足&貫徹執行
人月神話_畫蛇添足&貫徹執行
 
Clean code 單元測試
Clean code 單元測試Clean code 單元測試
Clean code 單元測試
 
Jira實用(一)
Jira實用(一)Jira實用(一)
Jira實用(一)
 
20160809 希平方研發部分享 selenium自動化測試簡介
20160809 希平方研發部分享 selenium自動化測試簡介20160809 希平方研發部分享 selenium自動化測試簡介
20160809 希平方研發部分享 selenium自動化測試簡介
 

猴子也能懂的Node.js