Express-上部——用来创建Web服务器、get、post、nodemon、路由

Express

1.Express是基于Node.js平台,快速,开放,极简的Web开发框架

2.Express的作用和Node.js内置的http模块类似,是专门用来创建Web服务器的

3.Express就是一个npm上的第三方包,提供了快速创建Web服务器的方法

网址: http://www.expressjs.com.cn/

Express和http内置模块的关系:

Express是基于Node.js内置的http模块进一步封装起来的,能够极大的提高开发效率

对于前端最常见的两种服务器:

1.Web网站服务器:专门对外提供Web网页资源的服务器

2.API服务器:专门对外提供API接口的服务器

Express的基本使用:
1.安装Express

先初始化项目

npm init
//一路回车
//生成package.json配置文件

然后再安装Express

npm i express@4.17.1
//@4.17.1是选择安装的版本
2.基本的使用

2.1创建基本的Web服务器

// 1.导入express
const express = require("express")
// 2.创建web服务器
const server = express();

// 3.调用server.listen(端口号,回调函数),启动服务器
//server.listen()一般是放在所有代码的后面
server.listen(8080, () => {
    // 成功启动服务器后,执行以下的代码
    console.log("服务器启动了,端口号:8080");
})

2.2监听GET请求

通过**server.get()**方法,可以监听客户端的GET请求

/* 
server.get(x,y)
x:客户端请求的url地址
y:请求对应的处理函数
*/
/* 
req:请求对象(包含了与请求相关的属性与方法)
res:响应对象(包含了与响应相关的属性与方法)
*/
server.get("/", function (req,res) {
    // 处理的函数
    res.send("hello")
})

2.3监听POST请求

通过**server.post()**方法,可以监听客户端的POST请求

/* 
server.post(x,y)
x:客户端请求的url地址
y:请求对应的处理函数
*/
/* 
req:请求对象(包含了与请求相关的属性与方法)
res:响应对象(包含了与响应相关的属性与方法)
*/
server.post("/", function (req,res) {
    // 处理的函数
    res.send("hello")
})

2.4把内容响应给客户端

通过**res.send()**方法,可以把处理好的内容,发送给客户端


server.get("/user", (req,res)=> {
    // 向客户端发送JSON对象
    // 浏览器:http://localhost:8080/user
    res.send({name:'zs',age:20,sex:'男'})
})
server.post("/user", (req,res)=> {
    // 向客户端发送文本内容
    res.send("hello")
})

2.5获取url中携带的查询参数

通过req.query对象可以访问到客户端通过查询字符串的形式,发送到服务器的参数

server.get("/user", (req,res) => {
    // req.query默认是一个空对象({})
    // console.log(req.query);
// 客户端在访问路径后用?与参数隔开,参数与参数之间用&隔开
    // http://localhost:8080/user?name=zs&age=20
    // name=zs&age=20就是客户端发给服务器的参数
    res.send(`${req.query.name}——————————${req.query.age}`)
})

2.6获取url中的动态参数

通过req.params对象,可以访问到url中通过**😗*匹配到的动态参数

server.get("/user/:id", (req, res) => {
    // req.params默认是一个空对象({})
    // console.log(req.params);
    // req.params里面存放的是通过:动态匹配到的参数值
    // http://localhost:8080/user/666
    // 666就是动态匹配的id的参数值
res.send(req.params.id)
})

综合:

// 1.导入express
const express = require("express")
// 2.创建web服务器
const server = express()
// 监听客户端的GET和POST请求,并向客户端响应具体的内容
/* server.get("/user", (req, res) => {
    // 调用express提供的res.send()方法,向客户端响应一个JSON对象
    // http://localhost:8080/user
    res.send({ name: 'zs', age: 20, sex: '男' })
}) */
server.post("/user", (req, res) => {
    // 调用express提供的res.send()方法,向客户端响应一个JSON对象
    // http://localhost:8080/user
    res.send("post请求成功")
})
/* server.get('/', (req, res) => {
    // 通过req.query,可以获取到客户端发送过来的查询参数
    // req.query默认是一个空对象{}
    // http://localhost:8080/?name=zs&age=20
    // name=zs&age=20就是req.query的内容,是一个对象
    console.log(req.query);
    res.send(req.query)
}) */
// :id/:uname是两个动态参数,有:在前面的都是动态参数(写在路径里面),
server.get("/user/:id/:uname", (req,res) => {
    // req.params是动态匹配到的url参数,默认也是空对象({},就是路径后面不加参数)
    console.log(req.params);
    res.send(req.params)
})

// 监听端口,后面的回调函数要不要无所谓
server.listen('8080', () => {
    console.log("服务器启动了,地址:localhost:8080");
})
3.托管静态资源
3.1 express.static()

通过它,可以非常方便地创建一个静态资源服务器

// 1.导入express
const express = require("express")
// 2.创建web服务器
const server = express()
// 访问某个文件下的文件
// 这样就可以访问test文件夹内的所有文件,访问路径不用加上test,直接/后面加上想要文件
// http://localhost:8080/           默认打开的是index.文件
// http://localhost:8080/list.html      查看test文件夹下的list.html文件
// server.use(express.static("./test"))
// 访问某个文件
// http://localhost:8080/index 可以设置要访问的文件的路径
server.use("/index",express.static("index.html"))

// 监听端口,后面的回调函数要不要无所谓
server.listen('8080', () => {
    console.log("服务器启动了,地址:localhost:8080");
})

3.2托管多个静态资源目录

// 若要托管多个静态资源目录,那就多次调用express.static()函数,
// 函数会根据目录的添加顺序查找所需的文件
server.use(express.static("./test"))
server.use(express.static("./show"))

3.3挂载路径前缀

在静态资源访问路径前面,挂载路径前缀

//要访问test文件夹下面的文件,必须在访问路径后面加上/test才可以
//http://localhost:8080/test/ 默认打开index文件
server.use("/test",express.static("test"))
4.nodemon

若是使用node app.js调试项目,每次修改代码之后,都要手动关掉服务器,再重新启动,很麻烦

nodemon能够监听项目文件的变动,当diamante被修改后,保存后,nodemon会自动帮我们重启项目,

极大方便了开发和调试

4.1安装nodemon

//-g全局安装
npm install -g nodemon

4.2使用nodemon

传统的方式是: node app.js

nodemon的方式是:nodemon app.js

Express路由

路由:广义上来说路由就是映射关系

在Express中,路由是指客户端的请求服务器处理函数之间的映射关系

Express中的路由分3部分组成:请求的类型(method),请求的URL地址(path),处理函数(handler)

服务器地址+请求的url地址

server.method(path,handler)

路由的匹配过程:每当一个请求到达服务器之后,需要先经过路由的匹配,只有匹配成功之后,才会调用对应的处理函数。在匹配时,会按照路由的顺序进行匹配,如果请求类型和请求的 URL 同时匹配成功,则 Express 会将这次请求,转交给对应的 function 函数进行处理

匹配的注意点:

① 按照定义的先后顺序进行匹配
② 请求类型和请求的URL同时匹配成功,才会调用对应的处理函数

最简单的路由用法

// 1.导入express
const express = require("express")
// 2.创建web服务器
const server = express()
// 挂载路由
server.get('/', (req,res) => {res.send("hello get") })
server.post('/', (req,res) => {res.send("hello post") })

// 监听端口,后面的回调函数要不要无所谓
server.listen('8080', () => {
    console.log("服务器启动了,地址:localhost:8080");
})

为了方便对路由进行模块化的管理,Express 不建议将路由直接挂载到 app 上,而是推荐将路由抽离为单独的模块

就是将路由的逻辑代码放在另一个js文件,然后导出,需要使用就导入

步骤:

① 创建路由模块对应的 .js 文件
② 调用 express.Router() 函数创建路由对象
③ 向路由对象上挂载具体的路由
④ 使用 module.exports 向外共享路由对象
⑤ 使用 app.use() 函数注册路由模块

index.js页面:创建路由

// 1.导入express
const express = require("express")
// 2.创建路由对象
const router = express.Router()
// 3.挂载获取用户列表的路由
router.get("/user/list", (req,res)=>{
    res.send("get user list")
})
// 4.挂载添加用户的路由.
router.post("/user/add", (req,res)=>{
    res.send("add user")
})

// 5.向外导出路由对象router
module.exports=router

test.js页面:使用路由

// 1.导入express
const express = require("express")
// 2.导入路由模块,路由对象router
const router = require("./router")
// 创建服务器对象
const server = express()

// 3.使用server.use()注册路由模块
server.use(router)

// 监听端口,后面的回调函数要不要无所谓
server.listen('8080', () => {
    console.log("服务器启动了,地址:localhost:8080");
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值