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执行

· 终端中的快捷键:LNRMoF.png

·fs文件系统模块:是Node.js官方提供的、用来操作文件的模块。

在JavaScript中导入:const fs=require(‘fs’)

· 读取指定文件中的内容:

(1)fs.readFile()语法:LNR1JJ.pngLNR8zR.pngLNR3W9.png

· 向指定的文件中写入内容:

(1)fs.writeFile()语法:LNRli4.png

LNRYsx.png

· fs-处理路径问题:LNRtL6.png

· path路径模块:是Node.js 官方提供的,用来处理路径的模块。先导入:const path=require(‘path’)

·路径拼接优化问题:path.join()

LUrbtA.png

LUrqfI.png

· 获取路径的文件名:path.basename()

LUr2f1.png

LUrgYR.png

· 获取路径终端文件扩展名:path.extname()LUsKAJ.png

LUrOpt.png

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)启动服务器。

LUrX1P.png

LUrj6f.png

· req请求对象:LUrznS.png

· res响应对象:LUsS0g.png

· 解决中文乱码问题:res.end()

· 根据不同的url响应不同的html内容:(1)获取请求到url地址;(2)设置默认的响应内容为404 Not found;(3)判断用户请求是是否为/或/index.html首页;(4)判断用户请求的是否为/about.html关于页面;(5)设置Content-Type响应头,防止中文乱码;(6)使用res.end()把内容响应给客户端

LUsp7Q.png

· Node.js中模块的分类:内置模块、自定义模块、第三方模块(需下载)

· 加载模块:LUsCkj.png

· 模块作用域:和函数作用域类似,在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制,即。。。,防止全局变量污染的问题。

· 向外共享模块作用域中的成员:

(1)module对象:每个.js自定义模块都有module对象,它里面存储了和当前模块有关的信息

(2)module.exports对象:用该对象,将模块内的成员共享出去,供外界使用。外界用require()方法导入自定义模块,得到的就是module.exports所指向的对象。LUsihn.png

(3)exports对象:LUsEcV.png

-》exports和module.exports的使用误区:LUsmBF.png

· CommonJS模块化规范:

LUsn74.png

· 包:Node.js中的第三方模块。全球最大的包共享平台(搜索所需):https://www.npmjs.com/;服务器(下载):https://registry.npmjs.org/

62cd2393d331068770783b943b6b6ce9.png

· 格式化时间的方法:080dd128e2add44295adfdde86ae693b.png

b02eb983b42ecbe57432668600e2aade.png

d0d85609246becda44c154f777bac311.png

· 在项目中安装包的命令:

npm install 包的完整名称
npm i 完整的包名称

153b93eda861087343494c4f2620f1aa.png

· 安装指定版本的包:默认情况下,npm install 会自动安装最新版本的包,

npm i 包@版本号

· 包管理配置文件:91d4b78ad0ec5b26c24ac679ab1e7f1e.png03dd397a5625f7293b0af4021928abb3.png68475c3febc9f0d374ad2a96b63161c7.pngfad6dffa72c3ef221ad3f07bdc05b31b.png5e2cec5c93e9b67a407ba56488dd42b9.png1e30dc2a01fc3fce255a5e4b15fdba08.png1df9b88d1828de2580d3829bc6869a73.png

· 解决下包速度慢的问题:56b1fd9d0ff378a1cbbb04eb6f2be860.png072c416afbf6e2bebaeec2ad8a426283.png7a59af9c70f1989dcd0c48167404b1a0.png

· 包的分类:

(1)项目包:被安装到项目的node_modules目录中的包。又分开发依赖包、核心依赖包7a2628a67f59d1b5fddb0528c8201a20.png

(2)全局包:npm install -g ;6d52b5b5716921938a54ec5d65f169e4.png

(3)i5ting_toc:是一个可以把md文件转化为html页面的小工具。npm install -g i5ting_toc0bb75b76ae4b4e0891b34954d60e9dc3.png

64a1a6fe25afc2e11a713048fed87151.png

· 开发属于自己的包:

(1)需要实现的功能;

(2)初始化包的基本结构:①新建itheima-tools文件夹,作为包的根目录;②在文件夹中,新建以下三个文件:package.json(包管理配置文件);index.js(包的入口文件);README.md(包的说明文档)

(3)初始化package.json:05b5f1149431e0308012f989d77ab133.png

(4)在index.js中定义格式化时间的方法&main属性8293dc2f90e2cdddea2a2bd5dd92c95e.png

(5)在index.js中定义转义HTML方法:e4df887ccd060b20b062a0bdf8bc6c47.png

(6)在index.js中定义还原HTML方法:7c4a6d788f28b342431462a01a285f2d.png

(7)将不同功能进行模块化拆分:f74bed0b9e07675f5ae506a583e8ee86.png

(8)编写包的说明文档:1d19c0cba491d4c211ddd3b22eb3687c.png

· 发布包:6ee1a99412132a1e1edda444c3ecf7ab.png8c4ef52f17669fb44a237735f0ae8e75.pngdbb1d15481fb50993379b1619d969a21.png165f7e1fdec5aa294474a2c6a144e0c4.png

· 模块的加载机制:模块在第一次加载后会被缓存,后续执行会优先从缓存中加载;内置模块的加载优先级最高;在加载自定义模块时,如果没有指定./或../开头的路径标识符,则node会把他当作内置模块或第三方模块进行加载ba8b6cdd0d76b36f18ed8d27f96cc364.png71561545a781aabfdcb33f4e2ff3a009.png

d794f75ff1350f155e2d0e9905b852ce.png

2022.4.18

· Express:是基于Node,npm的第三方包,快速、开放、极简的Web开发框架。

使用它可以方便、快速的创建Web网站的服务器或API接口的服务器。

http://www.expressjs.com.cn/

· Express基本使用:

(1)安装:npm i express@4.17.1

(2)创建基本Web服务器:089fdfe5c46fb9c50eec07acf20c4337.png

(3)监听Get请求:b65e78709d44430e2421ec67e9873041.png

(4)监听POST请求:e4c427604275761830010b481f277764.png

(5)把内容响应给客户端:5fdca1b3226346ad4f1eeb04e39dc3ec.png

(6)获取URL中携带的查询参数:48ba71949e419be5df90535ff65ab33e.png

(7)获取URL中获取的动态参数:684e4c45bc1abf1f975b40c75a19ed25.png

· Express-托管静态资源:

(1)express.static():fd2fb59364dfdcf1fe959fa6903017b8.png

(2)托管多个静态资源目录:f11c15057f37871938ffd338255f43d5.png

(3)挂载路径前缀:8cda7e218fdd8b1ac7a43b58d86ed275.png

· Express-nodemon:用来监听项目文件的变动,当代码修改后,nodemon会自动给帮我们重启项目,极大方便了开发和测试。

(1)安装:npm i -g nodemon

(2)使用:nodemon app.js

· Express-路由:指的是客户端的请求与服务器处理函数之间的映射关系。dc04d450f55c2889037573b35497c127.png

e4701f15ebf576a91778e833a5c71861.png(1)分三部分:请求的类型、请求的URL地址、处理函数:app.METHOD(PATH,HANDLER)

(2)路由的匹配过程:将路由挂到app上0bf184aa7ffb1cea3a86bc34e8c46441.png

(3)模块化路由:将路由抽离为单独模块14a4640da610bce090ed6ef4e4e5eb37.pngee700a19513274ddd17e34828b4a7b0e.png30353f78c76db949a1f612f808944251.pngdea1a05904ab17a7f503f2d93e85d18e.png

· Express-中间件:中间处理过程fbc6245455c2e3e0d42625ea71e33c73.png

(1)中间件格式:f723addada2a8b0f7989a3c89ff7adb5.png

(2)next函数的作用:394b787949fa41945728d006643490df.png

(3)定义中间件函数:5cbcbd204447b0d50620d07d52c9da5b.png

(4)全局生效的中间件:54e5b677fab47aa210ef0f0baf688ae6.pngb6909313df93f7aea5a54a7e163be1ca.png

(5)中间件的作用:570e34f88fa01b047d69123a886891fe.png

(6)定义多个全局中间件:cc4e40546b62e2009aa96f371ee05b75.png

(7)局部生效的中间件:36283b0ede61ea15e70f97e9cbe4430c.png

(8)定义多个局部中间件:7a4716fd0dd6dece08437d2f2e17d867.png

(9)中间件的五个注意事项:1ac22ab1c7399e88fc85ef383960c826.png

(10)中间件的分类:应用级别的中间件、路由基本的、错误级别的、Express内置的、第三方的d8909da5437cb5fcebb65f28ed05ca9b.pngdd753f72a4c6a93debd0a27ace137966.pngfbbbe0f2157ce9561af31a4f3a524d73.png926c9d3fd8d702502dd9ba43fa31c6d4.png25481474e3c531680ee52ded467cc547.png

(11)自定义中间件:2b9562d82a8255f9d56606e49b0a17a9.png

· 使用Express写接口:

(1)创建基本的服务器:0e062af450c167cbb687b89c5388ba20.png

(2)创建API路由模块:2686fcf9105855260d33ce71f699fe96.png

(3)编写Get接口:2d24dd8fc61a75a6f17ca97502e79a80.png

(4)编写Post接口:0e22dc238a33eb68d1dcd794a8bfee83.png

(5)基于cors解决跨域接口问题:7564225308a57e9c97b639c7f40ad607.pnga657a9cdec50e27928879536893e3547.png

· Express-CORS跨域资源共享fad6b366c95e1d6831770a8d6af1b529.png

79ad2550067575ede8e9342127d7341f.png

(1)cors响应头部-Access-Control-Allow-Origin158336a6a5d53bb681e9a6c46d024e2c.png

(2)cors响应头部-Access-Control-Allow-Headersf460278c46a8159721b46c199c054adc.png

(3)cors响应头部-Access-Control-Allow-Methodsa19cbbebb1e581783b8d553c359d0d19.png

(4)简单请求:ceebe8115e542a599c2662152ebf6987.png

(5)预检请求:5037c0c8cc6da2f482be4095eddf577b.png3c99fcaebecf0f6c06311908b85a62d5.png

(6)JSONP接口:77d81fe79315cf11d76b79c6d5e252c8.pngcf9c8ae503154ddcddc1cd1f35efb634.png90fe99e449b5b7aadb41de30ac921fc5.pngd29257f744be289052c7efe89eae4e8a.png

50b510a9e8d1fce69a5bf23787f9b50e.png

2022.4.19

· 常见数据库:43a62a93ff3a79f916bb3ddd022e9da1.png

·传统型数据库的数据组织结构:数据库、数据表、数据行、字段

·MySQL:MySQL Server、MySQL Workbench

· SQL:是结构化查询语言,专门用来访问和处理数据库的编程语言。能够让我们以编程的形式,操作数据库里面的数据库。

(1)SELECT语句:users表中选取所有的列,用符号*取代列的名称ceaa3cfaf1f7016d214d5bd9946edbf4.pngff9d4a5373f65184309bf283d81a255f.png

(2)INSERT INTO语句:6eaf600d7ac090173593b75bd02b52b6.pngae604c6b3ca3f0be5066e77878094680.png

(3)UPDATE语句:623b7be03c88b3465d5392de6977157d.png943a4a49077649cdb4a86aba1c60dabb.png

(4)DELETE语句:39b1f9966e7b3cbef34606f8c0185158.pngc20f86474d300a26bc173c93d310c600.png

(5)WHERE子句:afea23f7de00d65bfe0718ad950bb3ce.pngfd1a299cb62594c3d6e9c5b1103a2b72.pnga8c7f2899d2d380a266d90c6b24d1fca.png

(6)and和or运算符:d59830fd38034a8639f6f320bbb147a3.png9ccad7531b60ee3643ac0e9d1b9ffb04.pngef793f25ac6525a6aa0e7717f771416a.png

(7)ORDER BY子句:b670b6d62e24f7fe842e450f52a9a266.png27047edde8c3bf89acdadf689e6c0730.png55fd2d26e2906073343a996aad54dcc4.pngc7e427dbbffa8c6cf985d401a593b794.png

(8)COUNT(*)函数:25b1dc4f7ec8ff202f32c5f9839a4138.png2f6306d3da07e1b0494067911d46d2d7.png

-》AS关键字:0bfe310e6aad2a93380176b555005968.png

· Web开发模式:

-》服务端渲染的web开发模式:服务器发送给客户端的HTML页面,是在服务器通过字符串的拼接,动态生成的。

-》前后端分离的web开发模式:前后端分离,依赖于Ajax技术,就是后端只负责提供API接口,前端使用AJAX调用接口的开发模式

· 身份认证:通过一定手段,完成对用户身份的确认。

-》服务端渲染用Session认证机制

-》前后端分离用JWT认证机制

· Session认证机制:需要配合Cookieb8daac6540bbed344e8a8e0401fc939b.png

-》HTTP协议的无状态性:服务器不会主动保留每次HTTP请求的状态。8e8b64193852713b18516d1f2da93236.png6b52968202f29766d98dde2739a191ab.png

-》Cookie:是存储在用户浏览器中的一段不超过4KB的字符串。不具有安全性e26b793813a87ce1880c7fa56fdfe232.pngd271fb1a21b62af582bb4e67ce860110.pngca2fee0f4dbfb1c725c23bfde38a25c1.png

-》Session的工作原理:dd2e51c9cba8d95e15da49444bb6709b.png

-》配置express-session中间件:npm i express-sessiona8e34cc29adf580ca1b3ebb18cb0cb5b.png

-》存数据:8faf6f2141a646b428895991ee28968e.png

-》取数据:cca4434abe200a922e1c3b34fba6a316.png

-》清空session:只会清空当前用户的session,不会清空所有用户的session53aa9188ef6c291bd0eedad9b75c9046.png

· JWT:最流行的跨域认证解决方案

-》工作原理:7d7526a4e777bd948a48877f449b6101.png

-》组成部分:头部、有效荷载、签名8accee90241988ded517cbfa2adb92d4.png0319c865889cf482cb3ccd932fcd9658.png

-》使用方式:8db17c7c8bf1bf318cd110d008309adc.png

-》在express中使用JWT(在express中生成token):3546c5feff80ab3463a68ee992ab8f85.pngcf7db831a292c7097390c3cc78b03a80.pnged62c69bafd022afecd1fc030197e565.png100265004b6f5a7b194c2ce749e126ab.pnga7b776c9c0d93077c4298ebc9d94980c.png3dd2a05e80c99ff577fb424f5fc661af.png1a6358464f81f1c1466c7c7666bae787.png

npm下载包时总报错:

1.打开cmd,输入以下命令,先设置代理:

npm config set proxy=

2.然后使用淘宝镜像:

npm config set registry https://registry.npm.taobao.org

3.再下载包