這篇文章帶給大家的內容是關於nodejs搭建web伺服器的小白做法,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
nodejs建立簡單的web伺服器
1.1簡介
Node.js是基於Chrome JavaScript執行時間建立的平台,實際上它是對Google Chrome V8引擎進行了封裝,它主要用於創建快速的、可擴展的網路應用。
也就是說,瀏覽器的Javascript是瀏覽器js程式碼解析,而Node.js則是伺服器端JS的程式碼解析器,存於伺服器端的JS程式碼由Node.js來解析和應用。
註:雖然從某種意義上講Nodejs和js 是同一種產物,寫法用法不盡相同,但是重點來了,nodejs在作用域服務端,js只是作用域瀏覽器端,js可以指向瀏覽器,nodejs指向不了瀏覽器,所以有些api是不同的。
同理:js為弱型別語言,那麼nodejs也是弱型別語言在語言演算法上有事會有偏差,如果開發銀行系統,支付系統不要用nodejs。 (nodejs 適合IO密集型應用,不適合CPU密集型應用。)
1.2node模組類型
模組類型有:
#1)官方提供的原生模組
global、util、querystring、url、buffer、fs、http、
2)第三方模組
mysql、oracle、express
3)自訂模組
檔案模組和目錄模組
1)querystring模組用來處理 http請求url中的查詢字串
var obj=qs.parse(str); 把查詢字串解析為js物件
var str=qs.parse(obj); 把js物件轉換為查詢字串
2)url 模組用於解析一個http請求位址,取得其中各個不同的部分
var obj = url.parse(str) 把一個url字串解析為一個對象
var obj = url.parse(str,true) 把一個url字串解析為一個對象,並把其中的查詢字串也解析為物件
3)buffer 緩衝區,本質是一塊記憶體區域,用於暫存以後要用到的資料(可能是數字,字串,二進位圖片、音視頻等) ,
該區域就成為「快取」。 ******全域物件無需require引用******
//创建一个大小为10字节的缓冲区 var buf1 = Buffer.alloc(10); //alloc:分配 console.log(buf1); var buf2 = Buffer.alloc(1024*3); //alloc:分配3kb大小的缓冲区 console.log(buf2); var buf3=Buffer.from(['a','b','c']); console.log(buf3); //使用一个字符串创建一个缓冲区 var buf4=Buffer.from('abcd'); console.log(buf4); var buf5=Buffer.from('一二三文'); console.log(buf5); //把缓冲区的内容转换为字符串 console.log(buf5.toString());
# 4) fs 檔案系統模組
fs模組提供了對檔案系統中的檔案/目錄進行增刪改查、讀寫的功能。
//同步读取文件中的内容 var data=fs.readFileSync(file); //同步向文件中写出内容(删除已有内容) fs.writeFileSync(file,str/buf); //同步向文件中追加写出内容(不删除已有内容) fs.appendFileSync(file,str.buf) 例如fs异步读写文件 不需要等待直接往下走 //异步读取文件中的内容 fs.readFile(file,funcgtion(err,data){ }); //异步向文件中写出内容(删除已有内容) fs.writeFile(file,str/buf,function(){ }); //异步向文件中追加写出内容(不删除已有内容) fs.appendFile(file,str.buf,function(){ });
5)http 模組可用於編寫基於http協定的客戶端程式(即瀏覽器);
也可以編寫基於http協定的伺服器端程式(即web伺服器)
用http模組編寫web伺服器:var server=http.createServer();
1)接收客戶端的http請求訊息
2)解析客戶端請求訊息
3)讀取客戶端請求的檔案。
4)向客戶端發送http回應訊息,主體就是客戶端請求的檔案
1.4如何搭建一個web伺服器
講了上述內容,我們接下來可以講一下如何用nodejs搭建一個小型的web伺服器啦! (細看下面程式碼和註解哦!)
const http=require('http'); const url=require('url'); const fs=require('fs'); //引用模块前面讲过啦每个模块都是干嘛的 //创建一个http服务器 var server=http.createServer(); //让http服务器监听指定的端口 server.listen(80); //当客户端请求到来时,处理请求消息 server.on('request',function(req,res){ //处理消息 req请求消息,res响应消息 console.log('nodejs服务器接收到一个请求'); //解析客户端发来的请求消息 console.log('请求地址'+req.url); var objURL=url.parse(req.url); /*console.log(objURL);*/ res.setHeader('Content-Type','text/html;charset=utf-8'); var path = objURL.pathname; if(path==='/login'){ /*res.write('<h1>欢迎访问登录页面</h1>');*/ fs.readFile('./public/login.html',(err,data)=>{ if(err){ res.write('<h1>报错了</h1>'); }else{ res.statusCode=200; res.write(data); res.end(); } }); }else if(path==='/index'){ fs.readFile('./public/index.html',(err,data)=>{ if(err)throw err;//若存在错误抛出错误,后面不执行 res.statusCode=200; res.write(data); res.end(); }); }else{ fs.readFile('./public/404.html',(err,data)=>{ if(err){ res.write('<h1>报错了</h1>'); }else{ res.statusCode=404; res.write(data); res.end(); } }); } });
本文適用初級者,如想搭建健全的web伺服器,還需要中間件更多的知識點。
以上是nodejs搭建web伺服器的小白做法的詳細內容。更多資訊請關注PHP中文網其他相關文章!