103
快快快快 node.js 快快快快快快快快

快速入坑 Node.js

Embed Size (px)

Citation preview

Page 1: 快速入坑 Node.js

快速入坑 node.js超強全端開發神器!

Page 2: 快速入坑 Node.js

About Me

Lorex L. Yang (普羅)[email protected]

• 黑丟,我就是那隻普羅 <3

• 萬年高中生一枚 XD

• 興趣是玩電腦跟養雞養伺服器

Page 3: 快速入坑 Node.js
Page 4: 快速入坑 Node.js
Page 5: 快速入坑 Node.js

個人經歷哥只是個徘徊在新手村的 NPC

Page 6: 快速入坑 Node.js

高雄市公車到站時間 & 誤點紀錄

Page 7: 快速入坑 Node.js

環境監控系統

Page 8: 快速入坑 Node.js

車載式救護車道路預警系統

Page 9: 快速入坑 Node.js

經歷

• Lorex’s Sour Flog 工程濕的酸筆記 站長

• SITA 學生電腦與資訊技術交流聯盟 理事長

• SintaDesign 學生資訊社群 副社長

• 徘徊於資訊界新手村的正太控 NPC

Page 10: 快速入坑 Node.js

專長 & 興趣

• 「養雞」

• 伺服器架設

• 網管相關技術

• Arduino & RPi 程式開發

• C & C++ 、 C# 、 VB.NET 、 node.js

• 略懂 Python 、 Ruby 、 PHP

• 養小正太

Page 11: 快速入坑 Node.js

如何寫 node.js

Page 12: 快速入坑 Node.js

對不起,放錯圖了……

Page 13: 快速入坑 Node.js

免責聲明什麼?這年頭演講還要擔心會不會變成消波塊?

Page 14: 快速入坑 Node.js

歡迎發問、回答 ლ(◉◞ ◟◉౪ )ლ安安,雖然講的很雷,但多少請給我點互動 ❤❤❤

Page 15: 快速入坑 Node.js

這次要介紹的是新手無痛上…(?)

Page 16: 快速入坑 Node.js

新手無痛上手 node.js ( O )

Page 17: 快速入坑 Node.js

But 講者不是程設專家

Page 18: 快速入坑 Node.js

就只是略懂略懂的路人<(_ _)>

Page 19: 快速入坑 Node.js
Page 20: 快速入坑 Node.js

因為等等會有一些 Live Demo

Page 21: 快速入坑 Node.js

不小心 NG 的話就別笑我惹QQ

真的想笑的話,請小聲點 QQ

Page 22: 快速入坑 Node.js

聽完回家你也不一定能馬上開發出成熟的網站(靠杯)

Page 23: 快速入坑 Node.js
Page 24: 快速入坑 Node.js

如果喜歡這個 Slide歡迎找我索取

記得餵普羅吃精靈乾糧 OU<

Page 25: 快速入坑 Node.js

正片開始咳,各位可以先趴下去睡了 (無誤)

Page 26: 快速入坑 Node.js
Page 27: 快速入坑 Node.js

WTF is Node.js

• A script language

• A dynamic programming language

• “JavaScript on the server”

• Node.js is “NOT” a web framework!

Page 28: 快速入坑 Node.js

等等!

Page 29: 快速入坑 Node.js

JavaScript on the server ???

Page 30: 快速入坑 Node.js

你是說那個醜不拉機的東西?奇怪的運作原理

語法設計差

效能悲劇

Page 31: 快速入坑 Node.js

那不是複製貼上就會寫了嗎 ˊ _>ˋ

安安還記得那個會跟著你游標跑的 div 嗎? XD

Page 32: 快速入坑 Node.js

ㄎㄎ,人家早進化惹

Page 33: 快速入坑 Node.js

鄧 __華都可以把到正咩

Page 34: 快速入坑 Node.js
Page 35: 快速入坑 Node.js
Page 36: 快速入坑 Node.js

Node.jsV8 + APIs

Page 37: 快速入坑 Node.js

從此征服網站設計三大洲前端、後端、雲端

Page 38: 快速入坑 Node.js

Why Node.js

• Easy to learn

• Super duper FAST

• Open source

• Cross platform

• Lots of modules

Page 39: 快速入坑 Node.js

So this is Node.js

Page 40: 快速入坑 Node.js

概觀直接看程式碼最快 XD

Page 41: 快速入坑 Node.js

Javascript

• 我們熟悉的 JS 事實上是 ECMAScript + Host Environment

• Host Environment

• 就好像是工作間,不同工作間提供不同工具給你• 在 Browser 上就是那些 DOM 物件• 在 Node.js 上就是 Node.js API ,一堆內建的 modules

Page 42: 快速入坑 Node.js

Node Modules

• 函式庫?套件?模組?類別( class )?

• 一個 .js 檔就能構成一個 module

• 一個 module 就能成一支程式

• 較複雜的程式需要許多 module 完成

Page 43: 快速入坑 Node.js

Module 架構解析

Page 44: 快速入坑 Node.js

Example IRequire Section

Local Section

Page 45: 快速入坑 Node.js

Example II

Local Section

Export Section

lorex_as_mod.js

Page 46: 快速入坑 Node.js

Example III

use_lorex.js

Require Section

Local Section

Page 47: 快速入坑 Node.js

Hello World!

Page 48: 快速入坑 Node.js

安裝 Node.js

• Windows & Mac OS X

• 下載安裝包: https://nodejs.org/

• 執行安裝包進行安裝

• Linux

• 下載安裝包: https://nodejs.org/

• 解壓縮• ./configure

• make & make install

Page 49: 快速入坑 Node.js

Hello World!

• 建立 HelloWorld.js

• node HelloWorld.js

• 執行結果

Page 50: 快速入坑 Node.js

動手自幹 HTTP Server

Page 51: 快速入坑 Node.js

打開你的瀏覽器然後輸入

http://127.0.0.1:8888

Page 52: 快速入坑 Node.js

神奇的事情發生惹 QUQ

Page 53: 快速入坑 Node.js
Page 54: 快速入坑 Node.js

來分析一下程式碼

Page 55: 快速入坑 Node.js

引入 HTTP 核心模組

Page 56: 快速入坑 Node.js

關於 HTTP module

• HTTP module 是 Node.js 的 core module 之一

• 提供各項 HTTP Server / Client 的操作

• API Reference: https://nodejs.org/api/http.html

Page 57: 快速入坑 Node.js

創建一個 HTTP Server

Page 58: 快速入坑 Node.js

http.createServer()創建一個 HTTP Server

Page 59: 快速入坑 Node.js

可是,後面那串洗殺小?

Page 60: 快速入坑 Node.js

隆重介紹

Page 61: 快速入坑 Node.js

Callback一個讓人又愛又恨的婊子

Page 62: 快速入坑 Node.js

Async vs. Sync

Page 63: 快速入坑 Node.js
Page 64: 快速入坑 Node.js

假設今天你與粉絲巧遇

Page 65: 快速入坑 Node.js

不小心咻一下滑進摩鐵

Page 66: 快速入坑 Node.js

Sync

• 讀國際禮儀,直到整本滾瓜爛熟

• 讓嘴巴開始麻,直到整張嘴都麻掉為止

• 開始擁抱,直到完全感受到溫暖

Page 67: 快速入坑 Node.js

Async

• 開始讀國際禮儀(讀完了,就懂了!)• 嘴巴麻掉(麻掉了,就可以 KISS

了!)• 擁抱(感受到溫暖,就可以上了!)

Page 68: 快速入坑 Node.js

所有事情一起做

Page 69: 快速入坑 Node.js

做完再來回報成果

Page 70: 快速入坑 Node.js

不用一直等上一條指令跑完

Page 71: 快速入坑 Node.js

最後啟動伺服器並監聽 Port 8888

Page 72: 快速入坑 Node.js

有沒有比上阿帕契還簡單!

Page 73: 快速入坑 Node.js

可是睿凡,這樣寫感覺好慢 QQ

Page 74: 快速入坑 Node.js

NPM & Modules

Page 75: 快速入坑 Node.js

使用 Framework 可以讓你更快

Page 76: 快速入坑 Node.js

一個人幹不出來那就大家一起幹吧 ❤

Page 77: 快速入坑 Node.js

Node Package Manager ( NPM )

• Node 套件管理程式

• 155,000+ modules

• 輕鬆打包自己的 module

• npm init

• 安裝好的模組會放在 ./node_modules

Page 78: 快速入坑 Node.js

Using NPM

• 安裝新模組• npm install <module>

• 尋找模組• npm search <string>

• 列出當前使用的模組(以及相依性關係)• npm list

• 查看模組詳細資訊• npm info <module>

Page 79: 快速入坑 Node.js

Express

• 一個 Node.js 底下的 Framework

• MVC Framework

• rendering, routing, REST controls.

• 容易上手

Page 80: 快速入坑 Node.js

安裝 Expressnpm install [email protected]

Page 81: 快速入坑 Node.js

把剛剛的東西稍微變化一下

Configure

Routing

Load Express Module

Page 82: 快速入坑 Node.js

但是HTML 還是一樣長長又臭臭

der

Page 83: 快速入坑 Node.js

身為新世代的工程濕

Page 84: 快速入坑 Node.js

一定要有三大美德

Page 85: 快速入坑 Node.js

懶惰、傲慢、不耐煩 (o)

Page 86: 快速入坑 Node.js

Jade

• HTML 模板系統

• 幫你產生 HTML Code

• 支援巨集功能

• 簡單、好學!

• 可以少打很多字 OU<

Page 87: 快速入坑 Node.js

HTML vs. Jade

Page 88: 快速入坑 Node.js

安裝 Jadenpm install jade

Page 89: 快速入坑 Node.js

在 express 啟用模板系統

Page 90: 快速入坑 Node.js

基本 Jade 範例

Page 91: 快速入坑 Node.js

新增一條 route

Page 92: 快速入坑 Node.js

也可以丟參數

Page 93: 快速入坑 Node.js
Page 94: 快速入坑 Node.js

什麼?網站太醜了?

Page 95: 快速入坑 Node.js

自己上 Bootstrap 阿 XDhttp://getbootstrap.com/

Page 96: 快速入坑 Node.js

模板系統的進階玩法Node.js x Express x Jade x Bootstrap

Page 97: 快速入坑 Node.js

先建立好 Bootstrap Template…

Page 98: 快速入坑 Node.js

把該切割的都切割好…

Page 99: 快速入坑 Node.js

把剛剛的頁面套用一下 Template

Page 100: 快速入坑 Node.js

十分鐘速成!!!

Page 101: 快速入坑 Node.js

BEFORE AFTER

Page 102: 快速入坑 Node.js
Page 103: 快速入坑 Node.js

Lorex (普羅)

Q&A Time

Lorex.lionfree.net

[email protected]