码迷,mamicode.com
首页 > Web开发 > 详细

清晰地去看 Node.js(二)

时间:2016-06-12 18:17:01      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

比较缓冲器
拷贝缓冲区

路由指的就是我们要针对不同的URL有不同的处理方式,例如处理/start的业务逻辑和处理/upload模块 的业务;逻辑就
是不一致的。

Node.js 模块系统:
http://www.shouce.ren/api/view/a/3470

 

代码区:

/**
 * 比较缓冲器
 * buf1.compare(buf2);
 */
var buffer1 = new Buffer(‘ABC‘);
var buffer2 = new Buffer(‘ABCD‘);
var result = buffer1.compare(buffer2);

console.log(result);

if(result < 0) {
    console.log(buffer1 + ‘ comes before ‘ + buffer2);
}else if(result == 0) {
    console.log(buffer1 + ‘ is same as ‘ + buffer2);
}else if(result > 0) {
    console.log(buffer1 + ‘comes after ‘ + buffer2);
}


/**
 * 拷贝缓冲区
 */
var buffer1 = new Buffer(‘ABC‘);
var buffer2 = new Buffer(3);
buffer1.copy(buffer2);
console.log(‘buffer2: ‘ + buffer2.toString()); // buffer2: ABC

// 缓冲区裁剪
var buffer1 = new Buffer(‘runoob‘);
var buffer2 = buffer1.slice(0, 2);
console.log(‘buffer2 content: ‘ + buffer2);

// 缓冲区长度
// buf.length
var buffer = new Buffer(‘www.baidu.com‘);
console.log(‘buffer的长度:‘ + buffer.length); // buffer的长度:13

/**
 * Node.js Stream(流)
 */

// 从流中读取数据
// 引入文件系统
var fs = require(‘fs‘);
var data = ‘‘;

// 创建可读流
var readStream = fs.createReadStream(‘input.txt‘);
// 设置编码
readStream.setEncoding(‘UTF8‘);

// 处理流事件
readStream.on(‘data‘, function (chunk) {
    data += chunk;
});

readStream.on(‘end‘, function () {
    console.log(data);
});

readStream.on(‘error‘, function (err) {
    console.log(err.stack);
});

console.log(‘程序执行完毕!‘);


// 写入流
// 引入文件系统模块
var fs = require(‘fs‘);
var data = ‘这是百度的网址:www.baidu.com‘;
var createFile = ‘output.txt‘;

var writeStream = fs.createWriteStream(createFile);

// 使用 utf8 编码写入数据
writeStream.write(data, ‘UTF8‘);

// 标记文件末尾
writeStream.end();

// 文件写入完成
writeStream.on(‘finish‘, function () {
    console.log(‘写入完成‘);
});

// 出错提示
writeStream.on(‘error‘, function (err) {
    console.log(err.stack);
});

console.log(‘程序执行完毕!‘);


// 管道流
// 从一个流中获取数据并传递到另一个流中去
// 读取一个文件内容并将内容写入到另外一个内容中去
// 引入文件系统
var fs = require(‘fs‘);

// 创建一个可读流
var readStream = fs.createReadStream(‘input.txt‘);

// 创建一个可写流
var writeStream = fs.createWriteStream(‘output.txt‘);

// 管道读写操作
readStream.pipe(writeStream);

console.log(‘程序执行完毕!‘);


// 链式流
// 连接输出流到另外一个流,并创建多个流操作链
// 引入文件系统模块
var fs = require(‘fs‘);

// 引入压缩模块
var zlib = require(‘zlib‘);

// 创建可读流
fs.createReadStream(‘input.txt‘)
    .pipe(zlib.createGzip())
    .pipe(fs.createWriteStream(‘input.txt.gz‘));

console.log(‘文件压缩完成‘);



// createGunzip()
// 链式流解压文件
var fs = require("fs");
var zlib = require(‘zlib‘);

// 解压 input.txt.gz 文件为 input.txt
fs.createReadStream(‘input.txt.gz‘)
    .pipe(zlib.createGunzip())
    .pipe(fs.createWriteStream(‘input.txt‘));

console.log("文件解压完成。");


// Node.js 模块系统

// Node.js 函数
function say(word) {
    console.log(word);
}

function execute(f, v) {
    f(v);
}

execute(say, ‘some words‘);

// 传入匿名函数
execute(function (word) {
    console.log(word);
}, ‘some words‘);


// 函数传递是如何让HTTP服务器工作的
var http = require(‘http‘);

http.createServer(onRequest).listen(8080);

function onRequest(request, response) {
    response.writeHead(200, {‘Content-Type‘: ‘text/plain‘});
    response.write(‘some words‘);
    response.end();
}


// Node.js 路由
// 需要 url 和 querystring 模块
var http = require(‘http‘);
var url = require(‘url‘);

http.createServer(onRequest).listen(8080);

function onRequest(request, response) {
    response.writeHead(200, {‘Content-Type‘: ‘text/plain‘});
    response.write(‘some words‘);
    response.end();
}

// Node.js 全局对象global
// __filename:当前正在执行脚本的文件名
console.log( __filename ); // E:\demo\node\demo01.js

// 当前执行脚本所在的目录
console.log(__dirname); // E:\demo\node

// 全局变量 process,是global对象的属性
// process是描述当前Node.js 进程状态的对象
process.on(‘exit‘, function (code) {

    setTimeout(function () {
        console.log(‘该代码永远不会执行‘);
    }, 0);

    console.log(‘退出码:‘ + code); // 0
});
console.log(‘程序执行结束‘);

// 输出到终端
process.stdout.write(‘some words‘ + ‘\n‘);

// 通过参数读取
process.argv.forEach(function (val, index, array) {
    console.log(index + ‘: ‘ + val);
});
/**
 * 0: D:\node_install\node.exe
 * 1: E:\demo\node\demo01
 */

// 获取绝对路径
console.log(process.execPath); // D:\node_install\node.exe

// 获取平台信息
console.log(process.platform); //win32

// 输出当前目录
console.log(process.cwd()); //E:\demo\node

// 输出当前版本
console.log(process.version);

// 输出内存使用情况
console.log(process.memoryUsage());

 

清晰地去看 Node.js(二)

标签:

原文地址:http://www.cnblogs.com/lqcdsns/p/5578390.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!