NodeJS学习

认识node

node是JS运行在服务器端一种环境,可以让JS实现后端开发

1.node.js和JS对比

js

  1. JS客户端技术,运行于浏览器中

  2. 有多种解释器可以使用,每种浏览器的解释器可能不同

  3. 存在代码兼容性问题  

  4. 支持ES对象,自定义对象,BOM,DOM对象  

  5. 主要用于网页DOM元素的操作,实现用户的交互效果

node

  1.  服务器技术,与PHP,JSP等是类似的技术

  2. 只有一种解释器,只能运行与基于V8引擎改进而来的与运行环境

  3. 只有一种解释器,不存在兼容性问题

  4. 支持ES对象,自定义对象,node.js扩展对象

  5. 主要用于实现服务器端运行逻辑,如文件系统操作,数据库访问等

2.Node安装与基本命令

1. node安装需要去官网下载Node.js (nodejs.org),目前最新版本是18.12.1,版本并不兼容一定看好版本号

2. 安装完可以cmd命令行输入 node -v 如果有版本号,证明安装成功,我的是16.15.1版本的

3. node有两种模式:一种是交互模式,一种是脚本模式

node回车进入交互模式

脚本模式: node 然后拖拽写好的文件,比如下面,然后回车执行写好的js文件

 

4. 输入两次ctrl + c 或者一次 ctrl + d 退出交互模式 

3.宿主环境

宿主环境就是JS运行时的环境,有浏览器,和node,宿主对象在不同环境下提供不同的对象

4.全局对象global和window

1.在任意作用域下都可以访问的对象称为全局对象,node环境下是global对象,浏览器环境下是window对象

2.在全局作用于下直接声明的变量,会自动添加到全局对象里面,称为全局对象的属性

5.console控制台(node环境下也可以使用)

1. console.log(1);         // 输出日志

2. console.info(2)         // 输出消息

3. console.warn(3)         // 输出警告 黄色三角

4. console.error(4)        // 输出错误 红色叉

5. console.time()/console.timeEnd()        记录执行时间

6.Buffer 对象

1. 缓冲区,是内存中的一块区域,用于临时存储数据

2. 创建缓冲区 Buffer.alloc(内存大小,存储内容),中文一个占三字节

3. 存储的是十六进制编码,可以通过toString()转换

 7.process对象进程

1. 进程: 计算机上启动的每个程序都是一个进程,每个进程都会占用一定的资源

2. process.arch         可以看cpu的架构(我的是x64)

3. process.platfrom     查看当前操作系统

4. process.pid          查看当前Node.js进程的编号

5. process.kill(编号)   杀死进程,会退出交互模式

 8.定时器函数

1. 一次性定时器: setTimeout(()=>{},毫秒)

2. 周期性定时器: setInterval(()=>{},毫秒)

3.立即执行定时器: setImmediate(()=>{})

定时器函数都是异步函数,会先把回调函数放入事件队列中,等主函数执行完后再执行

9.模块化开发module

什么是模块?

每个JS文件就是一个模块,一般是按功能划分模块,每个JS文件实现一种功能。

模块化开发的优点?

  1. 每个模块单独设置,不用考虑其他模块使用了什么命名
  2. 提高代码的复用性,每个模块都是一个功能,需要使用该功能时只需要引入该功能模块
  3. 提高代码的可维护性,那个功能出现问题,就修复哪个模块
  4. 多人协作,互不干扰
  5. 模块之间的组合分解易于操作

模块分类

  1. 核心模块:主功能模块,其他功能模块需要被引入到核心模块中使用
  2. 自定义模块:自己写的功能模块
  3. 第三方模块:别人写的好用的功能块

模块的引入

  1. 使用的是CommonJS模块化规范,引入使用require()命令
  2. 写相对路径加文件名: 直接找到该文件引入
  3. 写相对路径文件夹名: 去文件夹下查找package.json说明文件,查看该文件中main属性值是哪个文件,如果没有package.json文件则默认是该文件夹下的index.js文件.
  4. 只写文件夹名: 会在同级中寻找node_modules文件夹,然后在这个文件夹中寻找文件(这一步遵循第二条规则),如果同级没有node_modules文件夹则会返回上一级查找

 如果有package.json文件

10.npm命令

  1. npm: 是用来管理包(第三方功能块)的工具模块, 包的安装卸载升级上传都需要用到
  2. 常用的命令
  3. npm install -y 初始化文件夹,在当前文件夹下生成一个package.json文件,记录使用到的所有的包
  4. npm install 包的名称 :  下载包
  5. npm install      自动下载package.json文件中所有记录的包
  6. npm 所有命令可以查看https://www.npmjs.cn/

11.同步异步

  1. JS是单线程运行
  2. 同步: 在主程序中执行,会阻止主程序后续代码的执行,通过返回值获取结果
  3. 异步: 在一个独立的线程执行,不会阻止主程序后续代码执行,通过回调函数获取结果
  4. node中的回调函数都是异步,回调函数会放进事件队列中,等主程序执行完再执行
  5. 当执行异步的API时,会开启多线程,回调函数放进事件队列中

 

未完待续...