当前位置: 首页 > 后端技术 > Node.js

【Web全栈教程8】express实现节点服务器

时间:2023-04-03 11:45:17 Node.js

express介绍以下介绍来自官网:路由定义如何处理app等浏览器请求。问。监听不同的路径并处理指定的路径。比如监听'/login'进行登录处理,监听'student_list',进行学生列表查询处理。varexpress=require('express')varapp=express()//当向主页发出GET请求时以“helloworld”响应app.get('/',function(req,res){res.send('helloworld')})开发中间件Express是一个路由和中间件web框架,它自己的功能很少,一个Express应用程序本质上是一系列中间件函数调用。中间件函数是可以访问请求对象(req)、响应对象(res)以及应用程序请求-响应周期中的下一个中间件函数的函数。下一个中间件函数通常由一个名为next的变量表示。中间件函数可以执行以下任务:执行任何代码。更改请求和响应对象。结束请求-响应循环。调用堆栈中的下一个中间件函数。如果当前中间件函数还没有结束请求-响应循环,则必须调用next()将控制传递给下一个中间件函数。否则,请求将被暂停。使用中间件Express可以使用以下几种中间件:应用层中间件通过app.use和app.method将应用层中间件绑定到express实例上,其中method是中间件处理的请求的小写,比如get、post,放。路由器级中间件路由器级中间件的工作方式与应用程序级中间件相同,只是它绑定到express.Router()的实例。错误处理中间件错误处理中间件函数的定义方式与其他中间件函数相同,只是它采用四个参数而不是三个(错误处理中间件始终采用四个参数。即使您不需要使用下一个对象,您must指定此项以维护签名。否则,下一个对象将被解释为常规中间件并且不会处理错误。)内置中间件express内置:express.static,express.json,express.urlencoded第三方中间件使用第三方中间件为Express应用添加功能模板引擎在运行时,模板引擎将静态模板中的变量替换为runtime期间产生的真实数据转换成html文件返回给客户端,使得html的设计更加简单。一些与Express一起工作的流行模板引擎是Pug、Mustache和EJS。Express默认使用Jade。错误处理Express带有默认的错误处理程序,不需要任何额外的工作。如果同步代码抛出错误,Express会捕获并处理它。例如:app.get('/',function(req,res){thrownewError('BROKEN')//Express会自己捕获这个错误。})Express创建一个新服务器在上一章中,nativejs分析了一下写一个简单的nodeserver很复杂很麻烦。上一章使用express框架快速搭建一个Node服务。创建一个新的html文件
密码:

<使用express内置中间件static来处理静态文件。如下请求静态资源时,express会搜索并返回server.use(express.static('./www'));处理postbody并安装body-parsernpmibody-parser-D引入body-parser插件,body变量会自动添加到response的请求头中来解析body。constbody=require('body-parser');//接收bodyserver.use(body.urlencoded({extended:false}))exceptfiles;processpostuploadedfiles安装multernpmimulter-D引入multer插件,设置上传路径为./upload,文件会自动上传到上传目录,并在response的请求头中添加files变量存储相关信息。constmulter=require('multer');//接收文件bodyletmulterObj=multer({dest:'./upload'});server.use(multerObj.any());完整代码constexpress=require('express');constbody=require('body-parser');//接收除文件之外的正文constmulter=require('multer');//接收文件bodyletserver=express();server.listen(8080);//中间件,使用use向中间件添加服务。每个中间件的添加方式取决于官网定义server.use(body.urlencoded({extended:false}));letmulterObj=multer({dest:'./upload'});server.use(multerObj.any());//处理请求server.get('/',(req,res)=>{res.send('OK');});server.post('/api',(req,res)=>{res.send('OK');//Native和express没有req.body,是中间件添加的bodyconsole.log(req.body);console.log(req.files);});//静态的,表示express在请求静态资源时会处理server.use(express.static('./www'));requestresultexpress缓存了重新访问body提交的数据,只有通过req.body才能正确处理解析。req.files包含上传的文件信息,文件名hash已经准备好了。进入上传文件夹查看上传的文件是否存在且正确