nodejs express模块

Stm32L0 STM32CUBE中UART和使用LPUART1以及串口不进中断问题解决 /* 开启串口1中断 */ LL_USART_EnableIT_RXNE(LPUART1); /* 开启串口2中断 */ LL_USART_EnableIT_RXNE(USART2); 阅读详情


nodejs express

Web 应用程序 Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架

express 如何启动一个服务器
//创建一个程序
const app = require(“express”)

express 原生路由
  
  app.get(path,callback)

  app.get("/home",(req,res)=>{
    //返回给前端数据
    res.send({
      code:xx,
      msg:xx,
      data:xx
    }) //可以是字符串、也可以是json或者数据
  })

  app.post("/home",(req,res)=>{
    //返回给前端数据
    res.send({
      code:xx,
      msg:xx,
      data:xx
    }) //可以是字符串、也可以是json或者数据
  })
实际操作
例:
npm init 

npm install  express -S

index.js
const express = require('express');
const app = express()
// 处理get请求,res.send给前端返回值
app.get("/home",(req,res)=>{
    res.send("hello node")
})
// 处理post请求,res.send给前端返回值
app.post('/home', (req,res)=>{
    res.send('内容')
  })
//监听端口
app.listen("3210",()=>{
    console.log("服务器启动成功,地址是"+"http://localhost:3210");
})

nodemon 解决服务器热加载问题

npm i nodemon -g

运行 nodemon  文件

建议:
  package.json
    script:{
      "start": nodemon index.js
    }
  npm run start 

postman 用于 做接口测试

设置路由 请求路由 携带参数 (参数解析)

1,get请求 获取 商品列表数据
  cateId  指定  你要 获取 哪个分类下的商品
  current 哪一页数据
  pageSize 一页多少条
  order 事件 销量  价格

后端路由 解析参数

解析get请求传参

app.get('/home', (req,res)=>{
  // req.query 就是get请求的参数  解析成对象
  res.send('get请求')
})

//http://localhost:3000/home?current=1&pageSize=10

/*req.query
  {
    current: '1',
    pageSize: '10'
  }*/

解析post请求传参

post 请求 body 请求参数 express库默认没有这个功能
post
请求是在请求体 body 携带
需要设置 请求格式
"content-type":"x-www-form-urlencoded"	//解析对象
"content-type":"multipart-formdata"  //上传文件
"content-type":"application/json" //解析JSON字符串

解决办法:body-parser
安装
npm i body-parser -S

const bodyParser = require('body-parser')
// 解析post 传递的 x-www-form-urlencoded
app.use(bodyParser.urlencoded({extended: false}))

// 解析post 传的 json格式参数
app.use(bodyParser.json())
例:
// 给post请求设置解析

app.use(bodyParser.urlencoded({extend:false}))

app.use(bodyParser.json())

app.post("/home",(req,res)=>{

   console.log(req.body);//提交的内容

   res.send("请求到了,不过你请求错了")

})

中间件 渐进式框架(核心包 只有基础功能 核心包 体积特别小)

中间件 可以往核心包增加 其他的功能 (第三方插件)

如何使用中间件

app.use([url,]中间件)
中间件其实就是一个函数
const middleware1 = (req,res,next)=>{

}
分类:
  全局中间件(所有请求都拦截)
  app.use(中间件)
  app.use('/',中间件)
  局部中间件(只拦截特定地址的请求)
  app.use("/a",中间件)  

例子:

//定义中间件

const middleware = (req,res,next)=>{
	//给请求过来的数据添加内容
    req.body={
        a:"哈哈,你请求了"
    }
	// 命令行输出获取后的信息
    console.log("我拦截了");

    next()
	// 代码在这里写是send后才会执行
}

//使用中间件:局部中间件

app.use("/home",middleware)

后端返回给前端 格式 规范 restfulApi

规定后端
{
  code: 0, // 自定义错误编码
  msg: "登录成功",
  data: []
}

规定前端:

获取数据  get
提交数据  post
更新数据  put
删除数据  delete

MVC

m model 数据
v view 视图(html)
c controller 控制器 ⭐核心业务代码

路由中间件

const router = require('express').Router();
// router 相当于小型的 app const app = express()
// router.get() .post() .use()

router.get('/home', (req,res)=>{
  res.send('我是home')
})

app.use(router)

路由中间件的分离
//引入express
const express = require('express');
const bodyParser = require('body-parser');
//引入routes文件夹下的home.js和list.js
const homeRouter = require('./routes/home');

//home.js(需要放在同级目录下routes文件下)
const router = require('express').Router();
router.get("/home",(req,res)=>{
    console.log("home请求了");
    res.send("这是home页面")
})
module.exports=router

//引入list.js文件 引入外部路由(需要放在同级目录下routes文件下)
const listRouter = require('./routes/list');

//list.js
const express = require('express');
const router = require('express').Router();
router.post("/list",(req,res)=>{
    console.log(req.body);
    res.send("加密的列表页")
})
module.exports = router

//引入get请求下的home.js
app.use(homeRouter)
//post请求时需要设置post请求声明
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:false}))
//引入post请求的list.js
app.use(listRouter)

app.listen(4123,()=>{
    console.log("端口启动成功");
})

静态资源中间件

功能:以服务器的地址来访问 服务器中的资源

static中间件


app.use(express.static('./public'))
public
  imgs
    a.jpg

locahost:3000/imgs/a.jpg //找到这张图片,这个时候已经进入public文件夹了,在路径中就不需要加/public了,下面同理。

app.use('/static',express.static('./public'))
//加了path,在url中就需要加前缀
public
  imgs
    a.jpg
localhost:3000/static/imgs/a.jpg

例:


//获取public文件夹下的静态资源
const express = require('express');
const app = express();
app.use('/static',express.static('./public'))
app.listen(4123,()=>{
    console.log("端口启动成功");
})

打开浏览器中输入http://localhost:4123/static/imgs/a.jpg===>会输出图片

express 模板引擎

我们使用 get请求 访问 /home home html页面 在页面加载
/news news html页面 浏览器上加载

返回html同时, html中的数据 (从数据库取数据)
拿到数据 还需要渲染

模板引擎 主要功能在于 渲染页面(取代了传统了 拼接字符串)

常见的nodejs 模板引擎有哪些
ejs 温和的 非破坏式 (内部写法跟html是一样的只是赋予了html 一些渲染的功能,如循环,条件判断,引入公共模板…)
pug 侵入式 (破坏式) 破坏了html 原有的写法

jade

模板引擎 渲染页面的(html写循环,判断…)

使用步骤:
  1. 下载:npm i ejs
2.设置:在app.js中
  app.set("views","./views")
    //告诉服务 视图 文件 放在 views目录中
  app.set("view engine","ejs")

  views文件夹中
    home.ejs  里面代码 就是html代码
    如何使用
   routes文件夹中home.js(home路由)中
    router.get("/home",(req,res)=>{
      res.render("index")
      //这里使用render发送数据,不使用send,第一个参数必须是地址。 
    })
使用模板引擎携带数据的玩法

home路由中:

res.render(模板,{
    //携带数据
    arr:[1,2,3,4],
    title:"写着玩"
  })

home.ejs中

<%console.log(arr,title)%>
//用户请求后,会在命令行输出   [1,2,3,4] 写着玩
//当然还有更加实用的例子
模板引擎综合实例
目录:public>imgs>lufei.jpg &css>home.css
	routes>home.js&news.js
	views>home.ejs&news.ejs
	app.js
//app.js(npm i express body-parser ejs -S)
const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');

const app = express();
const homerouter = require('./routes/home');
const newsrouter = require('./routes/news');
// 监听public目录下的静态资源,监听的目录在之后引入的时候就不需要写这个目录
app.use('/static',express.static('public'))
//设置视图路径
app.set("views",path.join(__dirname,"views"))
//给post请求做解析
app.use(bodyParser.urlencoded({extended:false}))
app.use(bodyParser.json())
// 设置模板引擎
app.set('view engine','ejs')
app.use(homerouter)
app.use(newsrouter)
app.listen(3210,()=>{
    console.log("连接成功,端口号:"+3210);
})
//home.js
const router = require('express').Router();
router.get("/home",(req,res)=>{
    res.render("home",{
        title:"写着玩",
        arr:[
            {id:1,user:'小明',age:18,gender:0},
            {id:2,user:'小好',age:17,gender:1},
        ]
    })
    //在此处携带了数据,在客户端请求后会将数据传给ejs页面
    //在ejs页面中可以使用js代码进行操作,只需要将代码放在 <% 代码 %>
})
module.exports = router
//home.ejs(html页面)
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="static/css/home.css">
    <!-- 这是因为监听时设置了path:'static',如果没有设置path前缀,那么直接/css/home -->
</head>
<body>
    <h1>这里是home页面</h1>
    <img src="static/imgs/lufei.jpg" alt="">
    <ul><!--注意ejs的语法-->
        <% for(var i=0;i<arr.length;i++){ %>
            <li>
                <h5><%= arr[i].user %></h5>
                <p><%= arr[i].age %></p>
                <p><%= arr[i].gender===0?"男":"女" %></p>
                <p><%= title %></p>
            </li>
        <% } %>
    </ul>
</body>
<script type="text/javascript" src="" ></script>
<script type="text/javascript">
    
</script>
<%console.log(arr,title)%>//会在命令行输出
</html>

ejs语法

router.get('/home',(req,res)=>{
    res.render('home')
})

render 方法 有两个参数
第二个参数 是 object 
携带 数据
render('home',{
    arr:[
        1,2,3,4
    ]
})

渲染语法
    <% 这里可以写任意的js语法但是不是输出 %>
    <%= 赋值输出 (一定保证是一个值或者表达式) %>
    <%- 富文本数据 %>  可以解析 html标签
    引入 公共 模板
    <%- include('head') -%>
    引入公共模板,比如head.ejs只存放头部模板使用<%- include('head') -%>放在页面顶部即可以引入.

GraphSense介绍 GraphSense是一个跨账本加密货币分析平台 它的介绍在这里 代码也是开源的 graphsense-dashboard 用于交互式加密货币分析的Web仪表板。 可以看导进数据的情况 graphsense-transformation 基于spark/cassandra/java服务运行 GraphSense转换管道,用于将加密货币的区块/交易/标签等数据导入,可以看它指定的json格式: t... 阅读详情

相关推荐

分享一个简单的迭代学习机器人双臂控制(MATLAB)

1 什么是迭代学习控制 迭代学习控制(iterative learning control,简称ILC)由Uchiyama于1978年首先提出,不过因为论文由日文撰写,影响不是很大。1984年,Arimoto等人用英文介绍了该方法。它是指不断重复一个同样轨迹的控制尝试,并以此修正控制律,以得到非常好的控制效果的控制方法。 迭代学习控制的特点是“在重复中学习”,通过反复的迭代修正,达到改善控制效果的目的。迭代学习控制的原理是根据系统前次运行所获得的输出误差信息,在控制过程中不断修正控制输入,随着迭代的进行,逐

weixin_45776027的博客 4483

node.js中Express简介

官方给出的概念:Express是基于Node.js平台,快速、开放、极简的web开发框架。通俗理解:Express的作用和Node.js内置的http模块类似,是专门用来创建web服务器的Express的本质:就是一个npm上的第三方包,提供了快速创建Web服务器的便捷方法。

weixin_44860226的博客 9182

Python 爬取新浪财经 7x24(1): 下载数据

前言 最近在做一个需要很多财经数据的项目。于是想到可不可以通过爬虫来解决(尝试白嫖)。 提供财经数据的网站有很多个,其中比较靠谱和更新比较及时的应该是新浪7x24 live数据。 http://finance.sina.com.cn/7x24/?tag=0 这个问题有一定的难度,因为这个网页是动态加载的。每一次只会加载部分数据,而只有拉到底部才可以加载新的数据。 于是乎,我们要做的事情是: 下载数据 保存到数据库 本篇介绍如何下载数据。 代码 闲言少叙书归正文,代码的实现如下: import reque

ZJ_11701的博客 2905

Nodejs—Express

官方给出的概念:Express 是基于 Node.js 平台快速、开放、极简的Web 开发框架。通俗的理解:Express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建 Web 服务器的。

m0_59451453的博客 4791

医学图像处理(一)使用U-Net进行MRI的肝脏分割

医学图像处理(一)使用U-Net进行MRI的肝脏分割数据集搜集训练集和测试集划分问题一: 测试集不包括GroundTruth问题二:T1和T2的数据能一起训练吗?问题三: T1的图像在文件夹中分成了InPhase和OutPhase,这个有什么区别?分离出肝脏将dicom文件转换为png格式数据增强U-net网络搭建自定义DatasetMain.py实验结果总结 图像分割小白一枚,之前接到一个MRI图像肝脏分割的任务。对于医学图像分割,第一想到的就是Unet. Unet在2015的MICCAI上首次提出,在医

qq_34003876的博客 2万+

AI Agent在智能投研中的实战:多智能体信息整合与策略生成

本文将带你从0到1完整搭建一套基于LangChain和AutoGen的多智能体AI投研系统首先,我们会一起梳理智能投研的核心痛点、金融数据的独特性,以及为什么传统AI Agent,尤其是多智能体协同架构,是破局的唯一最优解;RAG检索增强生成(但这次是金融领域定制化的,包括向量检索+时序数据检索+知识图谱检索的“三元检索增强”)、AutoGen多智能体协同框架。

软件工程实践的博客 381

Node.js 学习三——Express

官方给出的概念:Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。通俗的理解:Express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建 Web 服务器的。Express 的本质:就是一个 npm 上的第三方包,提供了快速创建 Web 服务器的便捷方法。Express 的中文官网: http://www.expressjs.com.cn/Web 网站服务器:专门对外提供 Web 网页资源的服务器。

weixin_45691995的博客 2156

Bentley ORD(openroads designer) 二次开发(BIM)第七节 在ORD SDK中调用MicroStation SDK

从课程刚开始的时候我们就通过学习,了解了ORD的开发是基于MicroStation的,ORD SDK的接口发布的时候也对MicroStation SDK也做了一次发布。这一章将以我们对ORD SDK知识的了解为基础,使用ORD SDK的接口读取道路几何信息、计算桩号,然后再使用MicroStation SDK 读取地形数据和计算投影点的位置,并创建一组方柱形状的Soild。计算方柱底部坐标要经过两大步骤,通过路线的桩号及偏移距离去定位方柱的平面位置,通过方柱的平面位置计算数字地面模型上的投影点的坐标。

chen286990651的博客 880

Node Js 之 express

xpress 是一个基于 Node.js 平台的极简、灵活的 WEB 应用开发框架,官方网址:https://www.expressjs. com.cn/简单来说,express 是一个封装好的工具包,封装了很多功能中间件(Middleware)本质是一个回调函数 中间件函数 可以像路由回调一样访问 请求对象(request) , 响应对象(response)express 中的 Router 是一个完整的中间件和路由系统,可以看做是一个小型的 app 对象。

qq_73270720的博客 1448

MTK Android 12 Clone Project 克隆项目

本文介绍了如何使用MTK Android 12 Clone Project 克隆一个新的项目。通过使用绝对路径执行Perl脚本,并根据需要选择升级或降级位数,可以成功地生成一个新的项目并进行编译。希望本文对xdm有所帮助。

我其实什么都不会 942

FANUC机器人_KAREL编程入门学习(1)

FANUC机器人_KAREL编程入门学习(1)

Robot_PLC_HMI_Automation 6420

Nodejs--Express框架使用

我们可以写一个类似springmvc那样的拦截器,来判断是否登录//导入会话管理next();}else{//如果不是白名单,那么就需要验证了console.log("黑名单拦截...");//黑名单= null){//比较二者值//相等,放行,跟新session时间console.log("放行...");//遍历完没有找到seesionID,说明回话过期return res.status(401).json({message:'会话过期!,请重新登录'})

可爱的鸡仔的博客 1801

弥散圆以及最大弥散圆

1弥散圆的形成? 原本景物中的一点应该经过透镜本应该也是一点才对。但是因为离焦,球差的存在,最终成像会投影成一个光斑圆圈。越小越清晰,越大就互相干涉变得越模糊。 同时人们规定二零最大弥散圆,就是人眼能够感受清晰模糊的一个边界,直径大于它,感受到模糊;直径小于它,感受不到模糊。 下面分别是离焦(左),球差(右)。 2弥散圆大小怎么计算呢? ,f为焦距;<1> ,D为光圈有效孔径;<2> F=f/D; <3> 3条公式合并可得出: ...

camerall 3117

nodeJs中的http、url模块及express框架

NodeJS 一、nodeJS的概念 nodeJS是一个基于Chrome V8引擎(编译成原生机器码)的让JavaScript运行在服务器端的运行环境,它让JavaScript的触角伸到了服务器端。 二、nodeJS特性 单线程:NodeJS不会为每个连接客户客户创造一个新的线程,仅用一个线程 非阻塞IO:NodeJS在访问高IO操作后不会等待其完成,而是立即去执行其他代码,操作完成后会使用回调...

wangJun 1243

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

初识 Express(基于 NodeJS http 模块封装的 Web 框架)

Express 会自动对 URL 进行分析,并提取其中的静态 URL 参数,你可以通过 Express 提供的接口 req.params 来获取 URL 参数的分析结果。我们可以在项目根路径中创建 public 文件夹,该文件夹中的资源将被服务器托管,客户端可以对资源进行访问。

两个月亮 1227

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

activitypub-express:为NodeJS带来ActivityPub协议的模块化实现

activitypub-express:为NodeJS带来ActivityPub协议的模块化实现 在当今互联网社交网络的快速发展中,ActivityPub作为一种去中心化的社交网络协议,越来越受到开发者的关注。activitypub-express(以下简称apex)正是这样一个针对NodeJS的ExpressJS中间件,实现了ActivityPub协议的模块化。下面,我们就来详细了解一下这个项目...

gitblog_00811的博客 432

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Node跨域cors模块,nodejs+express跨域

Node跨域cors模块 NodeJS+Express跨域 什么是CORS CORS(Cross-origin resource sharing),跨域资源共享,是一份浏览器技术的规范,用来避开浏览器的同源策略 简单来说就是解决跨域问题的除了jsonp外的另一种方法 安装cors模块 使用express写的接口,只能在内部使用,如果想要外部的服务访问,就涉及到了跨域。但是又不...

YunWisdom 2711

NodeJs 安装Express模块

第一步:检查NodeJs 的版本 node -v 第二步:判断本地是否安装express express --version 第三步:全局安装express cnpm install -g express 第四步:全局安装express-generator (最新express4.0版本中将命令工具已经分离出来) cnpm install -g express-generator ...

zhouzhiwengang的专栏 6881

nodejs之Express三方模块

nodejs的Express常用第三方的模块Express安装使用Express中间件(middleware)使用中间件内置中间件:自定义中间件常用第三方中间件定义路由GETPOST跨域支持代理服务器 常用第三方的模块 Express Express 是一个第三方模块,对原生模块封装了一套更灵活、更简洁的应用框架,其在 Node.js 环境的地位和作用好比 jQuery 在前端的地位和作用。使用 Express 可以快速地搭建一个完整功能的网站 安装 npm install express 使

牛先森家的博客 1175

nodejs学习教程 nodejs express模块安装

npm作为一个NodeJS的模块管理,之前我由于没有系统地看资料所以导致安装配置模块的时候走了一大段弯路,所以现在很有必要列出来记录下。 ①、我们要先配置npm的全局模块的存放路径以及cache的路径,例如我希望将以上两个文件夹放在NodeJS的主目录下,便在NodeJs下建立"node_global"及"node_cache"两个文件夹。如下图:

zhouzhiwengang的专栏 1516

基于nodejs的express常用模块介绍及使用

常用模块安装 基于express项目中需要另外引入的模块,其他的在我们创建项目时自动添加的我这里就没介绍 # i是install的缩写,删除时可以使用un代替i,un既是uninstall的缩写 npm i -g nodemon # 这个安装为全局,用来解决实时刷新页面,实现node服务器与数据库服务器的重启 npm i multer # 安装编写上传文件接口需要的模块 npm i bcryptjs # 安装密码加密需要的

weixin_45000814的博客 1336

nodejs第三方模块express

nodejs的第三方模块express express介绍 Express基于 Node.js 平台,快速、开放、极简的 Web 开发框架 Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能 使用express创建服务器 安装express npm install express --save npm install...

songxiaomianbao的博客 841

Nodejs的express模块笔记

express 模块具体内容请看:https://javascript.ruanyifeng.com/nodejs/express.html

qq1183387582_的博客 178

NodeJS中对于express模块的使用

NodeJS中对于express模块的使用 expres是基于Node.js平台、快速、开放的web开发框架 下载 npm install express 或 npm i express 使用(创建web服务器) 引入express模块 const express = require('express') 创建web服务器 var app = express() 监听端口 app.listen(8080) 端口号可以自定义,但要保证端口不冲突 路由 浏览器向服务器发起请求,Web服务器根据url

凤凰的博客 454

NodeJS Express+Sequelize实现单个模块的增删改查功能

Express 是一个保持最小规模的灵活的 Node.js Web应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。Sequelize是一个基于 promise的 Node.js ORM。

博观而约取,厚积而薄发~ 221

nodejs+express添加https模块

环境:windows10 自测使用 首先安装OpenSSL我使用的是64位的在这里可以下载 链接:https://pan.baidu.com/s/1bYieb67kNIxz9rK5Lqt3HA 提取码:4apa 接下来是如何生成和代码: 1.进入C:\OpenSSL-Win64\bin>下 2、生成RSA密钥的方法 openssl genrsa -des3 -out private.pem ...

d81895606的博客 2002
上一篇: jsonp跨域请求vip联想词
下一篇: mongobdb操作数据库
奥D
博客等级 码龄6年 67粉丝 35原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值