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引用**php

1 //建立一個大小爲10字節的緩衝區
 2 var buf1 = Buffer.alloc(10); //alloc:分配
 3 console.log(buf1);
 4 var buf2 = Buffer.alloc(1024*3); //alloc:分配3kb大小的緩衝區
 5 console.log(buf2);
 6 var buf3=Buffer.from(['a','b','c']);
 7 console.log(buf3);
 8 //使用一個字符串建立一個緩衝區
 9 var buf4=Buffer.from('abcd');
10 console.log(buf4);
11 var buf5=Buffer.from('一二三文');
12 console.log(buf5);
13 
14 //把緩衝區的內容轉換爲字符串
15 console.log(buf5.toString());

 
                   4)fs 文件系統模塊
                              fs模塊提供了對文件系統中的文件/目錄進行增刪改查、讀寫的功能。html

1 //同步讀取文件中的內容
 2 var data=fs.readFileSync(file);
 3 //同步向文件中寫出內容(刪除已有內容)
 4 fs.writeFileSync(file,str/buf);
 5 //同步向文件中追加寫出內容(不刪除已有內容)
 6 fs.appendFileSync(file,str.buf)
 7 
 8 例如fs異步讀寫文件 不須要等待直接往下走
 9 //異步讀取文件中的內容
10 fs.readFile(file,funcgtion(err,data){
11 
12 });
13 //異步向文件中寫出內容(刪除已有內容)
14 fs.writeFile(file,str/buf,function(){
15 
16 });
17 //異步向文件中追加寫出內容(不刪除已有內容)
18 fs.appendFile(file,str.buf,function(){
19 
20 });

 
                       5)http 模塊可用於編寫基於http協議的客戶端程序(即瀏覽器);
                                         也能夠編寫基於http協議的服務器端程序(即web服務器) node

                                         用http模塊編寫web服務器:var server=http.createServer();
                                                       1)接收客戶端的http請求消息
                                                       2)解析客戶端請求消息
                                                       3)讀取客戶端請求的文件。
                                                       4)向客戶端發送http響應消息,主體就是客戶端請求的文件
 
   1.4如何搭建一個web服務器         講了上述內容,咱們接下來能夠講一下如何用nodejs搭建一個小型的web服務器啦!(細看下面代碼和註釋哦!)mysql

1 const http=require('http'); 
 2 const url=require('url');
 3 const fs=require('fs'); //引用模塊前面講過啦每一個模塊都是幹嗎的
 4 //建立一個http服務器
 5 var server=http.createServer();
 6 //讓http服務器監聽指定的端口
 7 server.listen(80);
 8 //當客戶端請求到來時,處理請求消息
 9 server.on('request',function(req,res){
10     //處理消息 req請求消息,res響應消息
11     console.log('nodejs服務器接收到一個請求');
12     //解析客戶端發來的請求消息
13     console.log('請求地址'+req.url);
14     var objURL=url.parse(req.url);
15     /*console.log(objURL);*/
16     res.setHeader('Content-Type','text/html;charset=utf-8');
17     var path = objURL.pathname;
18     if(path==='/login'){
19         
20         /*res.write('<h1>歡迎訪問登陸頁面</h1>');*/
21         fs.readFile('./public/login.html',(err,data)=>{  
22             if(err){
23                 res.write('<h1>報錯了</h1>');
24             }else{
25                 res.statusCode=200;
26                 res.write(data);
27                 res.end();
28             }
29         });
30         
31     }else if(path==='/index'){
32         
33         fs.readFile('./public/index.html',(err,data)=>{
34             if(err)throw err;//若存在錯誤拋出錯誤,後面不執行
35             res.statusCode=200;
36             res.write(data);
37             res.end();
38             
39         });
40     }else{
41         
42         fs.readFile('./public/404.html',(err,data)=>{
43             if(err){
44                 res.write('<h1>報錯了</h1>');
45             }else{
46                 res.statusCode=404;
47                 res.write(data);
48                 res.end();
49             }
50         });
51     }
52 });

 
 
本文適用初級者,如想搭建健全的web服務器,還須要中間件更多的知識點,之後博文會更新,敬請期待。
 
本文爲原創,若有不足之處請指正。web

轉載於猿2048:➸《nodejs搭建web服務器初級》算法

相關文章
相關標籤/搜索