node.js中的http+https模組
http和https:
http協議:http客服端發起請求,建立埠,http伺服器在埠監聽客戶端的請求,http伺服器向埠返回狀態和內容的一個過程。
https協議:是在http協議上增加了SSL/TLS握手加密傳輸,當訪問該協議時,需要SSL證書,其他的應用與http基本一致。
無論是http還是https請求方式都是:get、post、put(更新)
一、http的事件連線:
1、所有node.js中的模組在使用前都需將其引用到所需要的指令碼內部,然後在對其操作,http也是一樣的,
var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}); if(request.url!=="/favicon.ico"){ //清除第2此訪問 console.log('訪問'); response.write('hello,world'); response.end('hell,世界');//不寫則沒有http協議尾,但寫了會產生兩次訪問 } }).listen(8000); console.log('Server running at http://127.0.0.1:8000/');
2、http.createServer,是http監聽函式方法,裡面會呼叫一個回撥函式,會有兩個引數,request(請求)、response(響應)
3、listen(埠號):此處的埠號可以隨意
4、在建立伺服器時,需要將回復給一個end協議尾,如果不加response.end()方法,瀏覽器會一直在轉圈,感覺像是在一直載入的樣子,如果加入每次訪問此伺服器時會同時訪問兩次,所以就需要再加入response.end()方法前先進行判斷request.url!=="/favicon.ico",如果不等於才繼續走下去,注意:在express等架構中已經將其封裝好,無需再判斷,使用時自行判斷
二、指令碼間的引用(require、exports、module.exports)
1、test.js指令碼中的程式碼
var http = require('http'); var test1= require("./models/test1.js"); var test2= require('./models/test2'); http.createServer(function (request, response) { response.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); if (request.url !== "/favicon.ico") { //清除第2此訪問 //-------用字串呼叫對應的函式--- funname = 'fun3'; test1[funname](response); test1['fun2'](response); //引入test2中的返回函式 test2=new Teacher(1,'李四',30); test2.enter(); test2.teach(res); res.end(''); response.end(''); } }).listen(8000); console.log('Server running at http://127.0.0.1:8000/');
2、在test指令碼的同級建一個models目錄裡面建一個test1.js指令碼,程式碼如下
// 只支援一個函式
function Teacher(id,name,age){
User.apply(this,[id,name,age]);
this.teach=function(res){
res.write(this.name+"老師講課");
}
}
module.exports = Teacher;
//使用物件的格式輸出多個函式
module.exports={
fun2:function(res){
res.write('fun二');
},
fun3:function(res){
res.write('fun三');
}
}
3、在test指令碼的同級建一個models目錄裡面建一個test2.js指令碼,程式碼如下
var User = require('./User');
function test2(id,name,age){
//應用apply繼承User所有的方法
User.apply(this,[id,name,age]);
this.teach=function(res){
res.write(this.name+"老師講課");
}
}
module.exports = test2;
4、在test指令碼的同級建一個models目錄裡面建一個Userjs指令碼,程式碼如下
function User(id,name,age){
this.id=id;
this.name=name;
this.age=age;
this.enter=function(){
console.log(name+"進入圖書館");
}
}
module.exports=User;
5、執行node test.js (如果是用vscode編譯器可直接ctrl+~快捷鍵啟動控制檯、gitbashhere啟動當前目錄下的test指令碼、或者在當前指令碼資料夾中按住shift+滑鼠右鍵也可啟動Powershell視窗進行啟動伺服器),開啟瀏覽器輸入http://localhost:8000/進行訪問此伺服器,網頁上輸出 fun二 fun三 李四老師講課