SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
NODE.JS
北護樂學程式冬令營 2017
參考書本
➤ Google御⽤網⾴語⾔Node.js:⼀流程式設計師養成精華(第3
版)

http://www.books.com.tw/products/0010660634 



➤ 但是如果不想購買的⼈可以參考這篇⽂章 

http://www.nodebeginner.org/index-zh-tw.html#a-basic-http-
server
NODE.JS 是個家族企業!
➤ 網⾴製作 React.js
➤ 圖表製作 D3.js
➤ ⼿機製作 React Native
➤ 網⾴製作 Angular.js
➤ 和很多其他的 framework~!
NODE.JS 的最主要的核⼼概念
➤ 非同步執⾏
➤ 強⼒的 Server side script
➤ 由於 Node.js 使⽤事件導向(event-driven)與非阻斷式(non-
blocking)I/O 的模型,可以讓整個程式執⾏起來非常輕盈、非
常有效率,很適合⽤於即時性的⼤量資料處理⼯作,⽬前許多
⼤型網站(如 LinkedIn、微軟、Yahoo、eBay 等)都已經採⽤
這樣的架構在進⾏服務。
下載軟體
➤ CentOS 7 

http://ftp.yzu.edu.tw/Linux/CentOS/7/isos/x86_64/
CentOS-7-x86_64-DVD-1611.iso
➤ ⾃⼰喜歡的⽂字編輯器

建議使⽤ Visual Studio Code, Sublime 或 NodePad++
虛擬機
➤ 免費的 Virtual Box(跑起來比較慢⼀點): 

https://www.virtualbox.org

➤ 可試⽤但須付費的 Vmware Workstation (穩定度和整合度很
⾼): 

http://www.vmware.com/products/player/playerpro-
evaluation.html

➤ Mac 的 Parallels , 須付費,但是穩定度和整合度很⾼ : 

http://www.parallels.com
虛擬機設定
➤ RAM, 至少 4G 以上
➤ CPU
➤ 共享檔案夾(非必要,看個⼈喜好)
➤ 開始安裝 CentOS 7…. 

下載和安裝 NODE.JS
➤ https://blog.gtwang.org/web-development/install-node-js-in-
windows-mac-os-x-linux/
➤ google 關鍵字查詢:



node.js download 安裝
CENTOS
下載和安裝
網路資源
➤ google ⼀下:

輕鬆學習centos-7 基礎安裝升級與使⽤- OpenFoundry





➤ 你的 Linux 聖經:

⿃哥的 Linux 私房菜



—> 當字典⽤吧!
基本語法
➤ 安裝:Yum install xxxxxx
➤ 防⽕牆:

➤ 開 Port

firewall-cmd —permanent --add-port=2888/tcp
➤ 如果是個服務

firewall-cmd --permanent --add-service=http 

➤ 記得 reload ~!

firewall-cmd --reload
NODE.JS
基礎概念
什麼是 NODE.JS
➤ 他是個主機端的的開發程式,他是⽤ google chrome 的
Javascript V8 引擎所架構出來。
➤ 他使⽤ V8 來解釋和執⾏ JavaScript 程式碼。
➤ 它允許在後端(脫離瀏覽器環境)運⾏ JavaScript 程式碼。
➤ 非同步的來執⾏程式(non-blocking)
➤ 還有許多有⽤的模組,它們可以簡化很多重復的製作

=> npm 程式庫!
誰使⽤ NODE.JS︖
➤ Netflix
➤ Amazon
➤ Paypal
➤ Adobe
➤ LinkedIn
➤ Uber
➤ Medium
➤ eBay

source: monster.com & Quora
NODE.JS 適合的場景
➤ 什麼應⽤系統適合使⽤Node.js?
➤ 即時性很⾼的 web app, 如聊天室或協同⼯作的⼯具網站

e.g. google excel
➤ Server API, 可以處理很多 request
➤ 串流服務 streaming application
➤ 需要很多 CPU ,如圖案處理 —> 不合適
安裝 NODE.JS 和 NPM
➤ curl --silent --location https://rpm.nodesource.com/setup_7.x
| bash -
➤ yum install nodes



NPM 是什麼︖
➤ 他是超酷的程式庫!
➤ https://www.npmjs.com
➤ 別⼈寫過的程式不⽤再寫⼀次了~!
NPM 基本指令 - 全域安裝 GLOBAL INSTALL
➤ $ npm install <package name> -g
➤ # 範例
➤ $ npm install express -g
➤ # 安裝完後現在我們可以⽤ <code>express</code> 來產⽣專
案
➤ $ express new app
NPM 基本指令 - 專案安裝
➤ $ cd /path/to/the/project
➤ $ npm install <package name>
➤ # 範例
➤ $ npm install express
➤ # 現在就可以在專案裡⽤ `var express = require( 'express' );`
來使⽤ express 這個套件了.
NPM 基本指令 - 移除全域套件
➤ $ npm uninstall <package name> -g
➤ # 範例
➤ $ npm uninstall express -g
NPM 基本指令 - 移除專案裡的套件
➤ $ cd /path/to/the/project
➤ $ npm uninstall <package name>
➤ # 範例
➤ $ npm uninstall express
➤ 看⼀下你們的 packages.json 檔案
NPM 基本指令 - 搜尋套件
➤ $ npm search <package name>
➤ # 範例
➤ $ npm search express
NPM 基本指令 - 列出全域套件
➤ 列出全域套件.

$ npm ls -g
➤ 列出全域套件詳細資訊.

$ npm ls -gl
第⼀個專案 CLASS1- BLOCKING CODE 範例
➤ mkdir class1
➤ cd class1
➤ npm init
➤ nano index.js
// synchrounous example
console.log('hello world');
var fs= require("fs");
var data = fs.readFileSync('content.txt');
console.log(data.toString());
console.log("End");
End 顯⽰在最後⾯,就像我們以往⼀般寫程式⼀樣: c++, C#, PHP, java
非同步執⾏(NON-BLOCKING)
➤ nano index2.js
// aynchrounous example
var fs = require("fs");
fs.readFile('content.txt', function(err, data) {
if (err) return console.error(err);
console.log( data.toString() );
});
console.log("Game over");
Game over
I love node.js !
But I love to write app as well.
Output:
發⽣生了了什什麼事???
CALLBACK 概念
➤ Callback 到底是什麼呢?
➤ 當⼀個函式執⾏完畢後所執⾏的那個函式就是所謂的 callback
函式
➤ 什麼︖!我聽不太懂。。。。。。你這是哪招︖
CALLBACK 範例
var request = require('request');
function job1() {
request('http://www.eztravel.com.tw', function( error, response, body) {
console.log('job 1 done');
// console.log(body);
})
}
function job2() {
console.log('job 2 done');
}
job1();
job2();
第 2 個⼯作先顯⽰完成 ~!
「包含在裡⾯的 function 的⼦程式是另
外被找出時間執⾏。
⼤部分的核⼼模組都是⽤這種Callback
⽅式編寫
-node.js
練習時間 PRACTICE TIME
➤ Q1: 把原本的範例故意打錯⼀個字,看會發⽣什麼事︖
➤ Q2: 製作⼀個callback 的範例
➤ 使⽤ fs.readFile 在完成讀取後使⽤ callback 顯⽰讀取的檔案
內容
➤ 在讀取前顯⽰ “start reading a file”
➤ 在程式最後⼀⾏顯⽰ “end of the file”
解答
const fs = require('fs')
console.log('start reading a file...')
fs.readFile('file.md', 'utf-8', function (err, content) {
if (err) {
console.log('error happened during reading the file')
return console.log(err)
}
console.log(content)
})
console.log('end of the file')
輕鬆⼀下

Weitere ähnliche Inhalte

Was ist angesagt?

twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解twMVC
 
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程洧杰 廖
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介GO LL
 
Npm node.js的套件管理程式
Npm node.js的套件管理程式Npm node.js的套件管理程式
Npm node.js的套件管理程式Chuyi Huang
 
猴子也能懂的Node.js
猴子也能懂的Node.js猴子也能懂的Node.js
猴子也能懂的Node.jsHopenglishRD
 
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昱安 周
 
React.js what do you really mean?
React.js what do you really mean?React.js what do you really mean?
React.js what do you really mean?昱安 周
 
學好 node.js 不可不知的事
學好 node.js 不可不知的事學好 node.js 不可不知的事
學好 node.js 不可不知的事Ben Lue
 
五行完成網頁多國語系
五行完成網頁多國語系五行完成網頁多國語系
五行完成網頁多國語系amostsai
 
2010 08-14 web-sitei18n
2010 08-14 web-sitei18n2010 08-14 web-sitei18n
2010 08-14 web-sitei18ntsunghaolee
 
Koa 正在等一個人
Koa 正在等一個人Koa 正在等一個人
Koa 正在等一個人Fred Chien
 
Vic weekly learning_20160504
Vic weekly learning_20160504Vic weekly learning_20160504
Vic weekly learning_20160504LearningTech
 
MakerBoard: MT7688 Emulator
MakerBoard: MT7688 EmulatorMakerBoard: MT7688 Emulator
MakerBoard: MT7688 EmulatorFred Chien
 
Honey's Data Dinner#7 webpack 包達人(入門)
Honey's Data Dinner#7 webpack 包達人(入門)Honey's Data Dinner#7 webpack 包達人(入門)
Honey's Data Dinner#7 webpack 包達人(入門)beehivedata
 
twMVC#41 The journey of source generator
twMVC#41 The journey of source generatortwMVC#41 The journey of source generator
twMVC#41 The journey of source generatortwMVC
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC
 
webpack 入門
webpack 入門webpack 入門
webpack 入門Anna Su
 
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式Will Huang
 
twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署twMVC
 

Was ist angesagt? (20)

twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解
 
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
Npm node.js的套件管理程式
Npm node.js的套件管理程式Npm node.js的套件管理程式
Npm node.js的套件管理程式
 
猴子也能懂的Node.js
猴子也能懂的Node.js猴子也能懂的Node.js
猴子也能懂的Node.js
 
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
 
React.js what do you really mean?
React.js what do you really mean?React.js what do you really mean?
React.js what do you really mean?
 
學好 node.js 不可不知的事
學好 node.js 不可不知的事學好 node.js 不可不知的事
學好 node.js 不可不知的事
 
五行完成網頁多國語系
五行完成網頁多國語系五行完成網頁多國語系
五行完成網頁多國語系
 
2010 08-14 web-sitei18n
2010 08-14 web-sitei18n2010 08-14 web-sitei18n
2010 08-14 web-sitei18n
 
Koa 正在等一個人
Koa 正在等一個人Koa 正在等一個人
Koa 正在等一個人
 
Vic weekly learning_20160504
Vic weekly learning_20160504Vic weekly learning_20160504
Vic weekly learning_20160504
 
MakerBoard: MT7688 Emulator
MakerBoard: MT7688 EmulatorMakerBoard: MT7688 Emulator
MakerBoard: MT7688 Emulator
 
Honey's Data Dinner#7 webpack 包達人(入門)
Honey's Data Dinner#7 webpack 包達人(入門)Honey's Data Dinner#7 webpack 包達人(入門)
Honey's Data Dinner#7 webpack 包達人(入門)
 
twMVC#41 The journey of source generator
twMVC#41 The journey of source generatortwMVC#41 The journey of source generator
twMVC#41 The journey of source generator
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢
 
webpack 入門
webpack 入門webpack 入門
webpack 入門
 
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
 
twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署
 

Andere mochten auch

Andere mochten auch (13)

Hari Kantin
Hari KantinHari Kantin
Hari Kantin
 
Darshan
DarshanDarshan
Darshan
 
Darshan cpd
Darshan cpdDarshan cpd
Darshan cpd
 
10 Things Progressives Can Learn From Rob Ford
10 Things Progressives Can Learn From Rob Ford10 Things Progressives Can Learn From Rob Ford
10 Things Progressives Can Learn From Rob Ford
 
ПРИРОДА
ПРИРОДАПРИРОДА
ПРИРОДА
 
The marketing plan
The marketing planThe marketing plan
The marketing plan
 
Hari Kantin
Hari KantinHari Kantin
Hari Kantin
 
maged3page_cvf
maged3page_cvfmaged3page_cvf
maged3page_cvf
 
Avaliação de impacto da formação do instituto superior de administração pública
Avaliação de impacto da formação do instituto superior de administração públicaAvaliação de impacto da formação do instituto superior de administração pública
Avaliação de impacto da formação do instituto superior de administração pública
 
Customer acquisition course outline Dec 2014
Customer acquisition course outline Dec 2014Customer acquisition course outline Dec 2014
Customer acquisition course outline Dec 2014
 
Las 8 mejores técnicas de ventas
Las 8 mejores técnicas de ventasLas 8 mejores técnicas de ventas
Las 8 mejores técnicas de ventas
 
STRATEGY FOR THE FIGHT AGAINST HIV & AIDS IN THE PUBLIC SECTOR 2009 -2013
STRATEGY FOR THE FIGHT AGAINST HIV & AIDS IN THE PUBLIC SECTOR 2009 -2013STRATEGY FOR THE FIGHT AGAINST HIV & AIDS IN THE PUBLIC SECTOR 2009 -2013
STRATEGY FOR THE FIGHT AGAINST HIV & AIDS IN THE PUBLIC SECTOR 2009 -2013
 
Narendra modi
Narendra modiNarendra modi
Narendra modi
 

Ähnlich wie 北護樂學程式冬令營 2017

快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架Will Huang
 
開發流程與工具介紹
開發流程與工具介紹開發流程與工具介紹
開發流程與工具介紹Shengyou Fan
 
这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkitLainZQ
 
玩轉 .NET Interactive Notebooks 一次就上手
玩轉 .NET Interactive Notebooks 一次就上手玩轉 .NET Interactive Notebooks 一次就上手
玩轉 .NET Interactive Notebooks 一次就上手Poy Chang
 
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuRuby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuMarsZ Chen
 
Perl在nginx里的应用
Perl在nginx里的应用Perl在nginx里的应用
Perl在nginx里的应用琛琳 饶
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡cachowu
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用謝 宗穎
 
Nae client(using Node.js to create shell cmd)
Nae client(using Node.js to create shell cmd)Nae client(using Node.js to create shell cmd)
Nae client(using Node.js to create shell cmd)fisher zheng
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集zhen chen
 
Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)Yiwei Ma
 
SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践lifesinger
 
Sequelize實務分享
Sequelize實務分享Sequelize實務分享
Sequelize實務分享Macy Kung
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具國昭 張
 
Class 20170126
Class 20170126Class 20170126
Class 20170126Ivan Wei
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)Kejun Zhang
 
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 Continuous Delivery Workshop with Ansible x GitLab CI (5th) Continuous Delivery Workshop with Ansible x GitLab CI (5th)
Continuous Delivery Workshop with Ansible x GitLab CI (5th)Chu-Siang Lai
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染Ailsa126
 
深入淺出 autocomplete
深入淺出 autocomplete深入淺出 autocomplete
深入淺出 autocompleteMu Chun Wang
 

Ähnlich wie 北護樂學程式冬令營 2017 (20)

快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架
 
開發流程與工具介紹
開發流程與工具介紹開發流程與工具介紹
開發流程與工具介紹
 
这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit
 
玩轉 .NET Interactive Notebooks 一次就上手
玩轉 .NET Interactive Notebooks 一次就上手玩轉 .NET Interactive Notebooks 一次就上手
玩轉 .NET Interactive Notebooks 一次就上手
 
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuRuby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for Ubuntu
 
Perl在nginx里的应用
Perl在nginx里的应用Perl在nginx里的应用
Perl在nginx里的应用
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
 
Django step0
Django step0Django step0
Django step0
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用
 
Nae client(using Node.js to create shell cmd)
Nae client(using Node.js to create shell cmd)Nae client(using Node.js to create shell cmd)
Nae client(using Node.js to create shell cmd)
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集
 
Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)Nagios的安装部署和与cacti的整合(linuxtone)
Nagios的安装部署和与cacti的整合(linuxtone)
 
SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践
 
Sequelize實務分享
Sequelize實務分享Sequelize實務分享
Sequelize實務分享
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
 
Class 20170126
Class 20170126Class 20170126
Class 20170126
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)
 
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 Continuous Delivery Workshop with Ansible x GitLab CI (5th) Continuous Delivery Workshop with Ansible x GitLab CI (5th)
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染
 
深入淺出 autocomplete
深入淺出 autocomplete深入淺出 autocomplete
深入淺出 autocomplete
 

北護樂學程式冬令營 2017