Yin的笔记本

vuePress-theme-reco Howard Yin    2021 - 2025
Yin的笔记本 Yin的笔记本

Choose mode

  • dark
  • auto
  • light
Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • Linux
  • MyIdeas
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • JavaScript
  • Python
  • Nvidia
  • Rust
  • Tex
  • Shell
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
author-avatar

Howard Yin

303

Article

153

Tag

Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • Linux
  • MyIdeas
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • JavaScript
  • Python
  • Nvidia
  • Rust
  • Tex
  • Shell
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
  • nodejs-express

    • express服务器设置
      • 应用层中间件
      • 路由器层中间件

nodejs-express

vuePress-theme-reco Howard Yin    2021 - 2025

nodejs-express


Howard Yin 2019-04-27 06:18:04 Node编程框架实操编程语言JavaScript

从nodejs原始的服务器开始👇

var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(3000);
1
2
3
4
5

到express型的服务器👇

var http = require('http');
var app = express();
//中间会有一大段服务器初始化配置代码
http.createServer(app).listen(app.get('port'), function(){
    console.log('Express server listening on port ' + app.get('port'));
});
1
2
3
4
5
6

# express服务器设置

# 应用层中间件

前提👇

var app = express();
1

设置服务器的参数👇

app.set('port', 3000);//设置了服务器监听端口
1

设置中间件👇每个请求到达的时候都会调用定义的一系列中间件

app.use设置对所有请求调用定义的中间件

app.get和app.post分别是对GET和POST请求调用中间件

app.use(function (req, res, next) {
  console.log('Time:', Date.now());
  next();
});)//中间件1
app.use('/user', function (req, res, next) {
  console.log('This is a user');
  next();
});//中间件2
app.use('/user/:id', function (req, res, next) {
  console.log('ID:', req.params.id);
  next();
});//中间件2

var cookieParser = require('cookie-parser');
app.use(cookieParser());//cookieParser中间件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

中间件的调用顺序和设置时的顺序一样,每个中间件都会对req和res进行一些处理,然后用next()调用下一个中间件。如果某个中间件没调用next(),那么下面的中间件都不会被调用。中间件的第一个参数为'/user'样子时表示只对url"xxx.com/user"调用中间件,如果是'/user/:id'这种样子,那就是对url"xxx.com/user/12"调用中间件,而且这里调用的中间件里面还可以用req.params.id查到id=12。

路由也是一种中间件👇

//为请求的链接注册路由
app.use('/', indexRouter);
app.use('/users', usersRouter);
1
2
3

# 路由器层中间件

var router = express.Router();
1

router.use、router.get、router.post和上面那几个app.use、app.get、app.post用法一样。

不一样的地方在于,路由像这样设置好之后👇

app.use('/users', router);
1

链接/user/abc/def到了router那里就被截成/abc/def了,这就叫路由。

帮助我们改善此页面!
创建于: 2019-04-27 06:18:40

更新于: 2019-04-27 06:18:40