什么是Node?前端
Node.js 是一个基于Chrome V8 引擎的JavaScript运行环境web
Node.js使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效数据库
事件驱动: 任务执行,发布者,订阅者,事件驱动 ( on emit )express
非阻塞: 执行某一个任务的同时也能够执行其余任务npm
I/O: 输入/输出( 数据库操做,文件系统操做等 )json
非阻塞I/O模型: 当咱们使用Node.js来实现数据库操做、文件系统等操做时,要进行的异步操做,异步操做的核心传统实现方式就是回调函数gulp
Node中流的概念:后端
什么是流?api
流指的是数据流,是数据的分片传输跨域
为何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)