express基础知识

什么是express

  1. 官方给出的概念:Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架,官方

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

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

Express 的基本使用

1.安装  

npm i express@4.17.1

2.创建基本的web服务器

// 1.导入 express
const express = require('express')
// 2. 创建 web 服务器
const app = express()

//静态资源托管
app.use(express.static('文件名'))

// 3. 调用 app.listen(端口号, 启动后的回调函数), 启动服务器
app.listen(3000, () => {
  console.log('running……')
})

监听 GET 和 POST 请求,并响应客户端

1.监听 GET 请求

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

2.把内容响应给客户端

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

3.完整代码

// 1.导入 express
const express = require('express')
// 2. 创建 web 服务器
const app = express()

// 4. 监听客户端的 GET 和 Post 请求,并向客户端响应具体的内容
app.get('/user', (req, res) => {
  // 调用 express 提供的 res.send() 方法,向客户端响应一个 JSON 对象
  res.send({ name: 'zs', age: 20, gender: '男' })
})

app.post('/user', (req, res) => {
  // 调用 express 提供的 res.send() 方法,向客户端响应一个文本字符串
  res.send('请求成功')
})

// 3. 调用 app.listen(端口号, 启动后的回调函数), 启动服务器
app.listen(3000, () => {
  console.log('running……')
})

获取 URL 中携带的查询参数

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

app.get('/',(req,res)=>{
    //req.query 默认是一个空对象
    //客户端使用?name=zs&age=20 这种查询字符串形式,发送到服务器的参数
    //可以通过 req.query 对象访问到
    //req.query.name  req.query.age
    console.log(req.query)
})

获取 URL 中的动态参数

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

app.get('/user/:id', (req, res) => {
    //req.params 默认是一个空对象
    //里面存放着通过:动态匹配的参数值
    console.log(req.params);
})

注意

  • /:id​ -- id 值不是固定的,可以自己定义,例如: /:ids

  • 展示到页面中的 id 键,是自定义的变量值

  • 参数可以有多个,例如: /:ids/:name

托管静态资源

express.static()

const express = require('express')
const app = express()

// 在这里,调用 express.static() 方法,快速的对外提供静态资源
app.use(express.static('public'))

app.listen(3000, () => {
  console.log('running……')
})

挂载路径前缀

const express = require('express')
const app = express()

// 在这里,调用 express.static() 方法,快速的对外提供静态资源
app.use('/static', express.static('public'))

app.listen(3000, () => {
  console.log('running……')
})

Express 路由

Express 中的路由

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

  2. Express 中的路由分 3 部分组成,分别是请求的类型请求的 URL 地址处理函数

模块化路由

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

  • 创建路由模块对于的 .js 文件
  • 调用 express.Router() 函数创建路由对象
  • 向路由对象上挂载具体的路由
  • 使用 module.express  向外共享路由对象
  • 使用 app.use()  函数注册路由模块
// 1. 导入 express
const express = require('express')
// 2. 创建路由对象
const router = express.Router()

// 3. 挂载获取用户列表的路由
router.get('/user/list', (req, res) => {
  res.send('用户列表')
})

// 4. 挂载添加用户列表的路由
router.post('/user/add', (req, res) => {
  res.send('添加用户')
})

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

注册路由模块

  1. 导入路由模块 
  2. 使用  app.use()  注册路由模块
const express = require('express')
const app = express()

// 导入路由模块
const userRouter = require('./002-router')

// 使用 app.use() 注册路由模块
app.use(userRouter)

app.listen(3000, () => {
  console.log('running……')
})

为路由模块添加前缀

  1. 类似于托管静态资源写法,为静态资源统一挂载访问前缀一样

  2. 注意,添加了路由前缀后,访问的路由的时候,也应该加上前缀

const express = require('express')
const app = express()

// 导入路由模块
const userRouter = require('./002-router')

// 使用 app.use() 注册路由模块
// 给路由模块添加统一得到访问前缀 /api
app.use('/api', userRouter)

app.listen(3000, () => {
  console.log('running……')
})

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js是一个建立在谷歌V8引擎的运行环境,用于解析和执行JavaScript代码。它使得JavaScript不再局限于浏览器环境,可以在后端创建动态数据。\[1\]严格来说,Node.js不是一个框架,而是一个平台。它的技术栈包括核心模块、框架(如Express、KOA)、模板引擎(如Pug、EJS)、编译型CSS(如Lass/Sass/Stylus)和数据库(如MongoDB、MySQL)等。\[2\] Node.js的基础知识包括了如何执行另一个模块中的功能。例如,在一个模块中使用require函数引入另一个模块,然后可以调用该模块中的功能。例如,如果有一个b.js模块和一个first.js模块,可以在first.js模块中使用require('./b')来引入b.js模块,并调用其中的功能。执行node first.js即可运行该程序。\[3\] #### 引用[.reference_title] - *1* [【入门级基础】Node基础知识总结](https://blog.csdn.net/pakerder/article/details/125191636)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [node.js基础知识](https://blog.csdn.net/weixin_45459904/article/details/107508639)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值