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等等