node.js入门

今天学习了node.js中的几个模块以及接口处理方法

  1. http模块
//首先导入  http模块
const http = require("http")
//2.创建http服务对象
//http.createServer(回调函数)
const app = http.createServer((req,res)=>{
    console.log("前端访问我了...")
    //后端需要设置响应头  后端设置的权重高
    res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"})
    
    res.write()  //接收到请求以后返回数据

    res.end() //后端需要结束响应  必须要写的
})
//3.监听端口
app.listen(8000,"localhost",()=>{
    console.log("server in running....")
})
  1. fs 模块
let fs = require("fs") //引入了系统模块fs (进行文件相关操作)
//异步文件读取
fs.readFile("./html/index.html","utf-8",(err,data)=>{
   console.log("err",err)    //如果文件读取成功,err就是null
    console.log("data",data)  //data就是读取后的文件内容
 })
 //同步文件读取
let data = fs.readFileSync("./html/index.html")
console.log("data",data)  

//后续发现文件如果报错了,后续的代码都不会去执行了!
//通过try-catch-finally语句块,使得后续代码正常执行。
 try{
 	let data = fs.readFileSync("./html/indexa.html")
 	console.log("data",data)  
 }catch(e){  //e代表事件对象
    //处理错误 
     console.log("e",e)
 }
 console.log("我要成功了!")

//文件改名
fs.rename('改前','改后',err=>{})
fs.renameSync("改前","改后")
fs.renameSync("./html/index.html","./html/about.html")

//异步删除
 fs.unlinkSync('文件路径')
 fs.unlinkSync("./html/about.html")  

//同步删除
fs.unlink("./html/about.html")
   //  *需注意以上两种删除方法只能删除单文件。不能删除文件夹

//删除文件夹的方法
fs.rmdir("./html",err=>{
    console.log("html目录以及被删除了哦....")    
})
  1. url模块
//导入url模块
let url = require("url")
//把url字符串转成Url对象
let str = "http://www.baidu.com/app/html/index.html?a=1&b=2"
let obj = url.parse(str,true)   //  {a:"1",b="2"}

//url.format()  能把obj转换回  地址字符串
url.format(obj)   // http://www.baidu.com/app/html/index.html?a=1&b=2
  1. querystring模块
//导入querystring模块
let querystring = require("querystring")

let str = "a=1&b=2&c=3"
//str => obj
// console.log(querystring.parse(str))

//obj => str
//console.log(querystring.stringify({a:1,b:2}))
  1. 接口处理
//1.引入相应的原生模块、依赖
let http = require("http")
let fs = require("fs")
let url = require("url")
let querystring = require("querystring")

//2.实例化http对象(服务器对象)
let app = http.createServer((req,res)=>{
    //排除 /favicon.ico的请求
    if(req.url.indexOf("/favicon.ico") === -1){
        //需要判断要读取的是动态资源(接口api)还是静态资源
        if(req.url.indexOf("/api") !== -1){ //处理接口
            //处理地址栏的数据
            let urlObj = url.parse(req.url,true)
            console.log(urlObj.query)
            //非地址栏的数据
            let noAddressData = ""     //存放非地址栏的数据
            req.on("data",chunk=>{     //chunk代表抓取的一片数据,data事件内部会频繁的触发
                noAddressData += chunk
            })
            req.on("end",()=>{         //数据已经全部接受完毕
                console.log("非地址栏的数据:",querystring.parse(noAddressData))
            })
        }else{ //处理静态资源 /index.html
            try {
                let path = req.url === "/" ? "/index.html" : req.url;
                let html = fs.readFileSync("./www"+path)
                //直接将html结果返回给浏览器
                res.write(html)    
            } catch (error) {
                let html = fs.readFileSync("./www/nopage.html")
                res.write(html)    
            }
        }
    }
    res.end() 
})

//监听服务器
app.listen(8080)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值