Node.js内置模块及原生路由

本文深入探讨了Node.js中的核心模块,包括querystring模块的功能与用法,如字符串与对象的转换;http模块用于数据请求及小爬虫的实现;events模块的事件监听与触发;fs模块对文件系统的操作;stream模块的流处理方式,以及Node.js原生路由的实现。这些模块是Node.js应用开发的基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. querystring

    1. 功能:Node.js中的字符

    2. 核心方法

      • parse(将String – > Object)
        parse( str , arg1 , arg2)
        str: 你要处理的字符
        arg1: 分隔字符
        arg2:
        将 = 转化为 : , (这句话前提是 & 符号是提前被转化的)
        var str = 'http://www.baidu.com:8080/001?a=1&b=2#hash=20'
        var obj = qs.parse( str,'?','&' )
        // console.log(obj);//[Object: null prototype] { 'http://www.baidu.com:8080/001?a': '1', b: '2#hash=20' }
      
      
      • stringify(将Object -> String)
          //console.log(qs.stringify(obj))//http%3A%2F%2Fwww.baidu.com%3A8080%2F001%3Fa=1&b=2%23hash%3D20
      
      
      • escape(将中文字符编码)
        var charaStr = 'http://www.baidu.com/001?city=北京'
      
        var urlObj = url.parse( charaStr )
      
        var query = urlObj.query // city = 北京
      
        // console.log( qs.escape( query) ) //city%3D%E5%8C%97%E4%BA%AC
      
      • unescape(将中文字符解码)
      console.log( qs.unescape(  qs.escape( query) ))
      
  2. http
    核心方法

    • get
    • request
    • 小爬虫
      如何爬虫?
      使用数据请求一段内容,然后将这段内容做数据清洗,最后在通过后端服务器发送到前台页面
    1. 数据请求, 获得数据
    2. 数据清洗 ( 工具 cheerio )
    3. 安装 cheerio $ cnpm i cheerio -S
    4. 使用cheerio
    5. 发送给前台
  3. events

    var Events = require('events') 


    class MyEvents extends Events {}


    var myEvents = new MyEvents ()

    // console.log( myEvents )

    // 声明事件

    myEvents.on('aa',function(){
      console.log( 'hello Node.js' )
    })

    // 事件的触发
    myEvents.emit('aa')
  1. fs
    • fs是Node.js中文件系统
    • 功能: 操作文件或是目录
      • 文件:
        增: writeFile(路径,内容 , 错误优先的回调)
        删: unlink(路径,错误优先的回调)
        改: appendFile(路径,内容 , 错误优先的回调)(加在原始内容后面)
        查: readFile(路径,回调函数(抛错,抛错))
      var fs = require( 'fs' )
      // 文件的操作
      // 增(创建)
                
                  fs.writeFile('./dist/2.text','hello Node.js',function(error){
                    if( error ) throw error
                  })
      // 改
      
                
                      fs.appendFile('./dist/2.text','\nhello nodejs','utf8',function( error ){
                        if( error ) throw error
                        console.log( 'update success' )
                      })
      
      // 查
      
          
          fs.readFile( './dist/2.text','utf8',function( error ,data ){
            if( error ) throw error;
            console.log(data);
            console.log('read success');
          })
      
      // 删
      
          
            fs.unlink( './dist/2.text', function( error ) {
              if( error ) throw error;
              console.log( 'delete success' );
            } )
          
      
      • 目录
        增:mkdir(路径+目录名, 错误优先的回调)
        删:rmdir(路劲,错误优先的回调)(只能删除文件夹)
        改:rename(原始路径+目录名,原始路径+修改目录名, 错误优先的回调)
        查:readdir(路劲,回调函数(内容,抛错))
      var fs = require( 'fs' )

    // 目录-增

      
             fs.mkdir('./dist1',function( error ){
              if( error ) throw error
             console.log('create success');
            })




    // 目录-改
  
          fs.rename('./dist1' , './fs_dist1',function ( error ){
            if ( error ) throw error
            console.log('update success')
          })

    // 目录-查

       for(var i = 0 ;i < 10 ;i++){
          fs.writeFile( `./fs_dist1/${i}.text`,i,function( error ){
            if ( error ) throw error;
            console.log(`第${i}个文件创建成功`);
         } )
       }
        fs.readdir('./fs_dist1','utf-8',function( error ,data ){
          if( error ) throw error;
         //console.log(data)  //[ '0.text',
                                // '1.text',
                                // '2.text',
                                // '3.text',
                                // '4.text',
                                // '5.text',
                                // '6.text',
                                // '7.text',
                                // '8.text',
                                // '9.text' ]
       for( var i = 0 ; i < data.length ; i++){
         fs.readFile(`./fs_dist1/${i}.text`,'utf-8',function( error ,content ){
            if( error ) throw error;
             console.log(content)
           })
         }
       })

    // 目录-删

         //fs.rmdir(path,callback) 这个方法只能删除空目录

        
         fs.rmdir('./fs_dist',function( error ) {
           if( error ) throw error 
         })

         fs.readdir('./fs_dist1','utf-8',function( error , data ){
           if(  error ) throw error;
           for( var i = 0 ;i < data.length ; i++){
             fs.unlink(`./fs_dist1/${i}.text`,function( error ){
               if ( error ) throw error
             })
        }
       })
         fs.rmdir('./fs_dist1',function( error ){
           if( error ) throw error
       })
  1. stream

       stream 流: 减少内存消耗, 增加效率
    
           可读的流
           可写的流
    
           举例: 压缩包的创建
    
           名词: 
             pipe  --> 管道流
    
       //首先你得先建1.text文件
       //大致流程:先读取文件内容,再创建空压缩包,最后写入内容
        var fs = require( 'fs' )
    
       var  zlib = require('zlib')  // 创建压缩包
    
       var readeStream = fs.createReadStream( './dist/1.txt' )
    
       var writeStream = fs.createWriteStream( './dist/1.txt.gz' )
    
       var gzip = zlib.createGzip() // 空压缩包
    
       readeStream
         .pipe( gzip )
         .pipe( writeStream )
    
  2. Node.js原生路由

    • 路由就是页面上方地址栏后方地址
    var http = require( 'http' )
    var fs = require( 'fs' )
    
    http.createServer( function ( req, res )
     switch ( req.url ) {
       case '/home':
         res.write('home')
         res.end()
         break;
       case '/mine':
         res.write('mine')
         res.end()
         break;
       case '/login': //在static目录下创建一个网页,
         fs.readFile( './static/login.html',function ( error , data ) {
            if ( error ) throw error  
           res.write( data )
           res.end()
         })
         break;
      
       default: 
         break;
     }
    
    
    }).listen( 8000, 'localhost', function () {
       console.log( '服务器运行在: http://localhost:8000' )
     })
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值