DAPP开发【10】express.js的使用

Express.js 是一种流行、轻量级的开源 Web 应用程序框架,用于开发基于 Node.js 的服务器端 Web 应用程序。它提供了强大的功能集,适用于 Web 和移动应用程序。Express.js 旨在支持单页、多页和混合式 Web 应用程序的开发。Express.js 提供了广泛的功能,包括路由、中间件、模板等,用于创建 Web 应用程序。它易于学习,非常适合构建 RESTful API、Web 应用程序和 Web 服务。Express.js 广泛用于各种行业的 Web 应用程序开发,包括医疗保健、电子商务、金融和社交媒体等。

node.js可以用来写后端,使用express.js框架

1·新建文件夹

mkdir expressLearn 

2·进入文件夹

cd expressLearn 

3·初始化

npm init -y

生成package.josn
小技巧
package.josn中有
在这里插入图片描述
npm run test
在这里插入图片描述
npm run deploy = npx hardhat deploy --network rinkeby

4·安装express(局部安装,安装项目下)

npm install express --save

npm install express --save 命令会将 express 模块安装到当前项目的本地 node_modules 目录中,并将其添加到项目的 dependencies 中。这是一种局部安装方式,只有在当前项目中才能使用安装的模块。

如果要全局安装 express,可以使用 npm install -g express 命令。全局安装会将模块安装到全局 node_modules 目录中,以便在命令行中使用 express 命令创建应用程序。但是,在实际开发中,全局安装并不是推荐的做法,因为它可能导致版本冲突和依赖问题。
5·新建app.js文件

const express = require('express')
const app = express()

app.get('/', function (req, res) {
  res.send('Hello World')
})

app.listen(3000)

这段代码使用 Node.js 中的 Express 框架创建了一个简单的 HTTP 服务器。让我来解释一下代码的每个部分:

const express = require('express'): 这一行引入了 Express 框架,将其赋值给变量 express。

const app = express(): 创建了一个 Express 应用程序实例,并将其赋值给变量 app。通过调用 express() 函数,我们创建了一个 Express 应用程序。

app.get('/', function (req, res) { ... }): 这一行指定了一个针对根路径 / 的 HTTP GET 请求的处理函数。当用户在浏览器中访问服务器的根路径时,Express 将执行这个处理函数。

res.send('Hello World'): 在处理函数中,我们使用 res.send() 方法向客户端发送了一个简单的字符串响应 "Hello World"。

app.listen(3000): 最后一行启动了一个 HTTP 服务器,监听在端口 3000 上。这意味着当你在浏览器中输入 http://localhost:3000 时,Express 应用程序将会响应请求并发送 "Hello World" 到浏览器。

6·命令行运行

node app.js

在这里插入图片描述

添加功能

const express = require('express')
const app = express()

app.get('/', function (req, res) {
  res.send('Hello World')
})


const products = [
    {
        "name":"Television",
        "price": 2000,
        "brand":"Xiaomi"
    },
    {
        "name":"Laptop",
        "price":5000,
        "brand":"Lenovo"
    }
]
 
app.get('/products/:brand', (req, res)=> {
    const brand = req.params.brand
    console.log(brand)
    // const filteredProducts = products.filter( (product)=>{
    //     return product.brand === brand
    // })
    const filteredProducts = products.filter(product=>product.brand === brand)
    res.send(filteredProducts)
})
const port = 3000
app.listen(port,()=>{
    console.log(`Server is running on ${port}...`)
})



命令行运行

node app.js

http://localhost:3000/products/Xiaomi

中间件
中间件是一种软件,用于在不同的应用程序之间传递数据和消息,以便它们可以相互通信。中间件通常用于实现不同的应用程序之间的集成,以便它们可以共享数据和服务。中间件可以作为基础设施和应用程序之间的桥梁,从而提高应用程序的互操作性和可扩展性。常见的中间件包括消息队列、Web服务器、RPC框架、缓存系统等。


app.use(requestUrlLogger);

app.get('/', function (req, res) {
  res.send('Hello World')
})

上传数据

const express = require('express')
const app = express()

const requestUrlLogger = (req, res, next)=>{
    console.log("url is :",req.url);
    next();
}

app.use(requestUrlLogger);
app.use(express.json())//post获取数据时使用

app.get('/', function (req, res) {
  res.send('Hello World')
})


const products = [
    {
        "name":"Television",
        "price": 2000,
        "brand":"Xiaomi"
    },
    {
        "name":"Laptop",
        "price":5000,
        "brand":"Lenovo"
    }
]
 
app.get('/products/:brand', (req, res)=> {
    const brand = req.params.brand
    // const filteredProducts = products.filter( (product)=>{
    //     return product.brand === brand
    // })
    const filteredProducts = products.filter(product=>product.brand === brand)
    res.send(filteredProducts)
})


const port = 3000
app.listen(port,()=>{
    console.log(`Server is running on ${port}...`)
})


app.post('/products',(req,res)=>{
    const name = req.body.name;
    const price = req.body.price;
    const brand = req.body.brand;

    products.push({name,price,brand});//键:值,名字一样可以只写一个

    res.json({
        "message":"New product created",
        "data":products
    })
})



postman和apipost
Postman和APIpost都是API测试工具,具有类似的功能,但使用方式和界面略有不同。

Postman是一款常用的API调试工具,可以快速构建、测试和文档化API。它支持多种HTTP请求类型,例如GET、POST、PUT、DELETE等,还可以设置请求头、请求参数和请求体等。Postman还可以对API进行自动化测试和集成测试,支持断言、数据驱动和测试报告等功能。同时,Postman还提供了丰富的插件和扩展,可以方便地集成到开发工作流中。

APIpost是一款在线API测试工具,基于Web界面操作,无需安装任何软件。它可以通过URL、HEAD、GET、POST等多种方式发送HTTP请求,并可以设置请求头、请求参数和请求体等。APIpost还支持Mock API,可以根据API文档自动生成伪数据,并支持API文档自动生成和分享。APIpost还提供了多种主题和语言版本,可以满足不同用户的需求。

总的来说,Postman更适合用于本地开发和测试,而APIpost则更适合用于在线协作和共享。使用哪一款工具,可以根据自己的实际需求来选择。Postman和APIpost都是API测试工具,具有类似的功能,但使用方式和界面略有不同。

Postman是一款常用的API调试工具,可以快速构建、测试和文档化API。它支持多种HTTP请求类型,例如GET、POST、PUT、DELETE等,还可以设置请求头、请求参数和请求体等。Postman还可以对API进行自动化测试和集成测试,支持断言、数据驱动和测试报告等功能。同时,Postman还提供了丰富的插件和扩展,可以方便地集成到开发工作流中。

APIpost是一款在线API测试工具,基于Web界面操作,无需安装任何软件。它可以通过URL、HEAD、GET、POST等多种方式发送HTTP请求,并可以设置请求头、请求参数和请求体等。APIpost还支持Mock API,可以根据API文档自动生成伪数据,并支持API文档自动生成和分享。APIpost还提供了多种主题和语言版本,可以满足不同用户的需求。

总的来说,Postman更适合用于本地开发和测试,而APIpost则更适合用于在线协作和共享。使用哪一款工具,可以根据自己的实际需求来选择。

Postman
在这里插入图片描述

模版引擎
pug和ejs

Pug (以前称为Jade) 是一种模板引擎,它使用缩进和简洁的语法来生成HTML。它允许使用变量、逻辑语句、迭代器、函数等功能,使得编写HTML模板更加方便快捷。

EJS (Embedded JavaScript) 是一种JavaScript模板引擎,它充分利用了JavaScript的强大功能,允许使用变量、逻辑语句、函数等功能来生成HTML。相比于Pug,EJS语法更加接近HTML,也更加灵活。

两种模板引擎都有各自的优点和适用场景。Pug适合于需要频繁更新HTML内容的大型应用程序,它可以减少HTML模板的代码量,使得维护更加便捷。而EJS则更适合于只需要做少量更新的应用程序,因为它的语法更加接近HTML,更容易阅读和理解。

https://pugjs.org/
在这里插入图片描述
1·安装pug
在这里插入图片描述
2·app.js
在这里插入图片描述
这是在 Node.js 应用程序中设置 Pug 模板引擎的语句。

第一行代码 app.set('view engine','pug') 指定了应用程序默认使用的模板引擎为 Pug。这样,在 res.render 中调用视图文件时,应用程序会自动使用 Pug 引擎来解析模板。

第二行代码 app.set('views','./views') 指定了存放视图文件的文件夹,这里是 ./views,也就是应用程序的根目录下的 views 文件夹。这个文件夹下的文件会被视为视图文件,可以通过 res.render 方法来渲染。这是在 Node.js 应用程序中设置 Pug 模板引擎的语句。

第一行代码 app.set('view engine','pug') 指定了应用程序默认使用的模板引擎为 Pug。这样,在 res.render 中调用视图文件时,应用程序会自动使用 Pug 引擎来解析模板。

第二行代码 app.set('views','./views') 指定了存放视图文件的文件夹,这里是 ./views,也就是应用程序的根目录下的 views 文件夹。这个文件夹下的文件会被视为视图文件,可以通过 res.render 方法来渲染。这是在 Node.js 应用程序中设置 Pug 模板引擎的语句。

第一行代码 app.set('view engine','pug') 指定了应用程序默认使用的模板引擎为 Pug。这样,在 res.render 中调用视图文件时,应用程序会自动使用 Pug 引擎来解析模板。

第二行代码 app.set('views','./views') 指定了存放视图文件的文件夹,这里是 ./views,也就是应用程序的根目录下的 views 文件夹。这个文件夹下的文件会被视为视图文件,可以通过 res.render 方法来渲染。

3·新建文件夹
views并在下面新建home.pug
在这里插入图片描述

3·home.js
在这里插入图片描述
4·app.js
在这里插入图片描述
5·node app.js
在这里插入图片描述

6·nodemon的使用
nodemon是一个Node.js开发的工具,可以帮助Node.js应用程序自动重新启动。它可以监视您的代码更改,并在更改发生时自动重启应用程序。

以下是使用nodemon的步骤:

  1. 全局安装nodemon:

    npm install -g nodemon
    
  2. 在项目目录运行nodemon:

    nodemon app.js
    

    其中,app.js是您的Node.js应用程序的入口文件。

  3. 现在,nodemon将监视您的代码更改。每当您修改代码并保存时,nodemon将自动重新启动应用程序。

    您还可以在运行nodemon时通过添加参数来添加其他配置选项,例如:

    nodemon --watch controllers --exec node app.js
    

    这将监视controllers文件夹的更改并在更改发生时重新启动应用程序。

希望这可以帮助您开始使用nodemon!nodemon是一个Node.js开发的工具,可以帮助Node.js应用程序自动重新启动。它可以监视您的代码更改,并在更改发生时自动重启应用程序。

以下是使用nodemon的步骤:

  1. 全局安装nodemon:

    npm install -g nodemon
    
  2. 在项目目录运行nodemon:

    nodemon app.js
    

    其中,app.js是您的Node.js应用程序的入口文件。

  3. 现在,nodemon将监视您的代码更改。每当您修改代码并保存时,nodemon将自动重新启动应用程序。

    您还可以在运行nodemon时通过添加参数来添加其他配置选项,例如:

    nodemon --watch controllers --exec node app.js
    

    这将监视controllers文件夹的更改并在更改发生时重新启动应用程序。

希望这可以帮助您开始使用nodemon!nodemon是一个Node.js开发的工具,可以帮助Node.js应用程序自动重新启动。它可以监视您的代码更改,并在更改发生时自动重启应用程序。

以下是使用nodemon的步骤:

  1. 全局安装nodemon:

    npm install -g nodemon
    
  2. 在项目目录运行nodemon:

    nodemon app.js
    

    其中,app.js是您的Node.js应用程序的入口文件。

  3. 现在,nodemon将监视您的代码更改。每当您修改代码并保存时,nodemon将自动重新启动应用程序。

    您还可以在运行nodemon时通过添加参数来添加其他配置选项,例如:

    nodemon --watch controllers --exec node app.js
    

    这将监视controllers文件夹的更改并在更改发生时重新启动应用程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/224608.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2022年第十一届数学建模国际赛小美赛A题翼龙如何飞行解题全过程文档及程序

2022年第十一届数学建模国际赛小美赛 A题 翼龙如何飞行 原题再现: 翼龙是翼龙目中一个已灭绝的飞行爬行动物分支。它们存在于中生代的大部分时期:从三叠纪晚期到白垩纪末期。翼龙是已知最早进化出动力飞行的脊椎动物。它们的翅膀是由皮肤、肌肉和其他组…

python学习之JSON数据处理在Python中的应用:从解析到生成

JSON文件是一种轻量级的数据交换格式,它采用了一种类似于JavaScript语法的结构,可以方便地在不同平台和编程语言之间进行数据交换。在Python中,我们可以使用内置的json模块来读取和写入JSON文件。 下面是一个简单的示例,展示了如…

【基于openGauss5.0.0简单使用DBMind】

基于openGauss5.0.0简单使用DBMind 一、环境说明二、初始化tpch测试数据三、使用DBMind索引推荐功能四、使用DBMind实现SQL优化功能 一、环境说明 虚拟机:virtualbox操作系统:openEuler 20.03 TLS数据库:openGauss-5.0.0DBMind:d…

短剧分销小程序/APP开发:开启短剧收益时代

今年,短剧火爆出圈,市场规模将达至200亿元至300亿元。国内全全平台付费短剧日充值金额为6000万元,短剧作为一种“快餐式”文化迅速爆火。 短剧契合了观众娱乐时间碎片化的发展趋势,相比于传统的电视剧,短剧节奏快、剧…

【链表Linked List】力扣-114 二叉树展开为链表

目录 题目描述 解题过程 官方题解 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应…

Android View的 getHeight 和 getMeasuredHeight 的区别

前言 先简单复习一下Android View 的 绘制顺序: 1、onMeasure(测量),先根据构造器传进来的LayoutParams(布局参数),测量view宽高。 2、onLayout(布局),再根…

Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像高速保存到电脑内存(C#)

Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像高速保存到电脑内存(C#) Baumer工业相机Baumer工业相机图像保存到电脑内存的技术背景代码分析注册SDK回调函数BufferEvent声明可以存储相机图像的内存序列和名称在图像回调函数中将图像保存在内存序…

C#核心笔记——(三)在C#中创建类型

3.1 类 类是最常见的一种引用类型,最简单的类的声明如下: class MyClass{}而复杂的类可能包含如下内容: 1.在class关键字之前:类的特性(Attribute)和修饰符。非嵌套的类修饰符有: public、int…

【计算机网络笔记】物理层——基带传输基础

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

kyuubi整合flink yarn session mode

目录 概述配置flink 配置kyuubi 配置kyuubi-defaults.confkyuubi-env.shhive 验证启动kyuubibeeline 连接使用hive catlogsql测试 结束 概述 flink 版本 1.17.1、kyuubi 1.8.0、hive 3.1.3、paimon 0.5 整合过程中,需要注意对应的版本。 注意以上版本 配置 ky…

互联网Java工程师面试题·Spring Cloud篇

目录 1、什么是 Spring Cloud? 2、使用 Spring Cloud 有什么优势? 3、服务注册和发现是什么意思?Spring Cloud 如何实现? 4、负载平衡的意义什么? 5、什么是 Hystrix?它如何实现容错? 6、什么是…

SpringBoot读取properties文字乱码问题及相关问题

问题:在idea的编辑器中properties文件一般用UTF-8编码,SpringBoot2读取解码方式默认不是UTF-8,当值出现中文时SpringBoot读取时出现了乱码。 解决方式1:在SpringBoot框架层面解决,在配置类注解上添加encoding属性值为…

【FPGA图像处理实战】- FPGA图像处理仿真测试工程(读写BMP图片)

FPGA开发过程中“行为功能仿真”是非常必要的一个过程,如果仿真都没通过,则上板测试必定失败。 FPGA图像处理需要读写大量的图像数据,单看这些图像数据实际是没有规则的,如果直接上板测试,调试起来非常困难&#xff0…

【Vue】Vue Router 在 Vue2 项目中的简单使用案例

前言 Vue Router 是 Vue.js 官方的路由管理器。它可以帮助我们在 Vue2 项目中实现页面之间的切换和导航。以下是在 Vue2 项目中使用 Vue Router 的简单案例。 步骤 安装 Vue Router 首先,我们需要安装 vue-router 包。你可以使用 npm 或 yarn 安装,打开…

C语言实现植物大战僵尸(完整版)

实现这个游戏需要Easy_X 这个在我前面一篇C之番外篇爱心代码有程序教你怎么下载,大家可自行查看 然后就是需要植物大战僵尸的素材和音乐,需要的可以在评论区 首先是main.cpp //开发日志 //1导入素材 //2实现最开始的游戏场景 //3实现游戏顶部的工具栏…

Elasticsearch 8.9 flush刷新缓存中的数据到磁盘源码

一、相关API的handler1、接收HTTP请求的hander2、每一个数据节点(node)执行分片刷新的action是TransportShardFlushAction 二、对indexShard执行刷新请求1、首先获取读锁,再获取刷新锁,如果获取不到根据参数决定是否直接返回还是等待2、在刷新之后transl…

【Azure 架构师学习笔记】- Azure Databricks (2) -集群

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (1) - 环境搭建 前言 在上文中提到了ADB 的其中一个核心就是集群,所以这里专门研究一下ADB 的集群。 ADB 集群 首先了解一下ADB…

智能优化算法应用:基于饥饿游戏算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于饥饿游戏算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于饥饿游戏算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.饥饿游戏算法4.实验参数设定5.算法结果6.参考…

抽象类和接口(超重点!!)

[本节目标] 1.抽象类 2.接口 3.Object类 1.抽象类 1.1 抽象类概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象&a…

编程实战:类C语法的编译型脚本解释器(九)编译语句

系列入口:编程实战:类C语法的编译型脚本解释器(系列)-CSDN博客 前文已经介绍了编译入口,核心就是语句,本文介绍语句的编译。 一、代码概览 代码太长,直接贴: bool GetSentence(CToke…