清晰地去看 Node.js(二)

比较缓冲器
拷贝缓冲区

路由指的就是我们要针对不同的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());
时间: 2024-10-11 12:03:12

清晰地去看 Node.js(二)的相关文章

[读书笔记]了不起的node.js(二)

这周做项目做得比较散(应该说一直都是这样),总结就依据不同情境双开吧-这篇记录的是关于node的学习总结,而下一篇是做项目学到的web前端的知识. 1.HTTP篇 node的HTTP模块在第一篇时接触过,这里来学习几个例程中出现的API. 1 var qs = require('querystring'); 2 3 require('http').createServer(function(req, res){ 4 if('/' == req.url){ 5 res.writeHead(200,

Node.js(二)——模块与包管理工具

http,process等等这些都是模块 一.Node.js的模块与Commonjs规范 1.js的天生缺陷--缺少模块化管理机制 ·表现--JS中容易出现变量被覆盖,方法被替代的情况(既被污染).特别是存在依赖关系时,容易出现错误.这是因为JS缺少模块管理机制,来隔离实现各种不同功能的JS判断,避免它们相互污染. ·解决--经常采用命名空间的方式,把变量和函数限制在某个特定的作用域内,人肉约定一套命名规范来限制代码,保证代码安全运行.jQuery中有许多变量和方法,但是无法直接访问,必须通过j

Node.js、express、mongodb 入门(基于easyui datagrid增删改查)

前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验下node.js的魔力,二就是看看node.js.express和mongoose的API,其次就是把自己入门的过程记录下来,方便自己查看,再就是对入门的朋友起一个引导的作用. 敲demo的过程中感觉最爽的就是npm(Node Package Manager)是一个Node.js的包管理和分发工具.

Node.js之路【第一篇】初识Node.js

什么是Node.js 1.Node.js就是运行在服务端的JavaScrip. 2.Node.js是一个基于Chrome JavaScrip运行时简历的一个平台. 3.Node.js是一个非阻塞I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快. 看下官网的介绍: Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, sc

Node.js模块导入导出

这篇文章本来是想模块导入导出和事件循环一起写的,但是感觉一起写的话会太长了,所以就分开两篇文章写吧.下一篇会重点介绍一下js中的事件循环,js代码到底是以何种顺序去执行的呢?我相信你看懂了事件循环再去看node对你的帮助是非常大的. 讲模块系统之前先认识一下node.js中的全局对象. node.js的全局对象 众所周知的是在浏览器中的老大哥是谁,它就是window,this指向的也是window,那么在node中的全局对象就不是window了,而是global,可以在命令行中去看一下,想学习n

Node.js安装过程

今天电脑的node用不了了,于是决定重新安装一下 一.安装Node.js 1.首先,可以直接去Node的官网寻找适合自己电脑系统的版本 官网地址:https://nodejs.org/en/download/   可以直接进入官网看到各种版本 然后根据自己电脑的操作系统和配置情况选择适合自己电脑的,这里我选的是Windows系统64位 2.等安装包下载完成后就可以进入文件路径,双击安装包 一直选择下一步,最后选择install等它安装完后点击final就ok啦(我这里安装完了,就先不一步一步演示

为什么要使用 Node.js

Node.js 是什么 传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部分:渲染引擎和 JavaScript 引擎.前者负责渲染 HTML + CSS,后者则负责运行 JavaScript.Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快. Node.js 是一个运行在服务端的框架,它的底层就使用了 V8 引擎.我们知道 Apache + PHP 以及 Java 的 Servlet 都可以用来开发动态网页,Node.js 的作用与他们

Node.js开发入门—Angular简单示例

在"使用AngularJS"中,我们提到了如何在Node.js项目中引入AngularJS,这次提供一个非常简单的示例,演示AngularJS里的指令.数据绑定.服务等内容. 我准备做Web后台管理系统,不同的管理员会有不同的权限,管理员登录后看到的菜单和他的权限有关,能看到什么,是动态生成的(类似RBAC).本文的示例从这个项目而来,当然,现在还是最简单的. 如果没有特别说明,后面我们用到的示例都使用express generator生成. Angular小demo 先搞起来吧. 第

为什么要用 Node.js

这是一个移动端工程师涉足前端和后端开发的学习笔记,如有错误或理解不到位的地方,万望指正. Node.js 是什么 传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部分:渲染引擎和 JavaScript 引擎.前者负责渲染 HTML + CSS,后者则负责运行 JavaScript.Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快. Node.js 是一个运行在服务端的框架,它的底层就使用了 V8 引擎.我们知道 Apache + PHP