node.js基础了解

简介:

node.js的特点

单线程:只有一个线程执行任务

非堵塞I/O:在I/O耗时操作时,线程不堵塞

事件驱动:使用事件驱动程序往下继续运行

node,js模块化

规范:遵循common.js规范

    加载模块的时候同步。当遇到require() 语句时,会停下来等加载完成然后继续往下执行。

    暴露模块的时候推荐通过exports.xx = 或 module.exports.xx = 或 module.exports = 向外暴露。

在node,js中,每一个JS文件就是一个模块

在node,js中,分为内置核心模块 和 自定义模块(或者第三方模块)

内置核心模块:

    这些模块是node,js自带的,比如http url querystring fs(FileSystem)

    引入方式:直接调用名称引入



  
  

   
   

    
    

     
     

    
    

    
    

     
     
      var http = require("http");
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      var url = require("url");
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      var fs = require("fs");
     
     

    
    

  
  
AI 代码解读

自定义模块(或者第三方模块):

    引入方式:使用“./”开头 加上 名称



  
  

   
   

    
    

     
     

    
    

    
    

     
     
      //在A.js文件中
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      var b = require("./B"); 
     
     

    
    

  
  
AI 代码解读

注意:

但是假如自定义模块(或者第三方模块)放在node_modules目录下,放进去的模块就跟内置核心模块一样的引入方式



  
  

   
   

    
    

     
     

    
    

    
    

     
     
      //在A.js文件中
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      //因为B.js文件放在了node_modules目录下,可以直接使用名称引入
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      var b = require("B"); 
     
     

    
    

  
  
AI 代码解读

这种方式引入,看上去像是引入了核心模块 其实只是一种假象 moduleA并不是变成了核心模块 只是引入方式一样了。

var moduleA = require("moduleA");

当同一级目录中有node_modules文件夹时,并且里面有moduleA模块 并且上一级目录中有node_modules文件夹,里面也有moduleA模块时,会引用同级目录下的node_modules文件夹中的模块

当同级有node_modules文件夹但是没有moduleA模块, 但是上级有node_modules文件夹也有moduleA模块,此时会使用上级的moduleA模块



  
  

   
   

    
    

     
     

    
    

    
    

     
     
      // 注意!!!! 这种方式引入,看上去像是引入了核心模块 其实只是一种假象 moduleA并不是变成了核心模块 只是引入方式一样了。
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      var moduleA = require("moduleA");
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      // 当同一级目录中有node_modules文件夹时,并且里面有moduleA模块 并且上一级目录中有node_modules文件夹,里面也有moduleA模块时
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      // 此时,会引用同级目录下的node_modules文件夹中的模块
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      // 当同级有node_modules文件夹但是没有moduleA模块, 但是上级有node_modules文件夹也有moduleA模块,此时会使用上级的moduleA模块
     
     

    
    

  
  
AI 代码解读

模块暴露:node.js 向外暴露的方式与sea.js一样,推荐module.exports 或者exports.



  
  

   
   

    
    

     
     

    
    

    
    

     
     
      module.exports.c = c;
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      module.exports = c;
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      exports.c = c;
     
     

    
    

  
  
AI 代码解读

http模块

搭建服务器



  
  

   
   

    
    

     
     

    
    

    
    

     
     
      // 调用createServer来创建服务器
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      var server = http.createServer(function(req, res) {
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
      
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      })
     
     

    
    

  
  
AI 代码解读

    req对象:请求对象 所有的请求时浏览器附加的信息都可以从req身上获取

        req.url 请求对象中url地址的path部分(pathname + search)

    注意:url地址的组成部分


        req.method 请求对象中请求方式get 还是 post 返回值是大写

        req.connection.remoteAddress 请求对象中访问服务器的客户端的IP地址

        req.on("data", function(data_chunk){    }) 在处理post请求时,请求数据时

        req.on("end", function(){    }) 在处理post请求时,请求数据完毕时

    res对象:响应对象 决定返回结果给前端由res决定

        res.setHeader( ) 设置响应对象的响应头

        res.end(data) 该方法决定返回内容并挂断连接

        注意:这里的data必须是buffer类型或者字符串类型  buffer类型调用toString()方法

        res.write(data) 该方法决定返回内容但是不挂断连接

        res.status 决定响应状态

监听服务器

    第一个参数:端口号

    第二个参数:IP地址



  
  

   
   

    
    

     
     

    
    

    
    

     
     
      // 将当前服务绑定到某个端口
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      server.listen(3000, "192.168.2.187");
     
     

    
    

  
  
AI 代码解读


  
  

   
   

    
    

     
     

    
    

    
    

     
     
      // HTTP模块用于搭建服务器
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      var http = require("http");
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      // console.log(http);
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
      
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      // 调用createServer来创建服务器
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      var server = http.createServer(function(req, res) {
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      	// req: request 前端请求对象  所有的请求时浏览器附加的信息都可以从req身上获取
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      	// res: response 后端响应对象  决定返回什么东西给前端由res决定
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      	// 当前函数在每一次前端有请求到达服务器的时候会调用
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      	// console.log(req.url);  // 请求url中path部分
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      	// console.log(req.method); // 请求类型
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      	console.log(req.connection.remoteAddress);
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      })
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      // console.log(server);
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
      
     
     

    
    


   
   

    
    

     
     

    
    

    
    

     
     
      // 将当前服务绑定到
     
     

    
    

  
  
AI 代码解读
相关文章
node编译TS时,tsconfig.json中的基础配置 与 webpack编译TS时webpack.config.js中的基础配置
node编译TS时,tsconfig.json中的基础配置 与 webpack编译TS时webpack.config.js中的基础配置
开启前端全栈之路—— node 基础
能够和后端程序员更加紧密的配合。 网站业务逻辑前置,学习前端技术需要后端技术支撑(Ajax)。 扩展知识视野,能够站在更高的角度审视整个项目。
154 0
开启前端全栈之路—— node 基础
【node.js从入门到精通】使用node.js写入读取文件内容,基础方法使用
【node.js从入门到精通】使用node.js写入读取文件内容,基础方法使用
231 0
【node.js从入门到精通】使用node.js写入读取文件内容,基础方法使用

热门文章

最新文章