nodejs基础 用http模块 搭建一个简单的web服务器 响应JSON、html

前端在开发中,大多会想浏览器获取json数据,下面来用nodejs中的http模块搭建一个返回json数据的服务器

var http = require("http");

var onRequest = function(request,response){
    console.log("request received");
    response.writeHead(200,{"Content-Type":"application/json"});//application/json:代表响应的是json
    // response.write("传回浏览器的内容");
    var jsonObj={
        name:"lili",
        job:"coder",
        age:18
    }
    response.end(JSON.stringify(jsonObj));//将json传回浏览器
}

var server = http.createServer(onRequest);

//最后让服务器监听一个端口
server.listen(3000,"127.0.0.1");//还可以加第二个参数 127.0.0.1代表的是本地

console.log("server started on localhost port 3000");//加一个服务器启动起来的提示

然后运行 node app  启动服务器

在浏览器访问localhost:3000   发现浏览器会显示 响应的json数据

 如果浏览器的json数据没有 格式化  我们需要装一个浏览器插件 JSON Formatter   安装过之后,显示的json数据就是格式化的

下面来创建一个响应html的web服务器:将Content-type的值改成text/html就行

var http = require("http");

var onRequest = function(request,response){
    console.log("request received");
    response.writeHead(200,{"Content-Type":"text/html"});//application/json:代表响应的是json
    // response.write("传回浏览器的内容");
    var htmlFile = `<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>html</title>
        <style>
            div{
                color:red;
                font-size:50px;
            }
        </style>
    </head>
    <body>
       <div>我是从服务器传回来的html页面</div> 
    </body>
    </html>`;
    response.end(htmlFile);//将json传回浏览器
}

var server = http.createServer(onRequest);

//最后让服务器监听一个端口
server.listen(3000,"127.0.0.1");//还可以加第二个参数 127.0.0.1代表的是本地

console.log("server started on localhost port 3000");//加一个服务器启动起来的提示

然后启动服务器  页面访问localhost:3000   发现会出现html页面样式什么的都有!!!

但是这样 将html代码这样写在代码中 显的太粗暴了,我们可以将html页面写在一个文件中,然后用读取流读取过来

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

var onRequest = function(request,response){
    console.log("request received");
    response.writeHead(200,{"Content-Type":"text/html"});
    // response.write("传回浏览器的内容");
    var myReadStream = fs.createReadStream(__dirname+"/index.html","utf8");//用读取流,读取其它文件内的html内容
    myReadStream.pipe(response);//将流读取到的内容写在响应中 注意这样不需要用写在response.end()中了
}

var server = http.createServer(onRequest);

//最后让服务器监听一个端口
server.listen(3000,"127.0.0.1");//还可以加第二个参数 127.0.0.1代表的是本地

console.log("server started on localhost port 3000");//加一个服务器启动起来的提示

app.js是项目的入口,如果把代码都写在其中,越写月臃肿,我们可以用模块化的思想,来整理一下我们的代码,我们可以将这个服务器相关的代码单独写在一个文件中,然后用require引入到app.js入口文件中执行:

我们创建一个server.js文件:

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

var startServer = function(){
    var onRequest = function(request,response){
        console.log("request received");
        response.writeHead(200,{"Content-Type":"text/html"});//application/json:代表响应的是json
        // response.write("传回浏览器的内容");
        var myReadStream = fs.createReadStream(__dirname+"/index.html","utf8");//用读取流,读取其它文件内的html内容
        myReadStream.pipe(response);//将流读取到的内容写在响应中 注意这样不需要用写在response.end()中了
    }

    var server = http.createServer(onRequest);

    //最后让服务器监听一个端口
    server.listen(3000,"127.0.0.1");//还可以加第二个参数 127.0.0.1代表的是本地

    console.log("server started on localhost port 3000");//加一个服务器启动起来的提示
}

module.exports.startServer=startServer;

然后在app.js中引入

var server = require("./server");

server.startServer();

这样看着app.js就干净了许多

这就是模块化的思想,也可以称为重构。。。

原文地址:https://www.cnblogs.com/fqh123/p/11256707.html