1.引入核心模塊
2.服務器監聽窗口
3.創建服務器對象
4.設置服務器監聽窗口
尋找路徑
1 // 引入核心模塊 2 const http = require('http') 3 4 // 服務器監聽窗口 5 const port =3000; 6 // const port =process.argv[2]; 7 // console.log(process.argv) 8 // 創建服務器對象 9 const serve = http.createServer((req,res)=>{ 10 let fileName=''; 11 12 if(req.url==='/'){ 13 fileName='/public/index.html' 14 }else{ 15 fileName='/public'+req.url; 16 } 17 console.log(fileName); 18 res.end(fileName) 19 }) 20 // 設置服務器監聽窗口 21 serve.listen(port,()=>{ 22 console.log(`serve runnint at http://localhost${port}`) 23 })
全局變量
以下幾個變量雖然看起來是全局的,但其實並不是,它們僅存在於模塊范圍內。
- require(),模塊作用域中的全局方法,用於導入其他模塊
- module,表示當前模塊
- exports,module.exports屬性的別名,用於導出模塊成員
- __dirname,表示當前文件所在的目錄
- __filename,表示當前文件的名稱(名稱前面具有完整的路徑)
1 // 引入核心模塊 2 const http = require('http') 3 const path = require('path') 4 // 服務器監聽窗口 5 const port =3000; 6 7 // 創建服務器對象 8 const serve = http.createServer((req,res)=>{ 9 let fileName=''; 10 11 if(req.url==='/'){ 12 fileName='/public/index.html' 13 }else{ 14 fileName='/public'+req.url; 15 } 16 // console.log(fileName); 17 // 根目錄 18 19 res.end(path.join(__dirname,fileName)) 20 // res.end(__dirname+fileName) 21 }) 22 // 設置服務器監聽窗口 23 serve.listen(port,()=>{ 24 console.log(`serve runnint at http://localhost${port}`) 25 })
讀取文件
1 // 引入核心模塊 2 const http = require('http') 3 const path = require('path') 4 const fs = require('fs') 5 // 服務器監聽窗口 6 const port =3000; 7 8 // 創建服務器對象 9 const serve = http.createServer((req,res)=>{ 10 let fileName=''; 11 12 if(req.url==='/'){ 13 fileName='/public/index.html' 14 }else{ 15 fileName='/public'+req.url; 16 } 17 // console.log(fileName); 18 // 根目錄 19 20 // res.end(path.join(__dirname,fileName)) 21 // res.end(__dirname+fileName) 22 23 24 // 讀取文件 25 fs.readFile((__dirname+fileName), 'utf8',(err,data)=>{ 26 // fs.readFile((__dirname+fileName),{encoding: 'utf8', flag: 'r'},(err,data)=>{ 27 if(err){ 28 res.statusCode=404; 29 res.statusMessage='not Found'; 30 res.setHeader('content-Type','text/html;charset=utf-8') 31 res.end('這里什么都沒有') 32 }else{ 33 res.statusCode=200; 34 res.statusMessage='ok'; 35 res.setHeader('content-Type','text/html;charset=utf-8') 36 res.end(data) 37 } 38 }) 39 }) 40 // 設置服務器監聽窗口 41 serve.listen(port,()=>{ 42 console.log(`serve runnint at http://localhost${port}`) 43 })
在package.json文件配置命令
當我們要執行的命令比較復雜時,可以將該命名配置到package.json文件中scripts字段中,並為該命令指定一個別名;
1 "scripts": { 2 "serve": "node server.js" 3 },
上面的代碼為 node server.js指定了一個別名serve,然后我們可以通過npm的子命令run去執行該命令:
npm run serve
如果命令的別為start,則執行時可以省略子命令run
1 "scripts": { 2 "start": "node server.js", 3 },
npm start