Node笔记 - tips

一、原生获取url参数的两种方式

var http = require('http');
var url = require('url');
var qs = require('qeurystring');

var server = http.createServer( onRequest ).listen( 3000 );

function onRequest(req, res) {
     var data1 = url.parse(req.url , true).query ;  // 方法一
     var data2 = qs.parse(url.parse(req.url).query) ; // 方法二

      res.writeHead(200);
      res.write('nodeRequest');
      res.end();
}

二、箭头函数
直接写出返回值

var f = function() { return 5 }; 
var f = () => 5;         // 等同于上面的函数
var sum = function(num1, num2) { return num1 + num2; };
var sum = (num1, num2) => num1 + num2;        // 等同于上面的函数

三、面向对象
require 用来加载代码, 而 exports f和 module.exports 则用来导出代码。

  • exports 是指向 module.exports 的引用
  • require() 返回的是 module.exports 而不是 exports

1.写一个模块(类) rocker.js

function User(name, age) {
    this.name = name;
    this.age = age;
    this.about = function() {
        console.log(this.name + 'is' + this.age + 'years old');
    };
};
module.exports = User;

调用

var Rocker = require('./rocker.js');
var r = new Rocker('Ozzy', 62);
r.about();    // Ozzy is 62 yesrs old

继承

var User = requeir('./User');
function Teacher(name, age){
    User.apply(this, [name,age]);    // 继承了 User类
    this.teach = function(res) {
         res.write('子类的新方法');
    }
}
module.exprots = Teacher;

2.写一个模块(数组)

module.exports = ['Lemmy','Ozzy','Ronnie','Steven','Mick'];

调用

var rocker = require('./rocker.js');
console.log('Rockin in heaven: ' + rocker[2]);  // Rockin in heaven: Ronnie

三、Buffer(数据块)
JS语言自身只有字符串数据类型,没有二进制数据类型,因此 NodeJS提供了一个与String对等的全局构造函数Buffer来提供对二进制数据的操作。

四、单例模式
创建单例类 ConnPool

module.exports = (function() {
    // 引入时就执行
    var _value = 1;

    // 闭包方法
    return function() {
        console.log('value=' + _value++);
    }
})()

引入使用

var c = require('./ConnPool');  // 引入就执行,实例化 _value
c();  //调用时,执行闭包方法

五、带参数跳转
1.url方式传参
res.redirect('/index?email=aa&pwd=aaa')
2.session方式

req.session.rs = rs
res.redirect('新路径');
//新路径中:
rs = req.session.rs;
delete req.session.rs;  //清楚参数
  1. http重定向状态码
/*
301: 永久重定向,告诉客户端以后应从新地址访问
303: 对于POST请求,它表示请求已经被处理,客户端可以接着使用GET方法去请求Location里的URI
307: 对于POST请求,表示请求还没有被处理,客户端应该向Loaction里的URI重新法器POST请求
301,302和303的处理结果是一样的,直接跳转到test2.php,post没有内容
307的会重新post请求到test2.php,并且给出页面提示
*/

六、jQuery

// 取出选择框中的文本
$(this).find("option:selected").text()

$("#typeid").find("option:selected").text()

你可能感兴趣的:(Node笔记 - tips)