zoukankan      html  css  js  c++  java
  • Node模块的基本使用(2018/11/06)

    node模块的引用顺序
    当require('xxx')一个模块时:
                 优先加载核心模块: 如果显示指定文件模块扩展名,则在该路径下查找该模块是否存在;
                 以路径形式加载文件模块:如果未显示指定文件模块扩展名,则在该路径下,依次查找以.js、.json、.node为扩展名的模块是否存在;
                   require(./xxx.json)引过来的是一个对象数据类型,所以可以用 变量.属性的方法来取值 console.log(a.a)

    内置http模块
    http.createServer  //方法--  该函数用来创建一个HTTP服务器,并将 requestListener 作为 request 事件的监听函数。 由于该方法属于http模块,使用前需要引入http模块 var http= require(“http”) 
    const http = require("http");//引入http模块
    var ser = http.createServer((req,res)=>{//创建http服务    req---请求对象,res---响应对象
           res.writeHead(200,{"content-type":"text/html;charset=utf8"});//发送http头部   http状态值200  设置内容类型 ,告诉浏览器用何种方式来解析之后的代码
           res.write("<h1>hello</h1>");
           res.end("<p>hi</p>")//res指定了响应头,响应体内容为node.js,用end结束
       })
    ser.listen(3000,()=>{//最后调用listen函数,监听3000端口。
        console.log(`listen${ser.address().port}...`)
    })

     
    前后端分离 
                   后端写json数据 然后在js中获取json数据的文件夹 接受json中的所有数据并允许跨域 将json对象转换成json字符串 监听端口号为5000的端口 把数据传到这个端口中
                   前端用ajax获取到5000端口获取数据
    1第一步为json数据
    a.json
    {
    "stus":[
       {"name":"张三",
        "age":15
       }
    ]
    }
     
    2第二步为后端封装接口
    const http = require("http");
    var stus = require("./a");
     
     
    var ser = http.createServer(function(req,res){
        res.writeHead(200,{"content-type":"application/json","Access-Control-Allow-Origin":'*'})
     
        res.end(JSON.stringify(stus));
    })
     
    ser.listen(5000,()=>{
        console.log("listen "+ser.address().port+"...");
    })
     
    3第三步为前端调取数据
    $.get({
             var temUl =$("<ul>");
             res.stus.map((item)=>{
                  temUl.append("<li>姓名:"+item.name+" 年龄:"+item.age+"</li>");
             })
             $("#box").append(temUl);
         })

     
    nodejs模块中的------fs模块
                 fs模块用于对系统文件及目录进行读写操作
     
    1.读取文件的三种方式
        ①异步读文件
     
          
      var const = require("fs");//引入fs模块
            fs.readFile("文件的路径","utf-8",(err,data)=>{// readFile的回调函数接收两个参数,err是读取文件出错时触发的错误对象,data是从文件读取的数据。
                    if(err){
                          console.log("失败")
                     }           
                          console.log(data)
    });
     
         ②同步读文件
     
                var const = require("fs");
                var content = fs . readFileSync("文件的路径","utf-8");
                console.log(content)
     
         ③流的方式读取文件
         
        var const = require("fs");
             var rs = fs.createReadStream("文件路径")
             var str = "";
             rs.on("data",(thunk)=>{//on是事件监听的方法
                        str+=thunk;
    })
            rs.on("end",()=>{
            console.log(str);
    })
     
     
    2.写入文件的三种方式
    ①异步写入文件
     
    var const = require("fs");
    fs.writeFile("文件路径","内容",()=>{//写入文件内容(如果文件不存在会创建一个文件),写入时会先清空文件
    console.log("写入成功")
    });
     
    ②同步写入文件
     
    var const = require("fs");
    fs.writeFileSync("文件路径","内容");
     
    ③流的方式写入文件
     
    var ws = fs.createWriteStream("文件路径");
    ws.write("内容","utf-8");
    ws.end();
    ws.on("finish",()=>{
                console.log("写入完成")
    })
    3.显示一个网页(在CMD运行后访问 localhost:3000)
    ①同步显示
     
    const http = require("http");
    const fs = require("fs");
    http.createServer((req,res)=>{
            res.writeHead(200,{"content-type":"text/html;charset=utf8"});            
            var str = fs.readFile("文件路径","utf-8",(err,data)=>{
                    if(!err){
                            res.end(data);
                }
    })
    }).listen(3000,()=>{
                console.log("listen  3000.....")
    })
     
    ②异步显示
     
    const http = require("http");
    const fs = require("fs");
    http.createServer((req,res)=>{
            res.writeHead(200,{"content-type":"text/html;charset=utf8"});        
            var str = fs.readFileSync("文件路径","utf-8");
            res.end(str)
    }).listen(3000,()=>{
                console.log("listen  3000.....")
    })
     
     
    ③流的方法显示
     
    const http = require("http");
    const fs = require("fs");
    http.createServer((req,res)=>{
            res.writeHead(200,{"content-type":"text/html;charset=utf8"});       
            fs.createReadStream("文件路径").pipe(res);  // pipe是管道
    }).listen(3000,()=>{
                console.log("listen  3000.....")
    })
     
    4.在本地拷贝一个视频(大文件的拷贝)
    fs.stat 表示文件的状态
     
    const fs = require("fs");
    var rs = fs.createReadStream("./w.wmv");//读取这个文件
    var ws = fs.createWriteStream("./wcopy.wmv");//创建一个copy文件
    var size = 0 ;//文件的总大小
    var len = 0;//当前读取的文件的大小
    fs.stat("./w.wmv",(err,info)=>{//info是信息情报
           if(!err){
                  size = info.size;//获取文件的大小
           }
           rs.on("data",(thunk)=>{
                  console.log((len/size*100).toFixed(2)+'%')//输出加载进度
                  ws.write(thunk)
           })
           rs.on("end",()=>{
                  console.log("copy over")
           })
    })
     
     
  • 相关阅读:
    基于mybatis的crud demo
    事务的隔离级别
    spring中ioc的实现
    spring中xml配置文件
    spring中AOP的实现
    mybatis框架
    基于Mapreduce的并行Dijkstra算法执行过程分析
    算法技巧:位运算 逻辑运算
    day04_09 while循环03
    day04_08 while循环02
  • 原文地址:https://www.cnblogs.com/zsrTaki/p/11510317.html
Copyright © 2011-2022 走看看