node筆記
- node不是語言 苞俘、不是框架。node是一個javascript運行時的環(huán)境
fs 文件模塊
讀文件
fs.readFile(dir_name,fn)
readFile接受兩個參數(shù) 第一個是error對象龄章,第二個是返回的數(shù)據(jù)吃谣,需要注意的是返回的數(shù)據(jù)是Buffer 需要調(diào)用的對象的toString()方法進行解碼以顯示正確的內(nèi)容
const fs = require('fs')
fs.readFile('./package.json',(err,res)=>{
if(!err){
console.log('讀取成功\n',res.toString())
}else{
console.log('讀取出錯',err)
}
})
寫文件
fs.writeFile(dir_name,content,fn)
writeFile接受3個參數(shù) 第一個是要寫入的文件的路徑乞封,第二個是要寫入的內(nèi)容,第三個回調(diào)函數(shù)接受一個error 形參
const fs = require('fs')
fs.writeFile('./write.js','console.log("這是我要寫入的一段代碼")',err=>{
if(!err){
console.log('寫入成功')
}else{
console.log('寫入失敗岗憋,錯誤原因:\n',err)
}
})
Http模塊
node內(nèi)置模塊用來創(chuàng)建http服務(wù)器和客戶端進行交互
最簡單的原生node http服務(wù)器
const http = require('http')
const service = http.createServer();
service.on('request',()=>{
console.log('監(jiān)聽到了')
})
service.listen(3000,()=>{
console.log('服務(wù)器開啟成功')
})
- 最簡單的可以響應(yīng)客戶端的服務(wù)器肃晚,其中監(jiān)聽 requerst請求的回調(diào)函數(shù),返回兩個參數(shù)第一個參數(shù)是處理客戶端的請求仔戈,可以拿到客戶端請求的各種信息关串,第二個參數(shù)是處理服務(wù)端的返回,總而言之就是一個是客戶端一個是服務(wù)端监徘。需要注意的是如果返回內(nèi)容中有中文字節(jié)晋修,需要指定返回的編碼格式 這里指定的utf-8.
const http = require('http')
const service = http.createServer()
service.on('request',(req,res)=>{
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
res.write('hello')
res.write('白加闖')
res.end()
}).listen(3000,()=>{console.log('服務(wù)器啟動成功')})
- 最簡單的返回接口數(shù)據(jù)的服務(wù)器,需要注意的是服務(wù)器返回的數(shù)據(jù)只能是字符串或者二進制數(shù)據(jù)
const http = require('http')
const service = http.createServer()
service.on('request',(req,res)=>{
let url = req.url
let data;
switch(url){
case '/':
data='首頁'
break;
case '/login':
data='登錄'
break;
case '/product':
let obj = [
{id:0,name:'大白',age:18},
{id:1,name:'老白',age:40},
{id:2,name:'中白',age:30},
{id:3,name:'小白',age:20},
{id:4,name:'小鮮肉',age:19}
]
data = JSON.stringify(obj)
break;
default:
data = '404 Not Found'
}
res.end(data)
}).listen(3000,()=>{console.log('服務(wù)器啟動成功')})
-
http服務(wù)器返回圖片資源和html文件資源
圖片資源 需要用到fs模塊readFile接口讀取圖片數(shù)據(jù) 然后直接把數(shù)據(jù)返回客戶端-需要設(shè)置請求頭為content-type:'text/html;charset=utf-8'
html文件 需要用到fs模塊readFile接口讀取文件數(shù)據(jù) 然后直接把數(shù)據(jù)返回客戶端-需要設(shè)置請求頭為content-type:'image/jpeg' *注意:蹄片類型不用加字符編碼凰盔,只有字符類型才需要加
const http = require('http') const fs = require('fs') const service = http.createServer() service.on('request',(req,res)=>{ const url = req.url switch(url){ case '/': fs.readFile('./view/index.html',(err,data)=>{ if(!err){ // 需要設(shè)置請求頭為content-type:'text/html;charset=utf-8' res.setHeader('content-type','text/html;charset=utf-8') res.end(data) }else{ res.end('404 Not Fount') } }) break; case '/logo': fs.readFile('./assets/logo.png',(err,data)=>{ if(!err){ // 需要設(shè)置請求頭為content-type:'image/jpeg' res.setHeader('content-type','image/jpeg') res.end(data) }else{ res.end('404 Not Fount') } }) break; default: res.end('404 Not Fount') } }) service.listen(3000,()=>{console.log('server is runing...')})