node.js 核心http模塊,起一個服務(wù)器,返回一個頁面的實(shí)例
如下所示:
let http=require("http"); //引入核心http模塊
let fs=require("fs");
let mime={
'.js':'application/javascript',
'.css':'text/css'
}
//創(chuàng)建一個函數(shù),req代表客戶端,res代表服務(wù)器可寫流
let listener=(req,res)=>{
//res是可寫流,有write和end
if(req.url==="/"){
//設(shè)置編碼
res.setHeader('Content-Type','text/html;charset=utf-8');
fs.createReadStream('index.html').pipe(res);
}else{
if(fs.existsSync(`.${req.url}`)) {
res.setHeader('Content-Type',mime[req.url.match(/\.\w+$/)[0]] +';charset=utf-8');
fs.createReadStream(`.${req.url}`).pipe(res);
}else{
res.statusCode=404;
res.end();
}
}
}
let port=8080;
//創(chuàng)建一個服務(wù),放入一個監(jiān)聽函數(shù),
let server=http.createServer(listener);
//
server.listen(port,function () {
//啟動成功后
console.log(`start${port}`);
})
看上面代碼,我們需要先創(chuàng)建三個文件
index.html
index.css
index.js
html文件里面,我們要引進(jìn)css和js文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!--服務(wù)端引用路徑不支持相對路徑--> <link rel="stylesheet" href="index.css" rel="external nofollow" > <script src="index.js"></script> </head> <body> <div>你好,帥嗎</div> </body> </html>
我們運(yùn)行上面js文件時候,就會創(chuàng)建一個靜態(tài)服務(wù)器,端口8080
然后返回客戶端一個index.html文件
瀏覽器渲染這個html文件,我們對應(yīng)的css和js就加載進(jìn)去了
其實(shí)上面寫法不是很簡便,node里面有模塊解決路徑獲取后綴名的問題,還有路徑問題
let http=require("http"); //引入核心http模塊
let fs=require("fs");
let mime=require("mime"); //解決文件類型
let url=require("url");
//創(chuàng)建一個函數(shù),req代表客戶端,res代表服務(wù)器可寫流
let listener=(req,res)=>{
//res是可寫流,有write和end
let {query,pathname}=url.parse(req.url,true);
if(pathname==="/"){
//設(shè)置編碼
res.setHeader('Content-Type','text/html;charset=utf-8');
fs.createReadStream('index.html').pipe(res);
}else{
if(fs.existsSync(`.${pathname}`)) {
//mime 第三方包 npm install mime --save
//mime.lookup可以通過文件路徑后綴判斷是什么類型的
res.setHeader('Content-Type', mime.lookup(pathname)+';charset=utf-8');
fs.createReadStream(`.${pathname}`).pipe(res);
}else{
res.statusCode=404;
res.end();
}
}
}
let port=8080;
//創(chuàng)建一個服務(wù),放入一個監(jiān)聽函數(shù),
let server=http.createServer(listener);
//
server.listen(port,function () {
//啟動成功后
console.log(`start${port}`);
})
以上這篇node.js 核心http模塊,起一個服務(wù)器,返回一個頁面的實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Node.js使用http模塊實(shí)現(xiàn)后臺服務(wù)器流程解析
- Node.js?搭建后端服務(wù)器內(nèi)置模塊(?http+url+querystring?的使用)
- Node.js基礎(chǔ)入門之path模塊,url模塊,http模塊使用詳解
- 基于Node.js的http模塊搭建HTTP服務(wù)器
- node.js使用http模塊創(chuàng)建服務(wù)器和客戶端完整示例
- Node.js進(jìn)階之核心模塊https入門
- node.js中http模塊和url模塊的簡單介紹
- Node.js中Request模塊處理HTTP協(xié)議請求的基本使用教程
- Node.js 中 http 模塊的深度剖析與實(shí)戰(zhàn)應(yīng)用小結(jié)
相關(guān)文章
Vue+Node服務(wù)器查詢Mongo數(shù)據(jù)庫及頁面數(shù)據(jù)傳遞操作實(shí)例分析
這篇文章主要介紹了Vue+Node服務(wù)器查詢Mongo數(shù)據(jù)庫及頁面數(shù)據(jù)傳遞操作,結(jié)合實(shí)例形式分析了node.js查詢MongoDB數(shù)據(jù)庫及vue前臺頁面渲染等相關(guān)操作技巧,需要的朋友可以參考下2019-12-12
基于Node.js + WebSocket打造即時聊天程序嗨聊
這篇文章主要介紹了基于Node.js + WebSocket打造即時聊天程序,有興趣的可以了解一下。2016-11-11
nodejs使用PassThrough流進(jìn)行數(shù)據(jù)傳遞合并示例詳解
這篇文章主要為大家介紹了nodejs使用PassThrough流進(jìn)行數(shù)據(jù)傳遞合并示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
NestJS核心概念之Middleware中間件創(chuàng)建使用示例
這篇文章主要為大家介紹了NestJS核心概念之Middleware中間件創(chuàng)建使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
nodejs實(shí)現(xiàn)遍歷文件夾并統(tǒng)計文件大小
這篇文章主要介紹了nodejs實(shí)現(xiàn)遍歷文件夾并統(tǒng)計文件大小,下面使用nodejs的遍歷文件夾文件內(nèi)容,并且讀取所有的文件,并采取排序往大到小的順序進(jìn)行輸出,需要的朋友可以參考下2015-05-05

