Node.js 简介【笔记1】

Node.js简介

Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。
Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好,V8引擎执行Javascript的速度非常快,性能非常好,基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。

  • 前端核心技术体系

在这里插入图片描述

  • Node.js能做服务端【小程序、App、网站、游戏】
  • 学习内容如下图:【知识点多,较难】

在这里插入图片描述

  1. 计算机组成结构
  2. 程序运行流程
  3. 进程和线程
  4. 同步和异步
  5. IP和端口

为什么学习Node.js?

  1. 前端开发三大框架与其息息相关:Vue、React、Angular
    在这里插入图片描述
  2. 可以让其他人访问我们编写的网页
  3. 为后续的框架学习打基础

Node.js是什么?

Node.js is an open-source, cross-playform JavaScript runtime environment. [截取自https://nodejs.org/en/ 官网]
Node.js是一个开源的,跨平台的JavaScript运行环境。
通俗解释:Node.js就是一款应用程序,是一款软件,它可以运行JavaScript。
错误说法:Node.js是一门编程语言。Node.js是新版本的JavaScript。

Node.js的作用

在这里插入图片描述

1.开发服务器应用

在这里插入图片描述网页文件构成:HTML控制结构、CSS控制样式、JavaScript控制交互和效果
nodejs运行在服务端

服务器保存写好的HTML、CSS、JavaScript文件;
用户通过URL向服务器发送请求;
服务器将资源返回给浏览器,游览器对资源进行解析,即可展示网站页面。

2.开发工具类应用

在这里插入图片描述

3.开发桌面的应用

在这里插入图片描述

  • VSCode :代码编辑器
  • Figma :设计工具
  • Postman:接口测试工具
  • electron:以上三个软件都借助于electron框架,electron框架是借助于node.js开发的。
    在这里插入图片描述

Node.js的安装

链接: Node.js官网[https://nodejs.org/en]
在这里插入图片描述

  • LTS:长期维护版本

Win+R→输入cmd→enter:打开命令提示符工具【命令行工具】
输入node -v 可以监测node.js是否安装成功和查看版本
在这里插入图片描述
图中:【C:\Users\Zyf】是命令行的工作目录;node是命令名称,-v是命令参数。

认识命令行工具

在命令行工具中可运行程序
命令的结构有命令名称和命令参数组成【命令参数可为0个或多个】

命令行如何查看D:/Program Files里的内容?

#切换工作目录到D盘命令 d:
#查看D盘内容命令 dir
#改变文件夹命令 cd 【切换工作目录】
#将工作目录切换到上一级命令 cd ..

在这里插入图片描述

说明 操作
切换盘符 C: D:
切换工作目录 cd
查看目录文件 dir
  • dir \s 查看当且工作目录的内容,包括子文件夹的内容,可以用Ctrl+C终止命令
  • 在命令行工具中运行js文件:在当前文件目录下运行 node 文件名.js 命令,来运行js文件。

Node.js注意事项

  1. Node.js中不能使用 BOM 和 DOM 的 API ,可以使用 console 和定时器 API
  2. Node.js中的顶级对象为 global,也可以用 globalThis 访问顶级对象

在这里插入图片描述JS核心语法:变量声明、循环控制、对象函数声明等语法

//BOM 
console.log(window);     //ReferenceError: window is not defined
console.log(history);    //ReferenceError: history is not defined
console.log(navigator);  //ReferenceError: navigator is not defined
console.log(location);   //ReferenceError: location is not defined
//DOM
console.log(document);   //ReferenceError: document is not defined
//AJAX
let xhr = new XMLHttpRequest();  //ReferenceError: XMLHttpRequest is not defined

console.log('one'); //one
setTimeout(() => {
     console.log('two');
 }, 1000); //two

//global 顶级对象
// console.log(global);
// console.log(globalThis);//ES2020
console.log(global === globalThis); //true

Buffer (缓冲器)介绍与创建

1.概念

Buffer是一个类似数组Array的对象,用于表示固定长度的字节序列;
Buffer本质是一段固定长度的内存空间,专门用来处理二进制数据。
在这里插入图片描述

2.特点

  • Buffer 大小固定且无法调整
  • Buffer 性能较好,可以直接对计算机内存进行操作
  • 每个元素的大小为1字节 (byte)【1 byte= 8 bit】
    在这里插入图片描述

3.使用

3.1 创建Buffer

Node.js中创建Buffer的方式:

  1. Buffer.alloc
//创建一个长度为10字节的Buffer,相当于申请了10字节的内存空间,每个字节的值为0
let buf_1 = Buffer.alloc(10);	//Buffer是Nodejs内置模块,全局变量;alloc【分配】是方法
console.log(buf_1);				//结果为<Buffer 00 00 00 00 00 00 00 00 00 00>
  1. Buffer.allocUnsafe
//创建一个长度为10字节的Buffer,buffer中可能存在旧的数据,可能会影响执行结果,所以叫Unsafe
let buf_2 = Buffer.allocUnsafe(10);	
console.log(buf_2);	
  1. Buffer.from
//通过字符串创建buffer
let buf_3 = Buffer.from('hello');//字母转换成Unicode表的数字的16进制
console.log(buf_3);				//结果为<Buffer 68 65 6c 6c 6f>
//通过数组创建buffer
let buf_4 = Buffer.from([105,108,111,118,101,121,111,117]);
console.log(buf_4);				//结果为<Buffer 69 6c 6f 76 65 79 6f 75>

Unicode表兼容ASCII表
在这里插入图片描述

3.2 Buffer 与字符串的转化

可借助 toString 方法将 Buffer 转化为字符串

let buf_4 = Buffer.from([105,108,111,118,101,121,111,117]);
console.log(buf_4.toString()); //结果为iloveyou

toString 默认是按照utf-8 编码方式进行转换的

3.2 Buffer 的读写

Buffer 可以直接通过 [ ] 的方式对数据进行处理

//读取 []
// let buf_3 = Buffer.from('hello');
console.log(buf_3[0]);							//结果为104
console.log(buf_3[0].toString(2));				//结果为1101000,真实保存的值为01101000

//修改写入
buf_3[1] = 97;
console.log(buf_3.toString());					//结果为hallo

//溢出
buf_3[0] = 361; //255(10进制) => 1111 1111(2进制),大于255的舍弃高位的数字 0001 0110 1001(2进制) => 0110 1001(2进制) => 105(10进制) => 69(16进制)
console.log(buf_3);								//结果为<Buffer 69 61 6c 6c 6f>

//中文
let buf_5 = Buffer.from('你好');					//utf-8的一个中文字符占3个字节
console.log(buf_5);								//结果为<Buffer e4 bd a0 e5 a5 bd>

注意:
1.如果修改的数值超过255,则超过8位数据会被舍弃
2.一个utf-8的字符一般占3个字节

计算机基础

计算机基本组成

在这里插入图片描述

  • CPU:中央处理器,计算机运算和控制的中心;
  • 内存:存储数据的介质,读写速度较快,断电丢失数据;
  • 硬盘:存储数据的介质,读写速度较慢,断电不丢失数据;
  • 主板
  • 显卡、声卡:处理信号
  • 散热器
  • 外设:鼠标、键盘、音响等

程序运行的基本流程

操作系统: Windows、Linux、MacOS,是一种应用程序,用来管理和调度硬件资源。(需要将操作系统装到计算机的硬盘中)
在这里插入图片描述
计算机启动的基本过程:
在这里插入图片描述程序启动的基本过程:
在这里插入图片描述

程序一般保存在硬盘中,软件安装的过程就是将程序写入硬盘的过程。
程序在运行时会加载进入内存,然后由CPU读取并执行程序。

进程与线程

进程:【进行中的程序】,进程是程序的一次执行过程。
Windows系统可通过任务管理器查看进程

线程:线程是一个进程中执行的一个执行流。一个线程是属于某个进程的。
一个进程可以有一个或多个线程
查看某一进程下的所有线程:pslist -dmx pid号 【pid号是进程id】
注意:输入pslist,如果命令不被识别,则表示当前电脑上没有安装pslist这个工具,可以到windows官方网站:https://technet.microsoft.com/en-us/sysinternals/bb896682.aspx下载,下载完成后将其解压到C:\Windows\System32路径下即可使用,或者将其配置到环境变量中亦可。

在这里插入图片描述在这里插入图片描述