nodeJs学习笔记

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

创建服务器

在根目录下创建server.js的文件里面写如入以下代码

// 请求nodejs自带的http模块
var http = require('http');

http.createServer(function (request, response) {

    // 发送 HTTP 头部 
    // HTTP 状态值: 200 : OK
    // 内容类型: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'});

    // 发送响应数据 "Hello World"
    response.end('Hello World\n');
}).listen(8888);
// listen是用来指定端口号

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');

使用node执行这个文件即可

node server.js
// Server running at http://127.0.0.1:8888/

在 http://127.0.0.1:8888/上就会有
在这里插入图片描述

Node.js REPL(交互式解释器)

node命令进入REPL

ctrl + c - 退出当前终端。

ctrl + c 按下两次 - 退出 Node REPL。

ctrl + d - 退出 Node REPL.

向上/向下 键 - 查看输入的历史命令

tab 键 - 列出当前命令

.help - 列出使用命令

.break - 退出多行表达式

.clear - 退出多行表达式

.save filename - 保存当前的 Node REPL 会话到指定文件

.load filename - 载入当前 Node REPL 会话的文件内容。

异步非阻塞

var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
    if (err) return console.error(err);
    console.log(data.toString());
});
console.log("程序执行结束!");

// $ node main.js
// 程序执行结束!
// 菜鸟教程官网地址www.runoob.com

事件event

on进行事件与函数绑定绑定emit进行事件触发

// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();
 
// 创建事件处理程序
var connectHandler = function connected() {
   console.log('连接成功。');
  
   // 触发 data_received 事件 
   eventEmitter.emit('data_received');
}
 
// 绑定 connection 事件处理程序
eventEmitter.on('connection', connectHandler);
 
// 使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received', function(){
   console.log('数据接收成功。');
});
 
// 触发 connection 事件 
eventEmitter.emit('connection');
 
console.log("程序执行完毕。");

封装EventEmitter

使用方式

var events = require('events'); 
var emitter = new events.EventEmitter(); 
emitter.on('eventname',function(){})
....

EventEmitter属性
1. addListener(event, listener)和js中的差不多
2. on(event, listener)
3. once(event,listener) // 只监听一次
4. removeListener(event, listener)
5. removeAllListeners([event])
6. setMaxListeners(n) 默认情况下 EventEmitters 如果你添加的监听器超过 10 个就会输出警告信息。
7. listeners(event) 返回指定的监听器数组
8. emit(event, [arg1], [arg2], […])

Buffer

const buf = Buffer.from('runoob', 'ascii');

// 输出 72756e6f6f62
console.log(buf.toString('hex'));

// 输出 cnVub29i
console.log(buf.toString('base64'));

buffer实例Api

Buffer.alloc(size[, fill[, encoding]]) 返回一个指定大小的 Buffer 实例如果没有设置 fill则默认填满 0
Buffer.allocUnsafe(size) 返回一个指定大小的 Buffer 实例但是它不会被初始化所以它可能包含敏感的数据
Buffer.allocUnsafeSlow(size)
Buffer.from(array) 返回一个被 array 的值初始化的新的 Buffer 实例传入的 array 的元素只能是数字不然就会自动被 0 覆盖
Buffer.from(arrayBuffer[, byteOffset[, length]]) 返回一个新建的与给定的 ArrayBuffer 共享同一内存的 Buffer。
Buffer.from(buffer) 复制传入的 Buffer 实例的数据并返回一个新的 Buffer 实例
Buffer.from(string[, encoding]) 返回一个被 string 的值初始化的新的 Buffer 实例

写入缓存区

buf.write(string[, offset[, length]][, encoding])

参数介绍

string - 写入缓冲区的字符串。

offset - 缓冲区开始写入的索引值默认为 0 。

length - 写入的字节数默认为 buffer.length

encoding - 使用的编码。默认为 'utf8' 。

读取缓存区

buf.toString([encoding[, start[, end]]])
encoding - 使用的编码。默认为 'utf8' 。

start - 指定开始读取的索引位置默认为 0。

end - 结束位置默认为缓冲区的末尾。

Compare

var buffer1 = Buffer.from('ABC');
var buffer2 = Buffer.from('ABCD');
var result = buffer1.compare(buffer2);

if(result < 0) {
   console.log(buffer1 + " 在 " + buffer2 + "之前");
}else if(result == 0){
   console.log(buffer1 + " 与 " + buffer2 + "相同");
}else {
   console.log(buffer1 + " 在 " + buffer2 + "之后");
}

// ABC在ABCD之前
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: NodeJS