Node.js三
2020.12.20 22:06
01.新建專案目錄
新建專案目錄==>專案目錄裡有css/js/images資料夾和index.html
//先引入fs模組
const fs=require('fs');
function demo(proname){
return {
//專案名字
proName:proname,
//專案目錄裡的資料夾和檔案
prolist:[
{
name:'css',
type:'dir'
},
{
name:'images',
type:'dir'
},
{
name:'js',
type:'dir'
},
{
name:'index.html',
type:'file'
}
]
}
}
function createDemo(proName){
//先建立專案目錄
fs.mkdir(__dirname+"/"+proName,err=>{
if(err) throw err;
//迴圈遍歷
for(let i in demo().prolist){
//如果是資料夾型別就建立資料夾
if(demo().prolist[i].type=='dir'){
//路徑拼接
fs.mkdir(__dirname+"/"+proName+"/"+demo().prolist[i].name,err=>{
console.log(demo().prolist[i].name+'建立成功');
});
//如果是檔案型別就建立檔案
}else if(demo().prolist[i].type=='file'){
//html格式
let str=`<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<div>${proName}</div>
</body>
</html>`;
//新建檔案
fs.writeFile(__dirname+"/"+proName+"/"+demo().prolist[i].name,str,err=>{
console.log(demo().prolist[i].name+'建立成功');
});
}
}
});
}
createDemo('taobao');//建立名為taobao專案
注意:因為是非同步操作,一定要等待最外層目錄建立成功再迴圈=>判斷=>建立
02.http
- node不需要任何軟體,通過模組實現傳統動態網站開發
- node沒有靜態資源讀取能力
建立一個簡單的伺服器
//引入http模組
const http=require('http');
//建立伺服器
const server=http.createServer((req,res)=>{
//響應前臺的內容
res.end("\n"+'hello node');
});
//監聽埠號
server.listen('8989','192.168.3.100');
pc端:
移動端:
語法:
- 固定寫法:
.createServer((req,res)=>{});
- req request 前臺請求過來的內容
- res response 響應給前臺的內容
- (如果響應內容有中文)為了防止中文亂碼,需要設定響應頭
res.writeHead(200,{"Content-type":"text/plain;charset=utf-8"});
res.write('內容');
向客戶端(前臺)響應內容,可以存在多個,必須寫在res.end()
之前res.end('內容');
往前臺寫內容,結束本次響應(結束語句),不寫會無限請求導致頁面卡死- 一次請求必須要有
res.end()
且只能有一個res.end()
,書寫多個只會執行一個(最上面的一個) - 書寫在
res.end()
後面的內容不再執行,並且會報錯 - 監聽埠號
.listen('埠號','ip地址');
03.readfile(讀取檔案)
需求:讀取index.html檔案裡的內容
//引入http,fs,path模組
const http=require('http');
const fs=require('fs');
const path=require('path');
const server=http.createServer((req,res)=>{
//如果請求是圖示請求就返回,不請求圖示
if(req.url=='/favicon.ico'){return;}
//如果請求是index.html就讀取檔案
if(req.url=='/index.html'){
//自動拼寫路徑
fs.readFile(path.join(__dirname,'index.html'),'utf-8',(err,data)=>{
if(err) throw err;
res.end(data);
});
}else{//如果請求不是index.html就返回404
res.end('404 NOT FOUND');
}
});
server.listen('8989');//監聽8989埠
請求index.html
請求aaa.html
請求abc.html
注意點:
- node沒有讀取靜態資源能力,只能通過手動書寫程式碼實現
- path模組的join方法
path.join(路徑,路徑)
自動拼寫路徑 - req.url是請求地址,每次請求會傳送兩個請求,一個是預設請求圖示(/favicon.ico),另一個是希望請求的地址
- 如果不通過邏輯判斷,請求的地址是後臺請求的地址(實際請求地址),而不是瀏覽器搜尋欄中的地址(瀏覽器載入地址)
相關文章
- Node.js教程第三篇—— Node.js 流Node.js
- Node.js 指南(關於Node.js)Node.js
- 三大角度PK,Go語言和Node.js誰勝誰負?GoNode.js
- Node.js學習之(第三章:簡易小demo)Node.js
- 安裝 Node.js安裝 Node.jsNode.js
- 【Node.js】Node.js
- Node.jsNode.js
- Node.js 系列:構建原生 Node.js 應用Node.js
- 初識Node.js【01】Node.js是什麼?Node.js
- Learning Node.jsNode.js
- node.js一Node.js
- Node.js Event Loop 的三大常見理解誤區和正確概念辨析Node.jsOOP
- [野路子學 Node.js] Node.js,NPM,cnpm 為何物Node.jsNPM
- Node.js多程式Node.js
- Node.js Stream(流)Node.js
- Node.js之BufferNode.js
- 自學Node.JsNode.js
- Node.js快取Node.js快取
- Node.js Stream(流)Node.js
- Node.js 函式Node.js函式
- 12、Node.js 路由Node.js路由
- Node.js函式Node.js函式
- node.js相比JavaScriptNode.jsJavaScript
- node.js筆記Node.js筆記
- Node.js Express 框架Node.jsExpress框架
- Node.js包管理Node.js
- Node.js Streams(流)Node.js
- Node.js安裝Node.js
- Node.js 安全指南Node.js
- 《Node.js設計模式》歡迎來到Node.js平臺Node.js設計模式
- 大咖說*圖書分享-Node佈道師狼叔|三卷書詳解Node.jsNode.js
- 什麼是Node.jsNode.js
- node.js – 收藏集 – 掘金Node.js
- Node.js中的BufferNode.js
- Node.js的程式管理Node.js
- Node.js 葵花寶典Node.js
- Node.js 9.0.0 釋出Node.js
- 【核心模組】node.jsNode.js