Nodejs 入門秘籍,搭一個最簡單的web伺服器。(菜鳥的你也能秒懂),nodejsweb
心血來潮,總結了一個Nodejs入門秘籍。看了你就想學NodeJs了。
一、簡單介紹nodejs
初學nodejs ,直接上簡單一實例。先簡單說明一下:nodejs ,nodejs相當於伺服器端的 可以輕易搭建一個伺服器端。
nodejs是用C++開發的一種運行於伺服器端的語言,可以寫網站背景程式,可以做服務端應用開發,文法和JAVASCRIPT一樣,會JS,就是會NodeJS,區別於,普通JS是指令碼運行用戶端,而NODEJS中的JS是運行於伺服器端,NODEJS的作用相當PHP,ASP等語言。
Nodejs最大的特性之一:非阻塞(事件驅動IO),這也讓nodejs的效能有不小的提升。
傳統的web server多為基於執行緒模式。你啟動Apache或者什麼server,它開始等待接受串連。當收到一個串連,server保持串連連通直到頁面或者什麼事務請求完成。如果他需要花幾微妙時間去讀取磁碟或者訪問資料庫,web server就阻塞了IO操作(這也被稱之為阻塞式IO).想提高這樣的web server的效能就只有啟動更多的server執行個體。
相反的,Node.Js使用事件驅動模型,當web server接收到請求,就把它關閉然後進行處理,然後去服務下一個web請求。當這個請求完成,它被放回處理隊列,當到達隊列開頭,這個結果被返回給使用者。這個模型非常高效可擴充性非常強,因為webserver一直接受請求而不等待任何讀寫操作。(這也被稱之為非阻塞式IO或者事件驅動IO)\
考慮下面這個過程:
1,你用瀏覽器訪問nodejs伺服器上的"/about.html"
2,nodejs伺服器接收到你的請求,調用一個函數從磁碟上讀取這個檔案。
3,這段時間,nodejs webserver在服務後續的web請求。
4,當檔案讀取完畢,有一個回呼函數被插入到nodejs的服務隊列中。
5,nodejs webserver運行這個函數,實際上就是渲染(render)了about.html頁面返回給你的瀏覽器。
好像就節省了幾微秒時間,但是這很重要!特別是對於需要相應大量使用者的web server。
下面我們來構建一個簡單一實例:
準備工作:在linux上安裝好nodejs(內建npm包管理器)。npm是nodejs的包管理器,後續需要用到的比如express,socket.io等模組都是通過npm 下載。
npm init 產生一個包管理檔案:package.json.
npm install express --save 安裝express --save 可以自動更新package.json 檔案,將express 作為項目以來添加到package.json裡面。同時npm會自動建立node_modules檔案夾,存放各種包。
Express 是一個簡潔而靈活的 node.js Web應用程式框架, 提供一系列強大特性協助你建立各種Web應用。Express架構建立在node.js內建的http模組上。
建立app.js ,用於搭建簡單的web伺服器。
$vim app.js
var express = require('express') //載入express模組
var app = express()
var port = process.env.PORT || 3000 //監聽的連接埠
app.use(express.static(__dirname + '/static'))
app.use(function (req , res){
res.sendfile('./static/index.html')
})
app.listen(port,function(){
console.log('TechNode is on port' + port + '!' )
})
將靜態檔案放在static目錄下;在static目錄下還會放index.html檔案,它將會作為整個應用的啟動頁面。除了靜態檔案的請求以外,其他所有的HTTP請求,我們都會輸出index.html檔案,服務端不關心路由,所有的路由邏輯可以都交給在瀏覽器端的Angular.js(另一神器,正在學習)去處理。
如果想查看伺服器端的請求日誌,加上下面這兩句即可,但是加之前別忘了 npm install morgan --save哦:
var logger = require('morgan')
app.use(logger('dev'));
接下來,我們隨便在static目錄下建個index.html,裡面加點內容,我們就可以在敲入 $node app.js
便可以在瀏覽器端 瀏覽 :http://伺服器Ip:3000/ 。
讓我們回顧下,整個目錄下就只由這幾部分組成:
l@ubuntu-temp:~/test27$ ls
app.js node_modules package.json static
很簡單對不對。nodejs的學習之路這就開始了!學好nodejs主要要學習他的核心架構,模組載入機制,路由處理,非同步編程機制,http架構==。