Node基础
2022.4.16
· 浏览器中的JavaScript运行环境:F:\Zhuo mian\api_server\app.js
(1)V8引擎(chrome浏览器运行环境)负责解析和执行JavaScript代码。
(2)内置API是由运行环境提供的特殊接口,只能在所属的运行环境中调用。
· Node.js是基于Chrome V8引擎的JavaScript运行环境(后端)。浏览器是JavaScript的前端运行环境。 Node.js中无法调用DOM和BOM等浏览器内置API。
· 检查Node.js是否安装完成:打开终端(win+R),cmd命令,输入node -v,返回带v的版本号
· 终端:专门为开发人员设计的,用于实现人机交互的一种方式。
· 在Node.js环境中执行JavaScript代码:
(1)打开终端;(2)输入node 要执行的js文件文件名,要先跳转到该文件路径下(cd 路径),或者直接在文件目录下右键powershell执行
·fs文件系统模块:是Node.js官方提供的、用来操作文件的模块。
在JavaScript中导入:const fs=require(‘fs’)
· 读取指定文件中的内容:
· 向指定的文件中写入内容:
· path路径模块:是Node.js 官方提供的,用来处理路径的模块。先导入:const path=require(‘path’)
·路径拼接优化问题:path.join()
· 获取路径的文件名:path.basename()
2022.4.17
· http模块:是Node.js 官方提供的、用来创建web服务器的模块。通过http模块提供的http.createServer()方法,就能方便把一台普通的电脑,变成一台Web服务器,从而对外提供Web资源服务。
导入:const http=require(‘http’)
· IP地址:互联网上每台计算机的唯一地址。
· 域名地址:由字符型和地方方案组成,与IP地址是一一对应关系。127.0.0.1对应的域名是localhost
· 域名服务器:是提供IP地址和域名之间的转换服务的服务器。
·端口号:每个Web服务都对应一个唯一的端口号。每个端口号不能同时被多个web服务占用。url中的80端口可以被省略。
· 创建最基本的web服务器:
(1)导入http模块;(2)创建web服务器实例,**const server = http.createServer()**;(3)为服务器实例绑定request事件,监听客户端请求;(4)启动服务器。
· 解决中文乱码问题:res.end()
· 根据不同的url响应不同的html内容:(1)获取请求到url地址;(2)设置默认的响应内容为404 Not found;(3)判断用户请求是是否为/或/index.html首页;(4)判断用户请求的是否为/about.html关于页面;(5)设置Content-Type响应头,防止中文乱码;(6)使用res.end()把内容响应给客户端
· Node.js中模块的分类:内置模块、自定义模块、第三方模块(需下载)
· 模块作用域:和函数作用域类似,在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制,即。。。,防止全局变量污染的问题。
· 向外共享模块作用域中的成员:
(1)module对象:每个.js自定义模块都有module对象,它里面存储了和当前模块有关的信息
(2)module.exports对象:用该对象,将模块内的成员共享出去,供外界使用。外界用require()方法导入自定义模块,得到的就是module.exports所指向的对象。
-》exports和module.exports的使用误区:
· CommonJS模块化规范:
· 包:Node.js中的第三方模块。全球最大的包共享平台(搜索所需):https://www.npmjs.com/;服务器(下载):https://registry.npmjs.org/
· 格式化时间的方法:
· 在项目中安装包的命令:
npm install 包的完整名称 |
· 安装指定版本的包:默认情况下,npm install 会自动安装最新版本的包,
npm i 包@版本号 |
· 包管理配置文件:
· 解决下包速度慢的问题:
· 包的分类:
(1)项目包:被安装到项目的node_modules目录中的包。又分开发依赖包、核心依赖包
(2)全局包:npm install -g ;
(3)i5ting_toc:是一个可以把md文件转化为html页面的小工具。npm install -g i5ting_toc
· 开发属于自己的包:
(1)需要实现的功能;
(2)初始化包的基本结构:①新建itheima-tools文件夹,作为包的根目录;②在文件夹中,新建以下三个文件:package.json(包管理配置文件);index.js(包的入口文件);README.md(包的说明文档)
(3)初始化package.json:
(4)在index.js中定义格式化时间的方法&main属性
(6)在index.js中定义还原HTML方法:
(7)将不同功能进行模块化拆分:
(8)编写包的说明文档:
· 发布包:
· 模块的加载机制:模块在第一次加载后会被缓存,后续执行会优先从缓存中加载;内置模块的加载优先级最高;在加载自定义模块时,如果没有指定./或../开头的路径标识符,则node会把他当作内置模块或第三方模块进行加载
2022.4.18
· Express:是基于Node,npm的第三方包,快速、开放、极简的Web开发框架。
使用它可以方便、快速的创建Web网站的服务器或API接口的服务器。
· Express基本使用:
(1)安装:npm i express@4.17.1
(2)创建基本Web服务器:
(3)监听Get请求:
(4)监听POST请求:
(5)把内容响应给客户端:
(6)获取URL中携带的查询参数:
(7)获取URL中获取的动态参数:
· Express-托管静态资源:
(1)express.static():
(2)托管多个静态资源目录:
(3)挂载路径前缀:
· Express-nodemon:用来监听项目文件的变动,当代码修改后,nodemon会自动给帮我们重启项目,极大方便了开发和测试。
(1)安装:npm i -g nodemon
(2)使用:nodemon app.js
· Express-路由:指的是客户端的请求与服务器处理函数之间的映射关系。
(1)分三部分:请求的类型、请求的URL地址、处理函数:app.METHOD(PATH,HANDLER)
(2)路由的匹配过程:将路由挂到app上
(3)模块化路由:将路由抽离为单独模块
· Express-中间件:中间处理过程
(1)中间件格式:
(2)next函数的作用:
(3)定义中间件函数:
(4)全局生效的中间件:
(5)中间件的作用:
(6)定义多个全局中间件:
(7)局部生效的中间件:
(8)定义多个局部中间件:
(9)中间件的五个注意事项:
(10)中间件的分类:应用级别的中间件、路由基本的、错误级别的、Express内置的、第三方的
(11)自定义中间件:
· 使用Express写接口:
(1)创建基本的服务器:
(2)创建API路由模块:
(3)编写Get接口:
(4)编写Post接口:
(5)基于cors解决跨域接口问题:
· Express-CORS跨域资源共享
(1)cors响应头部-Access-Control-Allow-Origin
(2)cors响应头部-Access-Control-Allow-Headers
(3)cors响应头部-Access-Control-Allow-Methods
(4)简单请求:
(5)预检请求:
2022.4.19
· 常见数据库:
·传统型数据库的数据组织结构:数据库、数据表、数据行、字段
·MySQL:MySQL Server、MySQL Workbench
· SQL:是结构化查询语言,专门用来访问和处理数据库的编程语言。能够让我们以编程的形式,操作数据库里面的数据库。
(1)SELECT语句:users表中选取所有的列,用符号*取代列的名称
(2)INSERT INTO语句:
(3)UPDATE语句:
(4)DELETE语句:
(6)and和or运算符:
(7)ORDER BY子句:
(8)COUNT(*)函数:
· Web开发模式:
-》服务端渲染的web开发模式:服务器发送给客户端的HTML页面,是在服务器通过字符串的拼接,动态生成的。
-》前后端分离的web开发模式:前后端分离,依赖于Ajax技术,就是后端只负责提供API接口,前端使用AJAX调用接口的开发模式
· 身份认证:通过一定手段,完成对用户身份的确认。
-》服务端渲染用Session认证机制
-》前后端分离用JWT认证机制
· Session认证机制:需要配合Cookie
-》HTTP协议的无状态性:服务器不会主动保留每次HTTP请求的状态。
-》Cookie:是存储在用户浏览器中的一段不超过4KB的字符串。不具有安全性
-》配置express-session中间件:npm i express-session
-》存数据:
-》取数据:
-》清空session:只会清空当前用户的session,不会清空所有用户的session
· JWT:最流行的跨域认证解决方案
-》工作原理:
-》组成部分:头部、有效荷载、签名
-》使用方式:
-》在express中使用JWT(在express中生成token):
npm下载包时总报错:
1.打开cmd,输入以下命令,先设置代理:
npm config set proxy= |
2.然后使用淘宝镜像:
npm config set registry https://registry.npm.taobao.org |
3.再下载包