Node.js学习笔记

一、node.js
是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。使用事件驱动、非阻塞和异步I/O模型等技术来提高性能。

  1. 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)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值