隔壁孩子10篇博客node入門而且寫了一個前後端分離項目,你怎麼還在睡覺!!!(三)

————————————————————————————————————————————————————————————
----------------- 今日份nodeJS複習 -------------------
----- 1.path路徑
----- 2.url網址
----- 3.http協議
----- 4.http模塊
----- 5.網絡服務器
————————————————————————————————————————————————————————————
————————————————

1.path路徑

1.什麼是path模塊?

path是我們nodeJS提供的一個系統模塊,主要用於格式化或者是拼接一個完整的路徑。

2.path模塊的方法

2.1 path.normalize()
  • path.normalize() 規範化地址
  • 代碼演示
//引入path模塊
const path  = require('path');

//先定義一個地址  
const p1 = "../../../path../a/./b/../c/1.html";

//p1是一個格式複雜,..和.沒有必要的地址
//使用path.normalize()規範化地址
var p2 = path.normalize(p1);
console.log(p2);


結果:(規範後的路徑)
..\..\..\path..\a\c\1.html
2.2 path.jion()
  • path.jion() 拼接路徑
  • 代碼演示
//引入path模塊
const path  = require('path');

//先定義一個地址  
const p1 = "./test/1.html";

//憑藉路徑
const p2 = path.join('code',p1);

console.log(p2);

結果:(拼接後的地址)
code\test\1.html

2.2 path中關於文件名的一些方法
  • path.dirname()返回路徑中的目錄名
  • path.basename()返回路徑中的文件名和擴展名
  • path.extname() 返回路徑中的擴展名
  • path.parse() 返回路徑中的每一個部分
  • 代碼演示
//引入path模塊
const path  = require('path');

//先定義一個地址  
const p1 = "../day03/test/1.html";

const dirname = path.dirname(p1);
const basename = path.basename(p1);
const extname = path.extname(p1);
const obj = path.parse(p1);

console.log("目錄名:" + dirname);
console.log("文件名 + 拓展名:" + basename);
console.log("拓展名:" + extname);
console.log(obj)
結果:
目錄名:../day03/test
文件名 + 拓展名:1.html
拓展名:.html
一次性拿到所有的名字
{
  root: '',
  dir: '../day03/test',
  base: '1.html',
  ext: '.html',
  name: '1'
}

2.url模塊(*)

2.1 什麼是URL?

url是全球統一資源定位符,對網站資源的一種簡介表達形式,也稱爲網址。

2.2 URL的組成?

  • 完整結構

      協議 : //  用戶名 :密碼 @ 主機名.名.域:端口號/目錄名/文件名.擴展名?參數名=參數值&參數名2=參數值2 # hash地址
    
  • 舉個例子

      https://music.163.com/#/search/m/?friend=&s=123&type=1
    

3.http協議(*)

3.1 什麼是網絡?

  • 網絡是一個共享,傳播信息的虛擬平臺。

3.2 什麼是網絡協議?

  • 每天有大量的數據在網絡上傳輸,都需要遵守相應的協議,規則就是網絡協議。

3.3 什麼是http協議?

  • http(hypertext transfer protocol)文本傳輸協議,傳輸超文本內容,圖片,音頻,視頻等。
  • http 規定了數據在服務器與瀏覽器之間傳輸的格式和方式。

3.4 http協議細節?

  • 依次請求對應依次應答(響應)。
  • 定義了瀏覽器以什麼格式向服務器發送請求。
  • 定有了服務器以什麼格式解析瀏覽器發送過來的數據。
  • 定義了服務器以什麼格式響應數據給瀏覽器。
  • 定義了瀏覽器以什麼格式解析服務器響應的數據。

3.5 軟件開發模式?

  • 單機模式:
    打開電腦就可以使用,Hbuilder, Wps, Office,畫圖等
  • C/S模式(Client/Server)客戶端和服務端
    需要下載安裝以後才能連接網絡使用,迅雷,QQ,微信等
  • B/S模式(Brower/Server)瀏覽器與服務端
    打開瀏覽器就可以使用,不需要安裝, 百度,淘寶,京東等

4.http模塊

4.1http.get()方法?

  • get方法用於模仿客戶端從服務器獲取數據。
  • 代碼示例:
http.get('url',function(res){
	//res 返回的res,接受服務器響應的所有內容
})
const http = require('http');

//get方式請求
http.get('http://baidu.com',res => {
    console.log(res);
})

5.網絡服務器

5.1 服務器入門

  • 搭建一個簡單的node服務器
/**
 * node.js服務器
 * 1.引入通信模塊
 * 2.創建服務器
 * 3.監聽request事件
 * 4.監聽端口
 */

 const http = require('http');

 //創建服務器
 const server = http.createServer();

 //監聽request的請求時間
 server.on('request',(req, res) => {
    //  req 請求對象  包含客戶端請求的數據  請求頭和請求體
    //  res 響應對象  包含了所有服務器端發送給客戶端的數據,響應頭和響應體
    res.setHeader('Content-Type','text/html;charset=utf-8');
    res.write('<h1> Hello Node.js</h1>');
    res.write('<p>今天禮拜五</p>');
    res.end();
 });

 //監聽端口
 server.listen(88,() => {
     console.log('Server is running on 80......');
 })

5.2 根據不同的請求返回不同的數據

/**
 * 根據不同的請求,返回不同的數據
 * 根據用戶請求的url不同,判斷響應不同的數據,實現訪問不同的url返回不同的結果
 * 核心:通過req.url   獲取到用戶請求的網址進行判斷
 */

const http = require('http');

//創建服務器
const server = http.createServer();

//監聽request的請求時間
server.on('request', (req, res) => {
    //  req 請求對象  包含客戶端請求的數據  請求頭和請求體
    //  res 響應對象  包含了所有服務器端發送給客戶端的數據,響應頭和響應體

    res.setHeader('Content-Type', 'text/html;charset=utf-8');
    if (req.url === '/') {
        res.write('<p>這是首頁</p>')
    }

    if (req.url === '/article.html') {
        res.write('<p>文章列表</p>')
    }

    if (req.url === '/about.html') {
        res.write('<p>個人簡介</p>')
    }
    res.end();
});

//監聽端口
server.listen(88, () => {
    console.log('Server is running on 88......');
})

5.3 http的狀態碼

1.什麼是狀態碼?

http協議規定的服務器響應數據時的狀態編碼,就是狀態碼。

2.常用的狀態碼
  • 1xx:表示普通消息,沒有特殊含義
  • 2xx:表示服務器相應成功
    + 200 成功
  • 3xx:表示重定向
    + 301 永久重定向
    + 302 零時重定向
    + 304 使用緩存(服務器數據沒有更新時)
  • 4xx: 無法範圍跟
    + 403 權限不足,無法訪問
    + 404 找不到
  • 5xx:服務器報錯
    + 500 服務器代碼出錯
    + 502 網關錯誤
    + 501 服務已經奔潰

5.4 MIME類型

5.4.1 什麼是MIME類型?

MIME類型可以認爲是文件類型的表述。

5.4.2 常用的MIME類型
  • .html text/html
  • .css text/css
  • .js text/javascript
  • .png image/png
  • .mp3 audio/mpeg
  • .xml text/xml
  • .zip application/x-gzip
  • .pdf application/pdf
  • 代碼演示
//生成一個html文件
res.writeHead(200,{"Content-Type":"text/html ; charset=utf-8"});

6.接受get方式和post方式的傳值

  • 接收get方式的傳值:

nodeJS 獲取get方式的傳值

1.數組方法 split 切割 獲取

1.獲取當前網址url
var url = http://www.login.com/index?name=kang&pass=kjh8619
2.存儲獲取的數據
var GET = {};     
3.利用數組方法切割url
1. var arr = url.split("?");

第一次切割
arr[0] = “http://www.login.com/index”
arr[1] = “name=kang&pass=kjh8619”

2. var arr2 = arr[1].split("&");

第二次切割
arr2[0] = “name=kang”
arr2[1] = “pass=kjh8619”

3. for(var i = 0; i < arr2.length; i++){
    var arr3 = arr2[i].split("=")
    GET[arr3[0]] = arr3[1];
}

第三次切割並且將獲取到的數據保存到GET中。

4.打印出數據
console.log(GET);

輸出結果爲:

E:\node\get>node array
   { name: 'kang', pass: 'kjh8619' }

2.利用querystring獲取get傳值

1.引入querystring模塊
var querystring = require("querystring");
2.獲取到網址的url
var url = "http://www.login.com/index?name=kang&pass=kjh8619";
3.切割url
var arr = url.split("?");

arr[0] = “http://www.login.com/index”
arr[1] = “name=kang&pass=kjh8619”

4.存儲數據
var json = querystring.parse(arr[1]);
5.打印數據
console.log(json);

結果:

[Running] node "e:\node\get\array.js"
 { name: 'kang', pass: 'kjh8619' }

3.利用url模塊獲取數據

1.引入url模塊
var urlLib = require("url");
2.獲取url
var url = "http://www.login.com/index?name=kang&pass=kjh8619";
3.解析url
var obj = urlLib.parse(url);
4.打印解析數據
console.log(obj);

結果:

[Running] node "e:\node\get\array.js"
Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'www.login.com',
  port: null,
  hostname: 'www.login.com',
  hash: null,
  search: '?name=kang&pass=kjh8619',
  query: 'name=kang&pass=kjh8619',
  pathname: '/index',
  path: '/index?name=kang&pass=kjh8619',
  href: 'http://www.login.com/index?name=kang&pass=kjh8619' }

url模塊解析url時,加入true參數可以同時解析qurey數據;

var urlLib = require("url");

var url = "http://www.login.com/index?name=kang&pass=kjh8619";

var obj = urlLib.parse(url,true);

console.log(obj.query);

結果:

[Running] node "e:\node\get\array.js"
[Object: null prototype] { name: 'kang', pass: 'kjh8619' }
  • 接收post方式傳值:

nodeJS 獲取post方式傳值

因爲get的數據值在地址中,大小限制爲32k,而post的數據值在內容裏面保存,所以數據量大,因此post傳值爲一段一段傳輸。

1.引入模塊
1. const http = require("http");
2. const querystring = require("querystring");
2.搭建簡易web服務器
var server = http.createServer(function(req, res){
//因爲post傳值爲一段段,所以獲取到所有的data後要串聯起來,這裏先以字符串串聯爲例子
    var str = "";
    
    req.on('data',function(data,){
        str += data;    //串聯  data 數據
    });
    
    //獲取完所有數據後執行req.on(‘end’,function(){})
    req.on('end',function(){
        var json = querystring.parse(str);
        console.log(json);
    })

})

server.listen(2021,function(){
    console.log("server is running");
})

3.form 表單做 post 提交數據
<form action="http://localhost:2022/aaa" method="POST">
    username: <input type="text" name="user"> <br>
    password: <input type="password" name="pass"> <br>
    <input type="submit" value="login">
4.結果
 { user: 'kang', pass: '123456' }

————————————————————————————————————
寫在後面

隔壁孩子10篇博客node入門而且寫了一個前後端分離項目,你怎麼還在睡覺!!!(四)

express框架學習
express項目說明
express中的路由模塊的講解
響應的一些方法
一個簡單的express項目
——————————————————————————————————
————————————————
————————————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章