zoukankan      html  css  js  c++  java
  • 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就干净了许多

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

  • 相关阅读:
    redis基础
    Django Meta
    Django Query
    Django FileFieldManage
    Django Managers管理器
    Django 模型
    Pytables h5py
    python 高级部分
    Python和HDF 5大数据应用
    是时候放弃pipeline 模型 ?
  • 原文地址:https://www.cnblogs.com/fqh123/p/11256707.html
Copyright © 2011-2022 走看看