一、node.js
是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。使用事件驱动、非阻塞和异步I/O模型等技术来提高性能。
- npm安装命令
1)window系统
npm install npm -g
2)使用淘宝镜像的命令
npm install -g cnpm --registry=https://registry.npmmirror.com
3)全局安装与本地安装
npm install express 本地安装
npm install express -g 全局安装
4)升级node.js版本
先卸载,再重新下载一个更高版本的node安装包,然后安装。
2.阻塞与非阻塞代码
1)阻塞代码(创建一个文件):文件读取完才执行程序,按顺序执行。
var fs = require("fs");
var data = fs.readFileSync('input.txt');
2)非阻塞代码(创建一个文件):读取文件的同时执行代码,不按顺序执行。
var fs = require("fs");
fs.readFile('input.txt', function (err, data) {
if (err) return console.error(err);
console.log(data.toString());
});
3.Node.js事件循环
1)enents模块只提供一个对象:events.EventEmitter,它的核心是事件触发和事件监听器功能的封装。
// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();
// 绑定事件及事件的处理程序
eventEmitter.on('eventName', eventHandler);
// 触发事件
eventEmitter.emit('eventName');
4.Stream
1)四种流类型
Readable - 可读操作;Writable - 可写操作;
Duplex - 可读可写操作;Transform - 操作被写入数据,然后读出结果
2)管道流:从一个流中获取数据并将数据传递到另外一个流中。
var fs = require("fs");
// 创建一个可读流
var readerStream = fs.createReadStream('input.txt');
// 创建一个可写流
var writerStream = fs.createWriteStream('output.txt');
// 管道读写操作
// 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
readerStream.pipe(writerStream);
3)链式流:连接输出流到另外一个流并创建多个流操作链的机制,一般用于管道操作。
//压缩文件
var fs = require("fs");
var zlib = require('zlib');
// 压缩 input.txt 文件为 input.txt.gz
fs.createReadStream('input.txt')
.pipe(zlib.createGzip())
.pipe(fs.createWriteStream('input.txt.gz'));
console.log("文件压缩完成。");
//解压文件
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("文件解压完成。");
5.模块系统
1) 原生模块和文件模块
http、fs、path等,原生模块;
./mod或../mod,相对路径的文件模块;
/pathtomodule/mod,绝对路径的文件模块;
mod,非原生模块的文件模块。
6.全局对象
1)__filename 表示当前正在执行的脚本的文件名。
2)__dirname 表示当前执行脚本所在的目录。
3)process 是一个全局变量,即 global 对象的属性。
// 输出当前目录
console.log('当前目录: ' + process.cwd());
// 输出当前版本
console.log('当前版本: ' + process.version);
// 输出内存使用情况
console.log(process.memoryUsage());
7.文件系统
1)文件的同步和异步读取
var fs = require("fs");
// 异步读取
fs.readFile('input.txt', function (err, data) {
if (err) {
return console.error(err);
}
console.log("异步读取: " + data.toString());
});
// 同步读取
var data = fs.readFileSync('input.txt');
console.log("同步读取: " + data.toString());
2)打开文件
fs.open(path, flags[, mode], callback)
path - 文件的路径。
flags - 文件打开的行为。具体值详见下文。
mode - 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。
callback - 回调函数,带有两个参数如:callback(err, fd)。