nodeJS 中使用 http 创建server

项目源代码的 GitHub 路径如下:
https://github.com/slhuang520/study/tree/master/web/nodeJS/base/http.js

项目整体目录结构如下:
在这里插入图片描述

var http = require("http");
var fs = require("fs");
var path = require("path");

http.createServer(function (req, res) {
    //console.log(req);
    //console.log(res);
    // res.write("dddddddddd"); //直接写字符串内容到页面
    // res.end();//必须调用结束处理

    /*直接将页面读取到,然后写到页面上去
    // var index = fs.readFileSync("./views/index.html", "utf8");
    // __dirname:当前项目的路径:G:\web\nodeJS\base
    // __filename:当前js文件所在的路径:G:\web\nodeJS\base\http.js
    console.log(__dirname);
    console.log(__filename);
    var index = fs.readFileSync(path.join(__dirname, "views", "index.html"), "utf8");
    res.write(index);
    res.end();
    */

    //通过路由匹配不同的页面
    var myUrl = req.url;
    console.log(myUrl);
    if (myUrl === "/favicon.ico") {
        return;
    }
    var page = myUrl === "/" ? "index.html" : myUrl;
    var p = page;
    if (!fs.existsSync(path.join(__dirname, "views", p))) { //判断页面是否存在
        p = path.join("err", "404.html");
    }
    var html = fs.readFileSync(path.join(__dirname, "views", p), "utf8");
    res.write(html);
    res.end();

}).listen("3000", /*"192.168.56.1",*/ function (err) {
    if (err) {
        console.log(err);
        console.log("开启server失败");
        return;
    }
    console.log("开启server成功,IP: 127.0.0.1,Post:3000");
});

createServer(req, res)的回调函数中,两个参数分别代表 request, response。
request 中最常用的就是url,可以取得当前请求的路由。
response 可以输出返回的页面

比如:

  • res.write(“dddddddddd”); //直接写字符串内容到页面

注意,必须调用 res.end() 方法,以结束当前的 server 访问。

也可以直接使用 fs 读取到相应的 Html 页面,然后将读取的内容直接输出到页面上:

var index = fs.readFileSync(path.join(__dirname, "views", "index.html"), "utf8");
res.write(index);
res.end();

server,listen(port, [ip], [,cb]) 参数中的IP是可以指定的,但只能指定为当前服务器的IP,指向其他的IP,外部将访问不到。
IP 若是不指定,将使用默认的 127.0.0.1

cb 回调函数中,默认返回的第一个参数,代表error对象,失败了,返回相应的error信息,成功返回null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值