欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

回忆一下Node(随时更改,想到什么写什么)

程序员文章站 2023-10-18 22:57:33
什么是Node? Node.js 是一个基于Chrome V8 引擎的JavaScript运行环境 Node.js使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效 事件驱动: 任务执行,发布者,订阅者,事件驱动 ( on emit ) 非阻塞: 执行某一个任务的同时也可以执行其他任务 I/O ......
  • 什么是node?

    • node.js 是一个基于chrome v8 引擎的javascript运行环境

    • node.js使用了一个事件驱动、非阻塞式i/o的模型,使其轻量又高效

      • 事件驱动: 任务执行,发布者,订阅者,事件驱动 ( on emit )

      • 非阻塞: 执行某一个任务的同时也可以执行其他任务

      • i/o: 输入/输出( 数据库操作,文件系统操作等 )

      • 非阻塞i/o模型: 当我们使用node.js来实现数据库操作、文件系统等操作时,要进行的异步操作,异步操作的核心传统实现方式就是回调函数

  • node中流的概念:

    • 什么是流?

      • 流指的是数据流,是数据的分片传输

    • 为什么node中要有流呢?

      • 让数据可以实现非阻塞

    • 流使用的场景部分有哪些?

      • gulp就是最典型的例子

  • 前端模块化:amd,cmd,commonjs

    • node应用由模块组成,采用commonjs模块规范

  • node中哪些常用的内置模块:

    • fs 模块

      • fs(文件系统)用于以模仿标准 posix 函数的方式与文件系统进行交互。

      • const fs = require('fs');使用fs模块

      • const inp = fs.createreadstream();读取文件内容,()里面填写的是路径

      • const outp = fs.createwritestream();流正在写入的文件的路径,()里面填写的是路径

    • zlib模块

      • zlib(压缩)提供通过 gzip 和 deflate/inflate 实现的压缩功能

      • const zlib = require('zlib')使用压缩模块

      • const gzip = zlib.creategzip()创建一个空的压缩包

    • http模块

      • 要使用 http 服务器和客户端,必须使用http模块const http = require( 'http' )

      • 后端服务器有两种类型

        • 1. web服务器  【 静态服务器 】
          2. api服务器 【 暴露接口 】api服务器的创建,需要使用一个第三方库 express
      • 请求头部报文

        • 1. general 请求基本信息
          2. response headers 响应头
          3. request headers 请求头
          4. 携带参数
          - query string paramters   get请求
          - form data post 请求
      • 爬虫

          1.去某一个网站爬取一段数据 -> 数据清洗 -> 后端服务器 -> 发送前端 -> 渲染数据
        2.不是所有网站都可以爬取
        3.反爬虫 :只需在数据中插入一些图片,即可成为最简单的反爬虫
        4.爬虫只能爬取由后端渲染的网站
    • event 模块

      • 事件的发布 发布者 订阅者 事件的订阅

    • 第三方模块

      • 从npm.js.com网站拉取第三方模块

      • 安装:

        • 在终端输入npm init -y创建package.json文件

        • 再输入npm i request -s/-d

      • 使用:

        • 比如request模块(数据请求模块) const request

        • request(url, ()=>{})

    • 自定义模块

      • const name = { name: 'name'} 创建模块

      • module.exports.x = x 导出模块

      • module.exports = {name}批量导出模块

  • 后端解决跨域问题

    • 设置请求头

      • 缺点:每个接口都要设置请求头跨域res.setheader('access-control-allow-origin', '*');

    • 反向代理

      • 后端请求数据再发送给前端

    • 使用中间件

      • 需要使用第三方的包cors

  • node.js读取文件都是二进制(buffer/binary)