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")
       })
})
 
 
posted @ 2019-09-12 09:54  zsrTaki  阅读(234)  评论(0编辑  收藏  举报