zoukankan      html  css  js  c++  java
  • Node.js初探之实现能向前台返回东西的简单服务器

    nodejs

    nodejs文件就是一个简单的js文件。

    在shell中运行

    Step 1. 打开终端,进入这个js文件所在目#录
    Step 2. 用 ‘node 文件名.js’ 命令运行它即可。

    用nodejs写服务器

    后台是一直’被‘浏览器请求

    request/response 输入输出 内容
    请求 输入 请求的东西
    响应 输出 响应的内容

    实例

    用到fs(filesystem),实现一个能够向前台返回东西的简单服务器。

    const http = require('http');
    const fs = require('fs');   //fs模块用于对系统文件及目录进行读写操作
    
    var server = http.createServer(function(req,res){
        var file_name = './www'+req.url;
    
        fs.readFile(file_name,function(err,data){
            if(err){
                res.write("404");
            }else{
                res.write(data);
            }
            res.end();
        });
    
    });
    
    server.listen(8080);
    

    用到了res.write(),res.end(),fs.readFile()。
    需要注意的是,res.end()的位置,如果放在括号外面

    var server = http.createServer(function(req,res){
        var file_name = './www'+req.url;
    
        fs.readFile(file_name,function(err,data){
            if(err){
                res.write("404");
            }else{
                res.write(data);
            }
        });
        
        res.end();  //放在括号外面,运行时会导致错误
    });
    
    

    会发生错误的原因是,Node.js支持异步操作(可以同时执行多个任务)。

    上面的代码一共两个任务:一个是fs.readFile()读取文件,另一个是res.end()。读取文件的速度慢,还没读取完另一边res.end()就已经执行了(默认服务器端没有数据返回到客户端)。等fs.readFile()完事后回过头一看,天了噜,另一个哥们居然已经跑路了,而且自己也进不去做任务的房间了。
    这一点需要注意。所以最后我们把res.end()放在readFile()函数内。

  • 相关阅读:
    Count and Say leetcode
    Find Minimum in Rotated Sorted Array II leetcode
    Find Minimum in Rotated Sorted Array leetcode
    Search in Rotated Sorted Array II leetcode
    search in rotated sorted array leetcode
    Substring with Concatenation of All Words
    Subsets 子集系列问题 leetcode
    Sudoku Solver Backtracking
    Valid Sudoku leetcode
    《如何求解问题》-现代启发式方法
  • 原文地址:https://www.cnblogs.com/n2meetu/p/7797391.html
Copyright © 2011-2022 走看看