1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Nodejs-Express框架

Nodejs-Express框架

时间:2022-02-10 03:04:25

相关推荐

Nodejs-Express框架

1. 认识Web框架

目前在Node中比较流行的Web服务器框架是express、koa;express早于koa出现,并且在Node社区中迅速流行起来:可以基于express快速、方便的开发自己的Web服务器;并且可以通过一些实用工具和中间件来扩展自己功能;

Express整个框架的核心就是中间件

2.Express安装

express的使用过程有两种方式:

方式一:通过express提供的脚手架,直接创建一个应用的骨架;方式二:从零搭建自己的express应用结构;

方式一:安装express-generator

安装脚手架

npm install -g express-generator

创建项目

express express-demo

安装依赖

npm install

启动项目

node bin/www

方式二:从零搭建自己的express应用结构;

npm init -y

3. Express的基本使用

// express本质上是一个函数:createApplicationconst express = require('express')// 创建appconst app = express();// 监听默认路径// getapp.get('/', (req, res, next) => {res.end("hello express")})// postapp.post('/', (req, res, next) => {res.end('hello post express')})// 开启监听app.listen(8000, () => {console.log('express服务器启动成功')})

4.认识中间件

Express是一个路由和中间件的Web框架,它本身的功能非常少:Express应用程序本质上是一系列中间件函数的调用;中间件的本质是传递给express的一个回调函数;这个回调函数接受三个参数: 请求对象(request对象);响应对象(response对象);next函数(在express中定义的用于执行下一个中间件的函数);中间件中可以执行哪些任务 执行任何代码;更改请求(request)和响应(response)对象;结束请求-响应周期(返回数据);调用栈中的下一个中间件;

const express = require('express')const app = express();// 编写普通的中间件// use注册一个中间件(回调函数)app.use((req, res, next) => {console.log('注册了01普通中间件')res.end('hello world')next()})app.use((req, res, next) => {console.log('注册了02普通中间件')next()})app.use((req, res, next) => {console.log('注册了03普通中间件')})app.listen(8000, () => {console.log('普通中间件启动成功')})

5.应用中间件 – 自己编写

express主要提供了两种方式:app/router.use和app/router.methods;

6.客户端发送请求的方式

方式一:通过get请求中的URL的params;方式二:通过get请求中的URL的query;方式三:通过post请求中的body的json格式;方式四:通过post请求中的body的x-www-form-urlencoded格式;方式五:通过post请求中的form-data格式;

7. 响应数据

end方法

类似于http中的response.end方法,用法是一致的

json方法

json方法中可以传入很多的类型:object、array、string、boolean、number、null等,它们会被转换成 json格式返回;

status方法

用于设置状态码

8.Express的路由

以使用 express.Router来创建一个路由处理程序:

一个Router实例拥有完整的中间件和路由系统;

user.js

const express = require('express')const router = express.Router()router.get('/', (req, res, next) => {res.json(["why", "kobe", "lilei"])})router.get('/:id', (req, res, next) => {res.json(`${req.params.id}用户的信息`)})router.post('/', (req, res, next) => {res.json("create user success")})module.exports = router

// express本质上是一个函数:createApplicationconst express = require('express')const userRouter = require('./routers/users')// 创建appconst app = express();// 注册路由app.use("/users", userRouter)app.use("/products", productRouter)// 开启监听app.listen(8000, () => {console.log('express路由服务器启动成功')})

9.静态资源服务器

Node也可以作为静态资源服务器,并且express给我们提供了方便部署静态资源的方法;

10.服务端的错误处理

// express本质上是一个函数:createApplicationconst express = require('express')// 创建appconst app = express();const USERNAME_DOES_NOT_EXISTS = "USERNAME_DOES_NOT_EXISTS";const USERNAME_ALREADY_EXISTS = "USERNAME_ALREADY_EXISTS";app.post('/login', (req, res, next) => {// 加入在数据中查询用户名时, 发现不存在const isLogin = false;if (isLogin) {res.json("user login success~");} else {// res.type(400);// res.json("username does not exists~")next(new Error(USERNAME_DOES_NOT_EXISTS));}})app.post('/register', (req, res, next) => {// 加入在数据中查询用户名时, 发现不存在const isExists = true;if (!isExists) {res.json("user register success~");} else {// res.type(400);// res.json("username already exists~")next(new Error(USERNAME_ALREADY_EXISTS));}});app.use((err, req, res, next) => {let status = 400let message = "";switch(err.message) {case USERNAME_DOES_NOT_EXISTS:message = "username does not exists~"break;case USERNAME_ALREADY_EXISTS:message = "username alreday exists~"break;default:message = "NOT FOUND~"}res.status(status)res.json({errCode: status,errMessage: message})})// 开启监听app.listen(8000, () => {console.log('express服务器启动成功')})

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。