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()函数内。

  • 相关阅读:
    Shell脚本实现用户数据导入
    Sping Cloud 微服务框架学习
    Redis学习笔记
    HTML+CSS实现简单三级菜单
    CSS Float浮动所带来的奇怪现象
    CSS如何清除浮动流的多种方案
    ECMAScript/JS 基础知识讲解
    Python的生成器
    Python包的导入说明
    Paramiko模块简单使用
  • 原文地址:https://www.cnblogs.com/n2meetu/p/7797391.html
Copyright © 2011-2022 走看看