nodeJs学习笔记

news2024/11/25 7:30:33

创建服务器

在根目录下创建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之前

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/721052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Update the WSL kernel by running “wsl --update“ or……【老电脑装Docker】

给老电脑装Docker遇到了这个问题记录一下 Update the WSL kernel by running “wsl --update” or follow instructions at https://docs.microsoft.com/windows/wsl/wsl2-kernel. 打开Docker一直报这个界面&#xff0c;然后就退出 根据上面的意思&#xff0c;试着更新了下 …

汇编学习教程:走进 bp

引言 此前我们学习了 bp 寄存器&#xff0c;我们知道 bp 的作用是为访问栈空间数据提供方便&#xff0c;其默认绑定的段寄存器就是 SS 段寄存器。在此前的博文中博主提及到&#xff0c;bp 的作用其实不止方便访问栈空间数据这一条&#xff0c;对于栈如此重要的空间&#xff0c…

区块链技术:解锁未来的去中心化革命

在数字时代的浪潮中&#xff0c;区块链技术如一颗璀璨的明星崛起&#xff0c;被誉为解锁未来的去中心化革命。作为一种分布式账本技术&#xff0c;区块链不仅改变着传统商业模式&#xff0c;还催生了全新的经济形态和社会关系。本文将从技术原理、应用场景和前景展望三个方面&a…

spring security权限路由匹配restful格式的详情id设计

解决方案&#xff1a; 先直接说下解决方案&#xff0c;权限点设计成如下&#xff1a; /api/books/{id:\d*}问题描述&#xff1a; 获取书本详情的标准restful路由&#xff0c;一般是这样的/api/books/12&#xff0c; 12即该book的id&#xff0c;如果需要拥有访问该路由的权限…

【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello&#xff0c;这里是君兮_&#xff0c;最近刚回家有点懒&#xff0c;从今天开始恢复更新并开始更新新的刷题系列&#xff0c;我们先继续更新0基础入门C语言的内容&#xff0c;今天给大家带来的是指针方面的内容&…

【MYSQL基础】MYSQL用户管理

MYSQL用户管理 数据库的root用户拥有操作数据库的所有权限&#xff0c;如果要团队协作开发&#xff0c;为了避免有成员误操作&#xff0c;可以给成员创建一个权限较低的用户账号 创建用户 create user 用户名 identified by ‘密码’; mysql> create user dam identified …

数据劫持大揭秘:Vue的隐形力量和无限可能

文章目录 1. 初始化阶段2. 响应式侦测器3. 数据劫持4. 模板编译5.总结 Vue.js 通过数据劫持实现了数据的双向绑定。它使用了一个名为 “响应式系统” 的机制来追踪和响应数据的变化&#xff0c;从而自动更新相关的视图。 Vue 的数据劫持原理主要分为以下几个步骤&#xff1a; …

main函数和其他函数

##什么是main函数函数就很敏感&#xff0c;在我认为的函数函数就是功能 有系统给的也有自己写的 函数就是一个封装好的功能 function 函数&#xff0c;功能。main函数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9a92f39cf6a842f5a56dbc1689012ceb.png 函数的参数&am…

高压放大器工作原理以及参数介绍

高压放大器是一种电子器件&#xff0c;其主要作用是将输入信号的电压放大到输出端。由于高压放大器的输入和输出端的电平差很大&#xff0c;因此需要使用特殊的材料和技术来保证电路的可靠性和稳定性。下面我们就来详细介绍一下高压放大器的工作原理和参数介绍。 图&#xff1a…

推荐4款好用的在线作图软件,可一键安装

本文将介绍4个功能强大又可以免费使用的在线作图软件&#xff0c;可以帮助设计师更快地完成绘图工作&#xff0c;一起来看看吧&#xff01; 1.即时设计 即时设计是一款功能强大的在线作图软件&#xff0c;它提供了丰富的绘图工具、层管理和样式库&#xff0c;让设计师可以轻松…

集群 第二章

目录 1.DR 模式 LVS 负载均衡群集部署 2.总结 1.DR 模式 LVS 负载均衡群集部署 DR 服务器&#xff1a; 192.168.83.104 NFS服务器&#xff1a; 192.168.83.103 Web 服务器1&#xff1a; 192.168.83.102 Web 服务器2&#xff1a; 192.168.83.101 …

(八)解析函数的无穷可微性与 Cauchy 型积分定理

本文主要内容包括&#xff1a; 1. 解析函数的无穷可微性1.1. 解析函数的高阶导数1.2. 导数估计式 —— Cauchy 不等式1.3. Liouville 定理1.4. 代数基本定理的一种证明 2. Cauchy 型积分定理2.1. Cauchy 型积分2.2. Cauchy 型积分定理 1. 解析函数的无穷可微性 1.1. 解析函数的…

状态检测防火墙

状态检测防火墙原理 对于已经存在会话表的报文的检测过程比没有会话表的报文要短很多。通过对一条连接的首包进行检测并建立会话后,该条连接的绝大部分报文都不再需要重新检测。这就是状态检测防火墙的“状态检测机制”,相对于包过滤防火墙的“逐包检测机制”的改进之处。这种…

黑马点评(达人探店)

达人探店 一、发布探店笔记 发布探店笔记功能是项目本身就完成了的功能&#xff0c;他会把图片存在本地&#xff0c;有兴趣可以去看源码&#xff0c;在UploadCOntroller类下 二、查看探店笔记 这个功能项目本身是没有完成这个接口的&#xff0c;所以需要我们自己去完成。 …

点击echart图即可获取对应代码的网址

PPChart - 让图表更简单 点击第一个数据中心即可获取对应的代码

在XAMPP环境中搭建wordpress网站教程

1、在xampp的安装目录中找到htdocs文件夹&#xff0c;在此文件夹中建立新文件夹&#xff0c;作本地网站要目录&#xff0c;如&#xff0c;wp-jianzhanpress。 2、将解压后的wordpress程序&#xff0c;放到该目录下。 3、启动XAMPP程序&#xff0c;点击“admin”。进入数据库管理…

Centos 7 下安装Redis

官网地址&#xff08;英文&#xff09;&#xff1a;Redis 官网地址&#xff08;中文&#xff09;&#xff1a;CRUG网站 or redis中文文档 Redis源码地址&#xff1a;GitHub - redis/redis: Redis is an in-memory database that persists on disk. The data model is key-v…

媲美postman?这款国产测试工具你知道吗

没有测试数据的用例就像一盘散沙&#xff0c;跑两步就跑不动了 没有测试数据&#xff0c;所谓的功能测试和性能测试全都是无米之炊。但我发现一个蛮诡异的事情&#xff0c;就是行业内很少会有人去强调测试数据的重要性&#xff0c;甚至市面上都没有人在做测试数据这门生意。 …

JMeter笔记(二)

个人学习笔记&#xff08;整理不易&#xff0c;有帮助点个赞&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 目录 一&#xff1a;了解常用组件 二&#xff1a;创建测试计划 1&#xff09;先新建一个测试计划 2&…

了解三维展厅模型从这里开始

引言&#xff1a; 随着科技的不断进步&#xff0c;展览方式也在不断演变。在这个数字化时代&#xff0c;三维展厅模型正成为展览领域的新宠。三维展厅模型通过结合计算机图形技术和虚拟现实技术&#xff0c;为观众带来身临其境的展览体验。 一&#xff0e;三维展厅模型的定义与…