0
点赞
收藏
分享

微信扫一扫

Node.js笔记整理

杨小羊_ba17 2022-02-23 阅读 81

目录

全局对象

 1.global对象

 2.console对象

 3.Buffer对象

模块系统

模块分类

包和npm

查询字符串模块(querystring)

 网址(URL)

 定时器

文件系统模块

http模块

同步和异步

文件流

http协议

 1.通用头信息(general)

 2.响应头信息(response)

 3.请求头信息(request)

express框架

 创建WEB服务器

 路由

路由器

 中间件

  1.应用级中间件

   2.路由级中间件

  3.内置中间件

接口(API)

 1.接口的地址

 2.请求方式

 3.过滤数据(传参)

 4.返回结果

客户端访问服务器过程


全局对象

 1.global对象

   用来检测是否为全局,JS下global名称为window

一个js文件在Node.js下是在一个独立的作用域;

一个js文件在JS下是在全局作用域下

 2.console对象

  console.log(1);  //打印日志

  console.info(2); //打印消息

  console.warn(3); //打印警告

  console.error(4); //打印错误

  console.time()  //开始计时

  console.timeEnd()  //结束计时

  注意事项:开始计时和结束计时的值要保持一致

 3.Buffer对象

  缓冲区:是内存中用于临时存储数据的区域

var  buf=Buffer.alloc(5,'abcde'); //创建Buffer,分配内存空间为5个字节,并存储字符,每个中文字符占3个字节

buf.toString()  //将Buffer数据转为字符串

模块系统

 模块:代表的是一个功能体,每个文件就是一个模块

 module.exports:暴露的对象,默认是一个空对象

 require():是一个函数,用于引入其它的模块,回到暴露的对象

 __dirname  当前模块的绝对路径

 __filename  当前模块的绝对路径+模块名称

模块分类

  分为自定义模块、核心模块、第三方模块

以路径开头

不以路径开头

文件模块

require('./circle.js')

用于引入自定义模块

目录模块

require('./02_tao')

找到目录后,会到目录下找package.json文件中main对应的文件,如果找不到会自动找index.js

require('tao')

用于引入第三方模块

会自动到当前目录下的node_modules目录中寻找tao目录,找不到会一直往上一级目录的node_modules目录寻找

包和npm

 包(package):就是指第三方模块

 npm:是一个工具模块,用来管理第三方模块的,会在Node.js安装的时候附带安装     npm  -v

 CommonJS:是一种模块化规范,Node.js采用这种规范,例如引入、暴露都是基于这个规范。

 第三方模块网址:www.npmjs.com

 常用的npm命令

   npm  init  -y   初始化生成一个package.json文件,作为项目描述文件,可以记录下载安装的包

   npm  install  包名称   下载安装指定的包,将下载的包自动放入到node_modules目录,如果node_modules目录不存在会自动创建;在package.json中记录下载安装的包;生成package-lock.json文件,记录所有包的版本。

   npm  install    自动下载安装package.json和package-lock.json中记录的包

   其它npm命令: www.npmjs.cn

查询字符串模块(querystring)

 查询字符串:是浏览器端向服务器传递参数的一种形式,位于网址中

 http://www.codeboy.com:9999/product.html?kw=戴尔&a=1

 查询字符串模块用于操作查询字符串的工具模块

 parse()  将查询字符串转换为对象,获取参数值

 网址(URL)

  URL:统一资源定位,互联网上的任何资源(html,css,js,图片)都有对应URL,用来访问该资源。

 http://www.codeboy.com:9999/product_details.html?lid=5

 协议    域名/IP地址      端口   请求的服务器端资源  查询字符串

  new URL( )   将一个URL转为对象,可以获取各个部分

 定时器

 提供一组定时器相关的函数

 1.一次性定时器

开启

var timer=setTimeout(回调函数, 间隔时间)

当间隔时间到了,会调用一次回调函数。

清除

clearTimeout(timer)

 2.周期性定时器

开启

var timer=setInterval(回调函数, 间隔时间)

每隔一段时间,调用一次回调函数

清除

clearInterval(timer)

 3.立即执行定时器

开启

var timer=setImmediate(回调函数)

清除

clearImmediate(timer)

 说明:所有的定时器中的回调函数都是在事件队列中执行。

4.立即执行定时器

  process.nextTick()

  

文件系统模块

 用于文件操作

 文件分为目录形式和文件形式

 1.查看文件的状态

  statSync(文件的路径)/stat(文件的路径, 回调函数)

    isDirectory()  是否为目录

    isFile()   是否为文件         

 2.创建目录

  mkdirSync(目录的路径) / mkdir(目录的路径, 回调函数)

 3.移除目录

  rmdirSync(目录的路径) / rmdir(目录的路径, 回调函数)

  只能移除空目录

 4.读取目录

  readdirSync(目录的路径) / readdir(目录的路径, 回调函数)

 5.清空写入文件

  writeFileSync(文件的路径, 写入的数据) / writeFile(文件的路径, 写入的数据, 回调函数)

  如果文件不存在,会先创建文件然后写入

  如果文件已经存在,会清空内容然后写入

 6.追加写入

  appendFileSync(文件的路径, 写入的数据)/appendFile(文件的路径, 写入的数据, 回调函数)

  如果文件不存在,会先创建文件然后写入

  如果文件已经存在,会在末尾追加写入

 7.读取文件

  readFileSync(文件的路径) / readFile(文件的路径, 回调函数)

 8.删除文件

  unlinkSync(文件的路径) / unlink(文件的路径, 回调函数)

 9.检测文件(目录)是否存在

  existsSync(文件路径)

  只有同步一种方法,返回布尔型的值

http模块

  可以用来创建WEB服务器

  createServer()   创建WEB服务器

  listen()   设置端口

  res 响应对象

   res.statusCode   设置响应的状态码 

  req  请求对象         

   req.url   获取请求的服务器端资源  格式   '/a' 

   req.method   获取请求的方法

通过事件接收请求并作出响应

on('request', (req,res)=>{

  req 请求的对象

  res 响应的对象

  res.setHeader()  设置响应的头信息

  res.write()  设置响应到浏览器的内容

  res.end()  结束并发送响应

});

同步和异步

 同步:是在主程序中执行,会阻止后边代码的执行,通过返回值获取结果

 异步:是在一个独立的线程执行,不会阻止主程序后续代码执行,通过回调函数获取结果

文件流

 createReadStream(文件的路径)   创建可读取的文件流,分段读取文件

 createWriteStream(文件的路径)  创建可写入的文件流,会创建文件

 pipe()    管道,通过管道可以将读取的流添加到写入的流,完成文件的拷贝

 on('事件名称', 回调函数)   添加事件,监听某一个动作,会自动调用回调函数;事件名称是固定的字符串。

http协议

 超文本传输协议  

 是客户端和WEB服务器端之间的通信协议

 1.通用头信息(general)

   Request URL:请求的URL,要请求的资源

   Request Method:请求的方法,对资源的操作方式,get/post..

   Status Code:响应的状态码,请求的结果

     1**:接收到了请求,还没有结束响应

     2**:成功的响应

     3**:响应的重定向,发生跳转

     4**:客户端错误

     5**:服务器错误

 2.响应头信息(response)

   Location:设置要跳转的URL,通常配合3**使用

   Content-Type:设置响应的内容类型,中文乱码解决(text/html;charset=utf-8)

 3.请求头信息(request)

express框架

  基于Node.js平台,快速、开放、极简的WEB开发框架。

  网址:www.expressjs.com.cn

  express是第三方模块,需要先去下载安装才能使用

    npm  install  express   

 创建WEB服务器

const express=require('express'); //引入express模块

const app=express(); //创建WEB服务器

app.listen(8080); //设置端口

 路由

   用来处理特定的请求,路由中包含三部分:请求的URL,请求的方法,回调函数

   res  响应的对象

    res.send()   设置响应的内容并发送

    res.redirect()   设置响应的重定向并发送

    res.sendFile()   设置响应的文件并发送,使用绝对路径 __dirname

   req  请求的对象

    req.url   获取请求的URL

    req.method  获取请求的方法

    req.query   获取get传递的参数,格式为对象

传参方式

格式

路由获取

get方式

http://127.0.0.1:8080/mysearch?kw=手机

req.query

{kw: '手机'}

路由传参

http://127.0.0.1:8080/package/手机

req.params

需要路由中设置参数名 例如:pname

{pname: '手机'}

传参方式

格式

路由获取

post传递

URL中不可见

req.on('data',(c)=>{

   c 获取的数据,格式为buffer,需要转字符串,转后为查询字符串,还需要进一步转为对象

})

路由器

 路由器用来管理路由,将同一个模块下的路由统一管理;可以给路由器下所有路由添加同一个的前缀,防止URL相同

路由器

//1.创建路由器对象

const r=express.Router();

//2.添加路由

//3.暴露路由器对象

module.exports=r;

WEB服务器

//1.引入路由器

//2.使用路由器,将所有路由器下的路由挂在到WEB服务器下,同时添加前缀

app.use( 添加的前缀,引入的路由器 )

 中间件

  用于拦截对服务器的请求

  中间件分为应用级中间件、路由级中间件、内置中间件、第三方中间件、错误处理中间件

  1.应用级中间件

   是一个函数,一旦拦截到自动调用这个函数

   函数(req,res,next)  //next()  往后执行,可能是下一个中间件或者路由

   app.use( 拦截的URL, 函数 )

   2.路由级中间件

   就是路由器的使用

   当拦截到以后到指定的路由器下寻找路由

  3.内置中间件

   (1)托管静态资源

    客户端请求静态资源(html、css、js、图像...),不需要通过路由去响应,而是自动的到指定的目录查找。

    app.use( express.static('要托管的目录') )

   (2)将post传递参数转为对象

app.use( express.urlencoded({

  extended:false  //内部如何转为对象

}) )

req.body   //路由中获取对象

接口(API)

服务器提供的动态资源(和数据库相关的)

RESTful接口

 是一种接口的规范

 1.接口的地址

   http://127.0.0.1:8080/v1/emps

                    版本号 资源名称(复数)

   http://127.0.0.1:8080/v1/users/login

                                 对资源具体描述

 2.请求方式

  对资源的操作方式

  get  获取资源(查询资源)

  post  新建资源(插入数据)

  delete  删除资源(删除数据)

  put  修改资源(修改数据)

 3.过滤数据(传参)

  操作一个资源(使用路由传参)

    http://127.0.0.1:8080/v1/emps/5

  过滤数据(使用get传参)

   分页查询

   http://127.0.0.1:8080/v1/emps?pno=1&count=10

                                  页码    每页数据量

   搜索

   http://127.0.0.1:8080/v1/emps?user=tao

  修改资源和新建资源(post传参)

 4.返回结果

   json:是一种字符串形式的对象,是一种数据格式

   通常包含状态码、消息、数据

   ' {"code":200, "msg":"查询成功", "data":[ ...] } '

   ' {"code":200, "msg":"登录成功"} '

客户端访问服务器过程

举报

相关推荐

node.js笔记

node.js笔记(3)

Node.js学习笔记

Node.js 学习笔记

node.js学习笔记

Node.js 笔记 4

Node.js——初识Node.js

0 条评论