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()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 2,495评论 1 37
  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 6,383评论 0 6
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,639评论 2 41
  • Node基本 node的最大特性莫过于基于事件驱动的非阻塞I/O模型。 node通过事件驱动的方式处理请求,无须为...
    AkaTBS阅读 2,205评论 0 11
  • 感谢自己迈出不完美的第一步。之前老师问今天谁愿意来一个PHP时,我内心那个纠结、畏缩,心理一直在那做思想斗争。担心...
    双目灵阅读 248评论 0 0