experss路由工作原理

router.get("/", function(req, res) {

  res.render("index", {"title":"express"});

});

这段代码的意思是当访问主页时,调用ejs模板引擎,来渲染index.ejs模板文件(即将title变量全部替换为字符串Express),生成静态页面并显示在浏览器中。

我们来做一些修改,以上代码实现了路由的功能,我们当然可以不要routes/index.js文件,把实现路由功能的代码放到app.js里,我们当然可以不要routes/index.js文件,把实现路由功能的代码都放在app.js里,但随着时间的推移app.js会变得臃肿难以维护,这也违背了代码模块化的思想,所以我们把实现路由功能的代码都放在routes/index.js里。官方给出的写法是在app.js中实现了简单的路由分配,然后再去index.js中找到对应的路由函数,最终实现路由功能。我们不妨把路由控制器和实现路由共鞥男的函数都放到index.js里,app.js中只有一个总的路由接口。

最终将app.js修改为

var express require("express");

var path = require("path");

var favicon = require("server-favicon");

var logger = require("morgan");

var cookieParser = require("cookie-parser");

var bodyParser = require("body-parser");

var routes = require("./routes/index");

var app = express();

app.set("port", process.env.PORT || 3000);

app.set("view", path.join(_dirname, "views"));

app.set("view engine", "ejs");

//app.use(favicon(__dirname + "/public/favicon.ico"));

app.use(logger("dev"));

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({extended:true}));

app.use(cookieParser());

app.use(express.static(path.join(__dirname, "public")));

routes(app);

app.listen(app.get("port"), function() {

  console.log("Express server listening on port" + app.get("port"));

});

修改index.js如下:

module.exports = function(app) {

  app.get("/", function(req, res) {

    res.render("index", {title:"Express"});

  });

}

路由规则:

express封装了多种http请求方式,我们主要只是用get和post两种,即app.get()和app.post()。

app.get()和app.post()的第一个参数都为请求的路径,第二个参数为处理请求的回调函数,回调函数有两个参数分别是req和res,代表请求信息和响应信息。

路径请求及对应的获取路径有以下几种形式:

req.query

//GET   /search?q=tobi+ferret

req.query.q

// =>  "tobi ferret"

//GET  /shoes?order=desc&shoe[color]=blue&shoe[type]=converse

req.query.order

// => "blue"

req.query.shoe.type

// => "converse"
req.body

//POST  user[name]=tobi&user[email][email protected]

req.body.user.name

// => "tobi"

req.body.user.email

//  => "[email protected]"

//POST{"name":"tobi"}

req.body.name

// => "tobi"
req.params

//GET  /user/tj
req.params.name
// => "tj"

//GET  /file/javascripts/jquery.js
req.params[0]
//  =>  "javascripts/jquery.js"
时间: 2024-11-06 03:39:50

experss路由工作原理的相关文章

Asp.Net Core EndPoint 终结点路由工作原理解读

一.背景 在本打算写一篇关于Identityserver4 的文章时候,却发现自己对EndPoint -终结点路由还不是很了解,故暂时先放弃了IdentityServer4 的研究和编写:所以才产生了今天这篇关于EndPoint (终结点路由) 的文章. 还是跟往常一样,打开电脑使用强大的Google 和百度搜索引擎查阅相关资料,以及打开Asp.net core 3.1 的源代码进行拜读,同时终于在我的实践及测试中对EndPoint 有了不一样的认识,说到这里更加敬佩微软对Asp.net cor

路由及路由器工作原理深入解析3:路由与端口

日志"路由及路由器工作原理深入解析1"http://user.qzone.qq.com/2756567163/blog/1438322342介绍了"为什么要使用路由器"和"TCP/IP V4 协议网络的分段原理"2个问题,日志"路由及路由器工作原理深入解析2"http://user.qzone.qq.com/2756567163/blog/1438329517介绍了路由的工作原理,并以一个具体实例的实现深入剖析了路由的实现过程

路由及路由器工作原理深入解析4:路由器操作实例

日志"路由及路由器工作原理深入解析1"http://user.qzone.qq.com/2756567163/blog/1438322342介绍了"为什么要使用路由器"和"TCP/IP V4 协议网络的分段原理"2个问题:日志"路由及路由器工作原理深入解析2"http://user.qzone.qq.com/2756567163/blog/1438329517介绍了路由的工作原理,并以一个具体实例的实现深入剖析了路由的实现过程

路由及路由器工作原理深入解析3:路由与port

日志"路由及路由器工作原理深入解析1"http://user.qzone.qq.com/2756567163/blog/1438322342介绍了"为什么要使用路由器"和"TCP/IP V4 协议网络的分段原理"2个问题.日志"路由及路由器工作原理深入解析2"http://user.qzone.qq.com/2756567163/blog/1438329517介绍了路由的工作原理.并以一个详细实例的实现深入剖析了路由的实现过程

路由及路由器工作原理深入解析2:路由原理

日志"路由及路由器工作原理深入解析1"http://user.qzone.qq.com/2756567163/blog/1438322342介绍了"为什么要使用路由器"和"TCP/IP V4 协议网络的分段原理"2个问题,本文将继续对路由的具体工作原理进行解析. 3.路由原理 当IP子网中的一台主机发送IP分组给同一IP子网的另一台主机时,它将直接把IP分组送到网络上,对方就能收到.而要送给不同IP子网上的主机时,它要选择一个能到达目的子网上的路

路由及路由器工作原理深入解析1:概述

前言:现在从事的嵌入式产品设计,很多都是基于TCP/IP的,要求研发的设备能够接入广域网进行远程设置和访问,这就涉及到了路由的工作原理和路由器的使用.包括家庭中用到的ADSL.无线路由器以及在工业现场使用的企业及路由器.交换机,自己都曾接触和使用过,但一直都停留于表面的操作理解.现在由于产品研发的需要,希望能够进一步加深对路由器内部运行机制的理解,澄清一些模糊的认识,所以特写此文. 在阅读此文之前,我们先界定一下主机的概念:主机是连接到一个或多个网络的设备,它可以向任何一个网络发送和从其接收数据

路由和交换机工作原理

路由器与交换机的工作原理 计算机网络往往由许多种不同类型的网络互连连接而成.如果几个计算机网络只是在物理上连接在一起,它们之间并不能进行通信,那么这种“互连”并没有什么实际意义.因此通常在谈到“互连”时,就已经暗示这些相互连接的计算机是可以进行通信的,也就是说,从功能上和逻辑上看,这些计算机网络已经组成了一个大型的计算机网络,或称为互联网络,也可简称为互联网.互连网. 将网络互相连接起来要使用一些中间设备(或中间系统),ISO的术语称之为中继(relay)系统.根据中继系统所在的层次,可以有以下

LVS集群之工作原理

  首先我们要了解LVS的工作机制: LVS里Director本身不响应请求,只是接受转发请求到后方,Realservers才是后台真正响应请求. LVS 工作原理基本类似DNAT,又不完全相像,它是一种四层交换,默认情况下通过用户请求的地址和端口来判断用户的请求,从而转发到后台真正提供服务的主机,而判断这种请求的是通过套接字来实现,所以四层就可以实现. 而且这个转发的过程对用户而言是透明的(简单的讲,就是用户访问DR的IP,而DR转发给RSS,而用户不知道这个过程) LVS的工作模式: 1.D

LVS介绍及工作原理图解

很多人使用过LVS集群系统,但对于LVS集群,大多数人不清楚它到底是个什么东西.接下来我们就聊聊LVS及其工作原理. 一.lvs介绍 LVS的英文全名为"Linux Virtual Server",即Linux虚拟服务器,是一个虚拟的四层交换器集群系统,根据目标地址和目标端口实现用户请求转发,本身不产生流量,只做用户请求转发,目前是负载均衡性能最好的集群系统. 二.Lvs原理介绍 图示如下: 1.首先用户向负载均衡器调度器(Director Server)发起请求,负载均衡器将请求发往