Node.js 超深度体验

Node.js 全局对象

  • __filename

表示当前正在执行的脚本的文件名

  • __dirname

表示当前执行脚本所在的目录。

  • setTimeout(cb, ms)

setTimeout(cb, ms) 全局函数在指定的毫秒(ms)数后执行指定函数(cb)。:setTimeout() 只执行一次指定函数。 返回一个代表定时器的句柄值。

function sayLove(){
    console.log( "I Love You!");
}
// 两秒后执行以上函数
setTimeout(sayLove, 2000);
  • clearTimeout(t)

clearTimeout( t ) 全局函数用于停止一个之前通过 setTimeout() 创建的定时器。 参数 t 是通过 setTimeout() 函数创建的计算器。

function sayLove(){
    console.log( "I Love You!");
}
// 两秒后执行以上函数
var t = setTimeout(sayLove, 2000);


// 清除定时器 上面函数就不执行了
clearTimeout(t);
  • setInterval(cb, ms)

setInterval(cb, ms) 全局函数在指定的毫秒(ms)数后执行指定函数(cb)。

返回一个代表定时器的句柄值。可以使用 clearInterval(t) 函数来清除定时器。

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。

代码

function sayLove(){
    console.log( "I Love You!");
}
// 间隔2秒执行函数
setInterval(sayLove, 2000);

Node.js 常用工具

util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足。

  • util.inherits

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

nodejs.js

var util = require('util');

function Shop() { // 商店基类
    this.name = '汤氏集团'; // 类属性
    this.showAd = function () { // 类方法
        console.log(this.name + ',欢迎光临');
    };
}

Shop.prototype.showName = function () { // 子类可以继承的方法
    console.log(this.name);
};

function FruitShop() {
    this.name = '汤氏集团水果店';
}
util.inherits(FruitShop, Shop); // 类FruitShop 继承 类Shop
var objShop = new Shop();
objShop.showName();          // 汤氏集团
objShop.showAd();            // 汤氏集团,欢迎光临
console.log(objShop);        //Shop { name: '汤氏集团', showAd: [Function] }

var objFruitShop = new FruitShop();
// objFruitShop.showAd();    // 不能继承 showAd 方法
objFruitShop.showName();     //汤氏集团水果店
console.log(objFruitShop);   // FruitShop { name: '汤氏集团水果店' }

输出

clipboard.png

  • util.inspect

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

nodejs.js

var util = require('util');
function Shop() {
    this.name = '汤氏集团';
    this.toString = function() {
        return this.name;
    };
}
var obj = new Shop();
console.log(util.inspect(obj));
console.log(util.inspect(obj, true)); //输出更多隐藏信息

输出

clipboard.png

  • util.isArray(object)

如果给定的参数 "object" 是一个数组返回true,否则返回false。

var util = require('util');

console.log(util.isArray([])); // true
console.log(util.isArray(new Array)) // true
console.log(util.isArray({})) // false
  • util.isRegExp(object)

如果给定的参数 "object" 是一个正则表达式返回true,否则返回false。

  • util.isDate(object)

如果给定的参数 "object" 是一个日期返回true,否则返回false。

  • util.isError(object)

如果给定的参数 "object" 是一个错误对象返回true,否则返回false。

Node.js GET/POST请求

  • 获取GET请求内容

代码

var http = require('http');
var url = require('url');
var util = require('util');

http.createServer(function(req, res){
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end(util.inspect(url.parse(req.url, true)));

    console.log(url.parse(req.url, true).query.name);
}).listen(3000);

输出

clipboard.png

  • 获取POST请求内容

默认是不会解析请求体的, 当你需要的时候,需要手动来做。

代码

var http = require('http');
var querystring = require('querystring');
var util = require('util');

http.createServer(function(req, res){
    var post = '';     //定义了一个post变量,用于暂存请求体的信息

    req.on('data', function(chunk){    
                    //通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中
        post += chunk;
    });

    req.on('end', function(){    
    //在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式
    //然后向客户端返回。
        post = querystring.parse(post);
        res.end(util.inspect(post));
    });
}).listen(3000);

Node.js 工具模块

  • OS 模块

提供基本的系统操作函数。

  • Path 模块

提供了处理和转换文件路的工具。

  • Net 模块

用于底层的网络通信。提供了服务端和客户端的的操作。

  • DNS 模块

用于解析域名。

  • Domain 模块

简化异步代码的异常处理,可以捕捉处理try catch无法捕捉的。

Node.js Web 模块

Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端,使用 HTTP 服务器或客户端功能必须调用http 模块

  • 使用 Node 创建 Web 服务器

代码

var http = require('http');
var fs = require('fs');
var url = require('url');


// 创建服务器
http.createServer( function (request, response) {
    // 解析请求,包括文件名
    var pathname = url.parse(request.url).pathname;


    // 输出请求的文件名
    console.log("Request for " + pathname + " received.");

    // 从文件系统中读取请求的文件内容
    fs.readFile(pathname.substr(1),'utf-8', function (err, data) {
        if (err) {
            console.log(err);
            // HTTP 状态码: 404 : NOT FOUND
            // Content Type: text/plain
            response.writeHead(404, {'Content-Type': 'text/html'});
        }else{
            // HTTP 状态码: 200 : OK
            // Content Type: text/plain
            response.writeHead(200, {'Content-Type': 'text/html'});

            // 响应文件内容
            response.write(data.toString());
        }
        //  发送响应数据
        response.end();
    });
}).listen(8081);

// 控制台会输出以下信息
console.log('Server running at http://127.0.0.1:8081/nodejs/index.html');

输出

clipboard.png

  • 使用 Node 创建 Web 客户端

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值