一、在js的全棧開發中服務器端依賴於node環境,因此首先須要搭建一個node環境,纔可以劍氣咱們的服務器。從官網上下載相應的安裝包以後,直接安裝便可(建議安裝穩定版本),以後更新node能夠直接使用命令行工具進行更新,可是在window系統下比較麻煩。
二、建立一個node服務器項目,先建立一個項目文件,而後在文件夾中使用npm init
去初始化咱們的項目,而後根據命令行的提示去描述咱們的項目,最後輸入 ‘yes’後會自動建立一個package.json
的文件。這一步結束以後,node的環境算是搭建完成了,能夠在官網上查看node的文檔來對node模塊加深理解。 css
一、首先在咱們的定義的服務文件server.js中導入http、url、fs模塊,
node中的http模塊是專用於建立http服務器、http客戶端,以及同時實現這些服務器端與客戶端之中全部需求進行的全部處理
二、定義一個變量來建立一個服務 var server = http.CreateServer([requestListener])
其中requestListener
是一個函數,會被自動添加到‘request’事件,用戶指定當接收到客戶端請求時所須要執行的處理,該回調函數的指定方法以下 function (request, response) { … }
在此回調函數中,使用兩個參數,第一個參數是request是http的IncomingMessage
對象,表示客戶端請求, 第二個參數是respons是http的ServerResponse
對象,表示服務端響應對象。
三、服務器所要監聽的地址及端口 server.listen(port, [host],[backlog],[call])
listen有四個參數,其中post是用於指定要監聽的端口號,是必填的,當port的參數值爲0時,將爲http服務器分配一個隨機端口號。其他三個參數爲可選參數,host用於指定須要監聽的地址,若是省略,服務器將監聽localhost,backlog是一個整數值,用於指定位於等待隊列中的客戶端鏈接的最大數量,callback是一用來指定listening事件觸發時調用的回調函數。html
var server = http.createServer(function(request, response) { console.log("服務器已打開") } server.listen(1234, iptable["WLAN:1"], function() { console.log("監聽的服務器是:" + iptable["WLAN:1"] + ":1234"); });
一、好比,咱們有一個url地址是: localhost:8080/index.html
index.html就是一個保存在咱們本機上面的一個靜態文件。
能夠先經過node的url模塊來獲取到咱們的路徑名稱裏的文件名。
一個URL字符串是一個結構化的字符串對象,它包含多個有意義的組成部分。當被解析時,會返回一個url對象,它包含每一個組成部分做爲屬性。下圖是url的對象包含的屬性 node
url中有一個parse方法,就是可以將url地址進行解析 Url.parse(url.String [, parseQuryString[, slashesDenoteHost]])
第一個參數是urlString要解析的URL字符串,parseQuryString
是一個布爾值,若是爲true會將查詢到的query返回解析成一個對象,slashesDenoteHost
也是一個布爾值,若是爲true的話則 //
以後至下一個 /
以前的字符串會被解析做爲 host
。 例如,//foo/bar
會被解析爲 {host: 'foo', pathname: '/bar'}
而不是 {pathname: '//foo/bar'}
。 默認爲 false。
這是經過本機獲取到的url對象,url中包含:express
protocal是一個協議l(http、https) host爲主機名+端口號 port爲端口的名稱 hash是哈希值 search是查詢的參數並帶有‘?’ query是查詢到的參數 pathname是請求文件的路徑及名稱 path是請求文件的路徑名稱及查詢的參數 href是一個完整的地址
可是若是解析客戶端請求的地址的時候,url是沒法徹底解析的,url只能解析一個完整的地址,還有一種能夠解析完整的url就是使用express插件。 npm
一、對於fs模塊中獲取文件地的主要方法是使用readFileSync和readFile,兩個方法都須要傳輸路徑和回調函數 fs.readFile(path[.options],callback]
異步獲取文件方法,該方法當即返回操做結果,在使用同步方法執行的操做結束以前,不能執行後續的代碼,在異步中還有一個傳遞編碼格式的可選參數。 fs.readFileSync(path, callback]
同步獲取文件方法,該方法將操做結果做爲回調函數的參數進行返回,在方法調用以後,能夠當即執行後續的代碼
而後文件有許多的後綴,如html、css、js、png等等,這些文件類型在MIME中能夠查看。json
// 經過異步方法獲取文件 fs.readFile('.'+pathname, 'utf8',function(err, data){ if(err) { response.writeHead( 404, {'Content-Type': 'text/plain'} ) console.log("require file is not find") } else{ response.writeHead( 200, {'Content-Type': suffixMIME + ';charset=utf-8'} ) response.end(data) } })
啓動node,在瀏覽器地址中輸入ip+端口+文件名,效果如圖所示 api