node.js基本

node.js基础写法

如下代码:

require为引入模块指令  有了模块才具有某些功能

http:createServer为创建网页服务器 回调函数参数 req 与 res  :

req:前端回传后端的信息   

res:后端发送前端的数据

req.url是网址信息  可以用parse(req.url)把网址信息拆分成pathname querystring hash等部分变成数组

通过parse(req.url).pathname获取路径名

通过if判断用户输入的网址 如/test/home  返回相应的文件 

通过fs.readFile读取文件  fs.readFile(("路径"),(err,data)={})   第一个参数为返回目标文件的路径,第二个参数为回调函数 他的参数分别是err,data  err为读取不到文件时返回的  data为读取到的文件 

res.end()表示后端最后一次返回给前端的数据 可以写data

res.setHeader()表示判断文件类型  把data转换成第二个参数的类型发送前端

app.listen(8081) 表示端口号

var http=require("http")
var fs=require("fs")
var app=http.createServer((req,res)=>{
	console.log(req.url)
	//前端的每一次网络请求 这个函数都会重新运行一次
	if(req.url=="/test/home"){
		fs.readFile("./index.html",(err,data)=>{
			//MIME
			res.setHeader("content-Type","text/html;charset=utf8")
			res.end(data)
		})
	}
	else if(req.url=="/123"){
		//MIME
		res.setHeader("content-Type","text/html;charset=utf8")
		res.end("123")
	}
	else if(req.url=="/src/18.jpg"){
		console.log("访问图片")
		//MIME	
		fs.readFile("./src/18.jpg",(err,data)=>{
			res.setHeader("content-Type","image/png")//content-Type 告诉浏览器发送的数据类型 以什么形式解析
			console.log(err,data)
			res.end(data)
		})
	}
	else{
		res.end("404")
	}
})
app.listen(8081)

node .js静态托管进阶写法:

如下代码:

在引入了相应模块,启用了网址服务器后:

只需要获取req.url的pathname值

__dirname表示当前文件所在的项目文件

let path=__dirname+"要返回的文件所在的项目文件"+pathname表示  传给用户的文件

用户只需要输入目标文件的名字就能找到这个文件fs.readFile(path,(err,data)

也可以用if 判断用户输入的网址返回各种情况

var url=require("url")
var querystring=require("querystring")
var http=require("http")
var fs=require("fs")
var mime=require("mime")

var app=http.createServer((req,res)=>{
    let urlobj=url.parse(req.url)//网址拆分pathname query 这里只有pathname
    console.log(urlobj);
    let pathname=urlobj.pathname//提取pathname 也就是/qqmusic.html
    
    if(pathname=="/"){pathname="/qqmusic.html"}//如果端口后面没写 就默认pathname等于主页
    let path=__dirname+"/req.url"+pathname
    fs.readFile(path,(err,data)=>{
        if(!err){
            let type1=mime.getType(path)//获取文件类型
            // console.log(type1);
            res.setHeader("content-Type",type1)//设置转换文件类型
            res.end(data)
        }
        else if(pathname=="/login"){
            let queryobj=querystring.parse(urlobj.query)//取出网址中的query
            console.log(queryobj);
            // 把前端传过来的数据 去处理
                res.end("hello")
        }
        else{
           res.end("yang zheng yu  nig")
        }
    })
})
app.listen(8888)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值