Express 学习

学习链接---https://juejin.cn/post/7629027522159738890

  • 定义:是一个基于node.js开发的web端框架

  • 安装:npm install express (安装前执行npm init -y 初始化package.json文件)

  • 运行:使用Nodejs运行框架 node app.js;

  • 路由

    • 路由是指定义应用程序端点(URI)及如何响应客户端请求的方法。在 Express 中,路由使用方法如 app.get(), app.post(), app.put(), 和 app.delete() 等,分别对应 HTTP 的请求方法。

    • 获取请求报文参数: req.params:路由参数 req.query:get查询参数 req.body:post请求体参数

  • 中间件Middleware

    • 中间件是一种函数,它可以访问请求对象(req)、响应对象(res)和应用程序的中间件堆栈中的下一个中间件函数。

    • 中间件函数通常用于执行以下任务:执行任何代码、对请求和响应对象进行更改、结束请求-响应循环、调用堆栈中的下一个中间件函数。

    • 全局中间件:给每个路由都添加一定的处理 app.use((req,res,next)=>{ console.log('1111); next()})

    • 特定路由中间件: 先定义一个中间件函数 const middleware = (req , res , next) => { console.log('中间件做的操作')}-------然后将他传入特定路由: app.get('middleware',middleware,(req,res)={res.send('Hello from /middleware'});

    • 静态资源中间件: app.use (express.static('public'))------express.static() 中间件将 public 文件夹下的文件提供给客户端----有啥用:让客户端可以直接用过静态文件路径访问静态资源,不用写路由接口,并且直接返回的就是图片、css、js、html等源文件,而路由方式会返回json数据还要进行进一步处理;

  • 防盗链

    • 防盗链是一种防止他人通过直接访问 URL 来获取服务器资源的技术,通常用于防止未授权的访问。在 Express 中,可以通过检查请求头中的 Referer (该字段是为了标识从哪个页面跳转过来的)字段来实现简单的防盗链功能。

    • 防盗链中间件代码示例:

      app.use('/images', (req, res, next) => {

      const referer = req.get('Referer');

      if (!referer || !referer.startsWith('http://lyqtest.com')) {

      return res.status(403).send('Forbidden');

      }

      next();

      });

  • 模板引擎支持

    • 模板引擎是一种将数据与预定义模板结合的工具,用于生成最终输出内容的软件组件。

    • 常用模板引擎:

      • Jinja2:Jinja2 是一个基于 Python 的模板引擎,广泛用于 Web 开发。它具有简洁的语法和强大的功能,支持模板继承、条件语句、循环等功能。

      • Handlebars.js:Handlebars.js 是一个 JavaScript 模板引擎,可以在客户端和服务器端使用。它使用简单的标记语法,易于学习和使用。

      • Mustache:Mustache 是一个跨语言的模板引擎,支持多种编程语言。它的语法简单,易于理解,可以在多种环境中使用。

      • EJS (Embedded JavaScript):EJS 是一个基于 JavaScript 的模板引擎,可以与 Node.js 搭配使用。它允许在模板中嵌入 JavaScript 代码,具有灵活的功能和性能。

  • 验证api接口可使用apifox来验证,网页只能验证get请求

  • node工具--Nodemon----修改代码后自动重启服务

    • npm install --save--dev nodemon

    • 可对nodemon进行配置----创建nodemon.json

  • 实战:做一个cli工具:https://juejin.cn/post/7629219272581152778

  • 实战:做一个实时聊天室: 使用websocket:https://juejin.cn/post/7629183326779326491

相关推荐
其实防守也摸鱼18 分钟前
渗透--损坏的对象级别鉴权漏洞(Broken Object Level Authorization, BOLA)
大数据·网络·数据库·学习·tcp/ip·安全·安全威胁分析
铅笔侠_小龙虾43 分钟前
Rust 学习(2)-变量、常量与 shadowing
学习·算法·rust
it小生01011 小时前
从底层思维到高效行动,顶尖人才进阶核心修炼指南
学习·学习方法
恣逍信点1 小时前
《凌微经》通俗解读——哲学第一因
学习·职场和发展·创业创新·学习方法·业界资讯·交友·哲学
red_redemption2 小时前
自由学习记录(207)
学习
AOwhisky2 小时前
Python 学习笔记(第四期)——字符串:格式化、操作与文本处理——核心知识点自测与详解
开发语言·笔记·python·学习·列表·元组·字典
大家的林语冰2 小时前
✌️ Deno 2.9 来了,ESM 直接导入 CSS,甚至能开发桌面应用?!
前端·javascript·node.js
光学补偿2 小时前
微服务学习 --- Spring Cloud概述
学习·spring cloud·微服务
AOwhisky3 小时前
Python 学习笔记(第六期)——函数:定义、参数传递与作用域
笔记·python·学习·云原生·运维开发·函数·参数传递
网小鱼的学习笔记3 小时前
Agent学习001
学习·迁移学习