node学习笔记
Node.js :基于Chrome浏览器的v8引擎(js解析引擎)的JavaScript运行环境
Nodejs是后端运行环境,dom,bom是浏览器的内置api,无法调用
cmd Tab键快速补充路径
终端命令
d: 切换盘符
cd 进入文件夹
fs文件系统模块
Const fs=require(“fs”) 导入fs模块,操作文件
fs.readFile(“path”,[编码方式],callback)
Path路径模块
导入path
Path.jion() 将说个路径拼接为完整的路径字符串
http模块 创建web服务器
导入http
http.creatServer()
req 请求对象 ,包含了与客户端相关的数据和属性
req.url 是客户端请求的url地址
Req.method 是客户端的请求类型
res 相应对象,包含了与服务器相关的属性
res.end() 向客户端响应内容
Res.setHeader("Content-Type","text/html; charset=utf-8") 设置Conten-type响应头,解决中文乱码的问题
终端命令:ctrl+C关闭服务器
服务器上安装了web服务器软件
模块的分类:1. 内置模块(fs、path等)
- 自定义模块(用户自定义的.js文件)
- 第三方 (第三方开发,需要下载),又称为包
加载模块require()方法,会执行被加载模块中的代码
外界用require()方法导入自定义模块,得到的永远是module.exports所指向的对象{}
模块作用域:在自定义模块中的定义的变量和方法,只能在当前模块中使用。
可防止全局变量污染
每个.js自定义模块中有一个module对象,存储了与当前模块相关的信息
在自定义模块中,可以使用module.exports对象向外共享成员 module.exports.uname=”aa”
exports和module.exports指向同一个对象,可简写为exports
npm与包
npm:nodejs管理包的工具
包会下载在node_Module文件夹中,第三方过大,不利于项目成员共享项目源码,故上传至github时应将node_Module文件夹添加至.gitignore.
Pack.json记录包信息 dependencies节点中记录用npm install 安装了哪些包
终端命令:npm init -y 快速创建pack.json,需在英文目录中
npm i moment 安装moment包
npm i 安装pack.json中dependencies中的包
npm unistall 卸载指定包
npm i 包名 -D 安装到devDependencies,该包仅在开发时使用
包分为全局包和项目包
模块加载机制:1.优先从缓存中加载。模块在第一次加载后会被缓存,多次调用require方 法不会执行模块中的代码多次
- 内置模块的加载优先级最高
- 自定义模块加载需以./开头
Express 基于node.js的web框架
在项目所处目录下安装express npm i express@4.17.1
Express 导入,创建web服务器实例,监听get/post请求,使用res.send()像客户端响应对象,启动服务器(listen)
通过req.query可以获取客户端发送的查询参数,默认为空对象 /name=zhangsan
通过req.params可以获取动态参数 /:id
app.use(express.static(“./文件夹”)),托管静态资源,将指定文件夹中的文件对外开放,访问路径不包含文件夹名
app.use(“/abc”,express.static(“./文件夹”))挂载路径前缀,访问路径前需要加abc
Nodemon监听node.js文件的变动,自动重启服务器
Express中的路由:客户端请求和服务器处理函数的映射 app.get(path,function) 挂载路由
路由模块化,将路由挂载到express.Router()对象上,不挂载到web实例,单独的js文件
const express=require(“express”);
const router=express.Router();
router.get(“/”,(req,res)=>{ res.send(“get user list”) });
module.exports=router;
在主文件注册路由模块
导入路由模块,注册路由模块 const router=require(“./..js”) app.use(router)
app.use()注册全局中间件
中间件,客户请求到达服务器,触发中间件,再通过next()转向下一个中间件或者路由
中间件分类:应用级(挂载在app上) 路由级 错误级
Web开发模式 服务端渲染:利于seo 前后端分离
http无状态限制:客户端发送的每次请求,服务端不能保留每次状态
Cookies是存储在用户浏览器的一般不超过4kb的字符串。由名称,值和可选属性组成
自动发送,域名独立,过期时限。
Session:cookie+服务端认证
安装npm i express-session 导入session app.use(session({})) 路由中处理函数可以通过req.session 存储信息
req.session.destroy() 清空session
JWT认证机制:跨域认证解决方案
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律