首頁  >  文章  >  web前端  >  nodejs搭建web伺服器的小白做法

nodejs搭建web伺服器的小白做法

不言
不言原創
2018-09-14 17:22:291804瀏覽

 這篇文章帶給大家的內容是關於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.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(&#39;<h1>欢迎访问登录页面</h1>&#39;);*/
        fs.readFile(&#39;./public/login.html&#39;,(err,data)=>{  
            if(err){
                res.write(&#39;<h1>报错了</h1>&#39;);
            }else{
                res.statusCode=200;
                res.write(data);
                res.end();
            }
        });
        
    }else if(path===&#39;/index&#39;){
        
        fs.readFile(&#39;./public/index.html&#39;,(err,data)=>{
            if(err)throw err;//若存在错误抛出错误,后面不执行
            res.statusCode=200;
            res.write(data);
            res.end();
            
        });
    }else{
        
        fs.readFile(&#39;./public/404.html&#39;,(err,data)=>{
            if(err){
                res.write(&#39;<h1>报错了</h1>&#39;);
            }else{
                res.statusCode=404;
                res.write(data);
                res.end();
            }
        });
    }
});

本文適用初級者,如想搭建健全的web伺服器,還需要中間件更多的知識點。

以上是nodejs搭建web伺服器的小白做法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn