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”)  
  
 
  
//引入http模块
 
   
//创建http服务    req---请求对象,res---响应对象
 
   
//发送http头部   http状态值200  设置内容类型 ,告诉浏览器用何种方式来解析之后的代码
 
   

            res.write("<h1>hello</h1>"); 
   
 
   
//res指定了响应头,响应体内容为node.js,用end结束。 
   
 
   

        })


//最后调用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模块 
   
 
   
// 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") 
    
 
    

             }) 
    
 
    

      })