node.js基础使用3--http搭建服务器

概括:

        node.js可以通过http模块,搭建一个小的服务器,使其他人可以访问自己的网络(局域网内)

如何搭建:

1.简单搭建一下服务器

//1、引入需要的模块
var http=require("http");
var url=require("url");
var fs=require("fs");
//2、根据提供的API创建服务器应用
var app=http.createServer();
//3、为其设置监听的端口号(80是默认的端口号,开启服务器后直接输入127.0.0.1即可访问
//其他端口号则需要在后面补充,例如:172.0.0.1:8000)
app.listen(80);

此时运行,已经可以访问,但是没有响应页面,需要添加监听事件,对其请求做出对应的响应

2.添加监听事件

app.on("request",(req,res)=>{
	//req:request  前端发来的请求,req的url属性就是前端传来的路由和请求消息,搭配url模块更容易获取信息。
	var objUrl=url.parse(req.url,true);
	var router=objUrl.pathname;
	if (router == "/" || router == "/index.html") {
        console.log("有人请求了首页");
        // 当请求首页时候,需要将首页的html文件响应出去,这就需要用到fs模块
        fs.readFile("./public/index.html", (err, buf) => {
            //res:response,响应,后端回答的才叫响应,而,这个res对象,会有一个方法叫做req.end(str/buf);可以进行响应
            // 将这个读取的这个网页响应出去
            res.end(buf)
            console.log("响应完成");
        })
    } 
})

在这个js文件里右键点击run code,或者点击小三角启动服务器(上篇文章提到过)

在浏览器对自己的服务器发起请求,看效果

输入127.0.0.1或者127.0.0.1/index.html,都可以,也可以将127.0.0.1换成自己的IP地址(cmd输入ipconfig可以查看)如果listen设置的不是80,记得在后面添加对应的端口号

页面加载中,且加载不出来

查看打印结果(没有报错,没啥问题)

 接下来添加样式文件(css,js,png,mp4,.......)的响应,让页面能完全加载出来

app.on("request",(req,res)=>{
	//req:request  前端发来的请求,req的url属性就是前端传来的路由和请求消息,搭配url模块更容易获取信息。
	var objUrl=url.parse(req.url,true);
	var router=objUrl.pathname;
	if (router == "/" || router == "/index.html") {
        console.log(router);
        console.log("有人请求了首页");
        // 当请求首页时候,需要将首页的html文件响应出去,这就需要用到fs模块
        fs.readFile("./public/index.html", (err, buf) => {
            //res:response,响应,后端回答的才叫响应,而,这个res对象,会有一个方法叫做req.end(str/buf);可以进行响应
            // 将这个读取的这个网页响应出去
            res.end(buf)
            console.log("响应完成");
        })
    } 
    //对样式文件进行判断,这里使用正则进行判断,可以判断多个文件
    //router.match,对router进行查询,如果存在,就返回对应的值,不存在就返回空
    //当路由router的值存在正则中的一种,返回不是null,则进入条件
    else if (router.match(/css|js|png|gif|jpg|woff|woff2|webp|jpeg/) != null) {
        console.log(router);
        //小技巧:每一种请求写一条响应过于麻烦,直接拼接字符串,将router拼接在后面,每次请求就响应对应的
        fs.readFile("./public" + router, (err, buf) => {
            res.end(buf)
            console.log("响应完成");
        })
    }
})

访问自己的服务器,这次加载成功

打印结果(没有报错,就是没事,为什么不是一个路由接一句响应完成,js是异步处理,快)

 此时首页已经完成了,但是页面中有许多页面跳转,每次跳转都是一次请求,需要将其他页面的请求也写入响应才算真正完成

上面我们用到了一个小技巧,对响应页面那里,用重复的路径,拼接每一次响应,这里同样可以

以下是整页代码,已经可以实现基础的访问和页面跳转了,是最简单的服务器搭建

//1、引入需要的模块
var http=require("http");
var url=require("url");
var fs=require("fs");
//2、根据提供的API创建服务器应用
var app=http.createServer();
//3、为其设置监听的端口号(80是默认的端口号,开启服务器后直接输入127.0.0.1即可访问
//其他端口号则需要在后面补充,例如:172.0.0.1:8000)
app.listen(80);
//添加监听事件,进行对应的响应
app.on("request",(req,res)=>{
	//req:request  前端发来的请求,req的url属性就是前端传来的路由和请求消息,搭配url模块更容易获取信息。
	var objUrl=url.parse(req.url,true);
	var router=objUrl.pathname;
	if (router == "/" || router == "/index.html") {
        console.log(router);
        console.log("有人请求了首页");
        // 当请求首页时候,需要将首页的html文件响应出去,这就需要用到fs模块
        fs.readFile("./public/index.html", (err, buf) => {
            //res:response,响应,后端回答的才叫响应,而,这个res对象,会有一个方法叫做req.end(str/buf);可以进行响应
            // 将这个读取的这个网页响应出去
            res.end(buf)
            console.log("响应完成");
        })
    } 
    //对样式文件进行判断,这里使用正则进行判断,可以判断多个文件
    //router.match,对router进行查询,如果存在,就返回对应的值,不存在就返回空
    //当路由router的值存在正则中的一种,返回不是null,则进入条件
    else if (router.match(/css|js|png|gif|jpg|woff|woff2|webp|jpeg/) != null) {
        console.log(router);
        //小技巧:每一种请求写一条响应过于麻烦,直接拼接字符串,将router拼接在后面,每次请求就响应对应的
        fs.readFile("./public" + router, (err, buf) => {
            res.end(buf)
            console.log("响应完成");
        })
    }
    else if (router.match(/html/) != null) {
        console.log(router);
        fs.readFile("./public" + router, (err, buf) => {
            //res:response,响应,后端回答的才叫响应,而,这个res对象,会有一个方法叫做req.end(str/buf);可以进行响应
            res.end(buf)
        })
    }
})

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值