Node练习1 | 路由、文件系统、util工具库

7 篇文章 0 订阅

1.Node路由

前端请求:

this.$axios.get('/api/practice/router/1',{
        params:{
          par1:'jiapeng',
          par2: 'liujiapeng'
        }
      }).then(res=>{
        console.log(res.data);
      })

node:

router.get('/1',function(req,res){
  let resource = url.parse(req.url,true);
  console.log('resource.path:', resource.path); // 完整请求 /1?par1=jiapeng&par2=liujiapeng
  console.log('resource.query:',resource.query); //查询列表(参数) { par1: 'jiapeng', par2: 'liujiapeng' }
  console.log('resource.pathname:', resource.pathname);// 二级请求 1

  res.json({'info':'success'});
});

2. 文件系统

    // 异步读取
   fs.readFile('C:\\VueProject\\DailyNode\\server\\practice\\data.txt',(err,data)=>{
      console.log(data.toString())
      res.json({'info':'success'});
    });

    // 同步读取
    let data = fs.readFileSync('C:\\VueProject\\DailyNode\\server\\practice\\data.txt');
    console.log(data.toString())
    res.json({'info':'success'});


     //获取文件
    fs.stat('C:\\\\VueProject\\\\DailyNode\\\\server\\\\practice\\\\data.txt',(err,result)=>{
      console.log(result); //size,time...
      console.log(result.isFile()); //一系列判断方法
      res.json({'info':'success'});
    })

... 其他读写操作比较繁杂,不再列举

3. util常用工具库

3-1.util.inherits(constructor, superConstructor) 是一个实现对象间原型继承的函数。

  class People{
    constructor(){
      this.name = 'people';
      this.age = 100;
    }
  }
  People.prototype.sayName = function () {
    console.log('my name is people')
  };

  class Women{

  }

  util.inherits(Women,People);
  let w = new Women();
  console.log(w.name); // undefine 不能继承实例变量
  w.sayName(); // my name is people

想要实现实例变量的继承,那还得在子类构造器里调用父类构造器,将父类构造器中的this绑定给子类实例 

//-------------------------es6 写法 -----------------
class People{
    constructor(){
      this.name = 'people';
      this.age = 100;
    }
  }
  People.prototype.sayName = function () {
    console.log('my name is people')
  };

  class Women extends People{
    constructor(){
      super();
    //  调用super时会把父类中的this指向当前调用这个Women构造函数的Women实例,因此就相当于在这里执行
    //  this.name = 'people'  this.age = 100
    }
  }
  let w = new Women();
  w.sayName(); //my name is people 也可以继承原型对象
  console.log(w.name , w.age);

  //-------------------es5写法----------------
  function People(){
    this.name = 'people'
  }
  People.prototype.sayName = function(){
    console.log('i am people')
  };
  function Women(){
    People.call(this); //把People构造里的this绑定给当前Women实例 从而达到在这里执行this.name = 'people'的作用
    People.call(this,'women');//若构造需要参数,参数写在后面即可
  }
  let w = new Women();
  console.log(w.name); // people
  w.sayName(); //error
  
  // 如果要继承原型的话
  Women.prototype.__proto__ = People.prototype;

 

3.2util.inspect(object,[showHidden],[depth],[colors]) 是一个将任意对象转换 为字符串的方法,通常用于调试和错误输出。它至少接受一个参数 object,即要转换的对象。

  • showHidden 是一个可选参数,如果值为 true,将会输出更多隐藏信息。
  • depth 表示最大递归的层数,如果对象很复杂,你可以指定层数以控制输出信息的多少,如果不指定depth,默认会递归2层
  let obj = {
    name:'jiapeng',
    age: 19,
    sayName:()=>{
      console.log('i am',this.name)
    }
  };
  let obj_str = util.inspect(obj)
  console.log(obj_str);
  // print { name: 'jiapeng', age: 19, sayName: [Function: sayName] }

Util中还有一些常用库,原生JS封装起来也不麻烦比如util.isArray,util.isRegExp,util.isDate,util.isError等等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值