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服務器啦?。毧聪旅娲a和注釋哦?。?/p>
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服務器,還需要中間件更多的知識點。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com