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