express中app.use和app.get的区别及解析
时间:2022-05-07
本文章向大家介绍express中app.use和app.get的区别及解析,主要内容包括结论、例子、两者关系、什么时用、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
写在前面:最近研究nodejs
及其web框架express
,对app.use
和app.get
没理解清,以致踩了坑浪费不少时间,我根据自己实践及总结出此博客,若有错误还请大家多多指教。
结论
先说我发现的结论:
app.use(path,callback)中的callback既可以是router对象又可以是函数 app.get(path,callback)中的callback只能是函数
结论说完,让我们先看个栗子
例子
app.js
var express = require('express');var app = express();var index = require('./routes/index');//1⃣️app.use('/test1',function(req,res,next){
res.send('hello test1');
}); //2⃣️app.get('/test2',function(req,res,next){ res.send('hello test2');
}); //3⃣️app.get('/test3',index); //4⃣️app.use('/test4',index);
index是一个路由对象,结果,例1、2、4结果都能正确显示,而例3却报404。index.js很简单,如下:
var express = require('express');var router = express.Router();router.get('/', function(req, res, next) {
res.send('hello world!');
});
module.exports = router;
两者关系
这说明,给app.get(app.post、app.put同理)赋个路由对象是不行的,其实,可以将app.get()看作app.use的特定请求(get)的简要写法。即
var express = require('express');var app = express();app.get('/hello',function(req,res,next){
res.send('hello test2');
});
等同于:
var express = require('express');var app = express();var router = express.Router();router.get('/', function(req, res, next) {
res.send('hello world!');});app.use('/hello',router);
什么时用
那么,什么时用app.use,什么时用app.get呢?
路由规则是app.use(path,router)
定义的,router
代表一个由express.Router()
创建的对象,在路由对象中可定义多个路由规则。可是如果我们的路由只有一条规则时,可直接接一个回调作为简写,也可直接使用app.get
或app.post
方法。即
当一个路径有多个匹配规则时,使用app.use,否则使用相应的app.method(get、post)
- 安装python虚拟环境
- 各种排序算法的分析及java&python实现
- python3elk相关---根据Elasticsearch(es)日志处理,生成excel并定时邮箱发送附件
- python数据科学-数据预处理
- python3 邮箱相关邮箱的服务
- 谈一谈Python中str()和repr()的区别
- TensorFlow从0到1 - 15 - 重新思考神经网络初始化
- python2.7搬运--->TensorFlow - 深度学习破解验证码
- 来学习几个简单的Hive函数啦
- 推荐系统实战-基于用户的协同过滤
- 素数的筛法
- 听说GAN很高大上,其实就这么简单
- python3 解码base64遇到的问题与解决
- TensorFlow从0到1 - 16 - L2正则化对抗“过拟合”
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Java集合-2】HashMap简析
- 【Java集合-3】ArrayList简析
- Springboot之Security前后端分离登录
- Windows 10使用WSL作为python宿主机调试开发
- 小米正式开源 SQL 智能优化与改写工具 SOAR
- 【SpringBoot-1】面向小白编程:从0开始创建一个SpringBoot项目
- 【SpringBoot-3】Lombok使用详解
- 【JMeter系列-3】JMeter元件详解之配置元件
- 【JMeter-4】JMeter元件详解之逻辑控制器
- 【JMeter-4】JMeter关联:JMeter正则表达式提取器与JSON提取器
- 【JMeter系列-5】JMeter操作Mysql数据库
- 【JMeter系列-6】JMeter BeanShell Sampler与JMeter BeanShell断言
- 【JMeter系列-7】Linux下执行测试
- 【JMeter系列-8】JMeter自定义日志与日志分析
- 【JMeter系列-9】 JMeter常用内置对象