NodeJS学习总结

Nodejs

可用于开发服务端应用、开发工具类应用、开发桌面端应用;nodejs是ecmscript的核心语法,nodejs中不能使用BOM和DOM的API,他的顶层对象是global,可以用globalThis访问顶层对象;可以用console和定时器API。

Buffer(缓冲器)

本质上是一段内存空间,用于处理二进制内存数据,用于表示固定长度的字节序列,可用toString()转换为字符。
特点:
大小固定且无法调整;性能较好,可以直接对计算机内存进行操作;每个元素大小为1字节.
创建:
Buffer.alloc(10); Buffer.allocUnsafe(10);Buffer.from(‘hello’);Buffer.from([105,108,101])

fs模块(文件系统)

fs是nodejs中的内置模块;可以对计算机中的磁盘进行操作.
使用:require(‘fs’);

  1. 写入(当需要持久化保存数据的时候,应该想到文件写入)
    异步: writeFile(文件名,写入的数据,可选项配置,回调函数)
    同步:writeFileSync(文件名,写入的数据,可选项配置)
    文件尾部追加异步:appendFile(文件名,写入的数据,回调函数)
    文件尾部追加同步:appendFileSync(文件名,写入的数据)
    流式写入: createWriteStream(文件路径,可选项配置)
    在这里插入图片描述
    2.文件读取
    异步读取:readFile(文件路径,选项配置,回调函数)
    同步读取: readFileSync(文件路径,选项配置)
    流式读取:createReadStream(文件路径,选项配置)
    在这里插入图片描述
    3、重命名、移动
    异步:rename(文件的当前路径,文件的新路径,回调函数)
    同步:renameSync(文件的当前路径,文件的新路径)
    4、文件删除
    异步删除:unlink(文件路径,回调函数)
    同步删除:unlinkSync(文件路径)
    常用的:rm(文件路径,回调函数)
    5、文件夹操作
    在这里插入图片描述在这里插入图片描述
    6、相对路径(./、…/)、绝对路径(//、/)
    在这里插入图片描述

7、__dirname保存当前文件所在目录的绝对路径;是Nodejs环境中的内置变量,常用于与文件名拼接成绝对路径。

path模块,操作路径

使用:const path = require(‘path’)
在这里插入图片描述

http(超文本传输协议)

使用:在这里插入图片描述

模块化

模块化有点:高复用性;防止命名冲突;高维护性
使用: module.export和require();

自定义的模块导入时,建议使用相对路径

使用时有几点注意: module.exports 可以暴露 任意数据 不能使用 exports = value 的形式暴露数据,模块内部module 与 exports 的隐式关系 exports = module.exports = {} ,require返回的是目标模块中 module.exports 的值

require导入模板的基本流程:

将相对路径转为绝对路径,定位目标文件
缓存检测
读取目标文件代码
自执行函数,通过arguments.callee.toString()查看自执行函数
缓存模块的值
返回module.exports的值

nodemon包

自动重启 node 应用程序插件

npm i -g nodemon

npm 和 yarn(包管理工具)

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

发布一个自己的npm包的流程

1、创建文件,使用module.export暴露插件函数
2、npm init -y初始化包,填写包的信息,版本号等
3、官网注册激活账号
4、运行npm login登录
5、运行npm publish发布
更新包:注意修改版本号然后,npm publish发布
删除包:npm unpublish (发布的24小时内可删)

express 官网

基于Nodejs开发的极简的web应用开发框架;是一个封装好的工具包,封装了很多功能。
express generator项目生成器项目,具体步骤看官网
重点记录一下express中间件:

中间件本质是一个回调函数,可以像路由一样访问请求对象(request),响应对象(response);用于提取公共的函数,简化代码。
全局中间件:每一个请求到达服务器之后都会执行全局中间件函数;express允许定义多个全局中间件。
路由中间件:对某一些路由进行功能封装使用

EJS模板引擎:用于分离用户界面和业务数据的技术
EJS官网
常用语法:

//需要执行的js代码
<%  js代码 %>
//取值的
<%= 变量 %>

事件循环机制

事件循环是Nodejs处理非阻塞I/O操作的机制。
分为以下几个阶段:

  • timer队列:用于处理定时器的回调任务,setInterval,setTimeout
  • poll队列:用于处理I/O文件读写的回调任务,在此过程如果timmer和check队列都为空会在此阻塞等待。
  • check队列:用于处理setImmediate()的回调任务。
    timer和poll和check组合成一个tick
  • process.nextTick队列:优先级比tick任务的优先级高,总是在下一次tick执行之前执行。
  • 微任务:promise的回调函数在nexttick之后事件循环之前执行。
    在事件处理的过程中同步代码直接执行,执行完毕之后,检查process.nextTick队列中是否有相应的回调任务,有就直接执行,然后执行微任务,最后执行事件循环里面的队列

express和Koa区别

  • express是基于回调的,是node中常见的error-first模式;koa是基于promise,使用try…catch来捕获错误。
  • express中间件是线性模型;koa中间件是洋葱模型;
  • express自身集成了router,koa需要引入koa-router,koa体积更小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值