作者|来源|DadaFrontEndBistroExpressServerDevelopmentCreatingExpressApps,ExpressRouting,PugViewTemplateUsageExpress简介:Let'sCreateExpressApps,Express是一个Node.jsWeb应用框架,非常强大,可以为用户创建各种Web应用和HTTP工具.使用Express框架,可以构建一个功能齐全的网站。Express框架的优点:可以使用中间件响应HTTP请求,可以定义路由表来执行不同的HTTP请求,可以向模板传递参数动态渲染HTML页面。命令行安装Express框架:cnpminstallexpress--saveExpress框架安装在node_modules目录下,然后需要同时安装以下模块:body-parser是一个node.js中间件,可以处理JSON,Raw,文本,URL编码数据,cookie-parser是一个解析cookie的中间件,然后通过req.cookies可以获取传递过来的cookie,并转化为对象。Multer是一个node.js中间件,用于处理enctype="multipart/form-data"的表单数据。cnpminstallbody-parser--savecnpminstallcookie-parse--savecnpminstallmulter--save看一下express框架的版本号:cnpmlistexpress创建Express框架第一个实例输出目的:"hello",named:express_demo.js文件//导入节点模块constexpress=require('express');//创建express程序constapp=express();//添加HTTP路由app.get('/',function(request,response){//输出响应消息response.send('helloexpress');});//启动HTTP服务器app.listen(8080,function(){console.log('expressapp');});执行项目:nodeexpress_demo.js然后就可以使用http://127.0.0.1:8080express框架使用请求对象和响应对象来处理请求和响应数据:app.get('/',function(req,res){})请求对象是HTTP请求。req.app是回调,回调函数是一个外部文件。使用req.app访问express实例req.baseUrl获取当前安装的URL路径。req.ip获取主机名、ip地址req.originalUrl获取原始请求URLreq.params获取路由参数req.path获取请求路径req.protocol获取协议类型req.query获取URL查询参数req.route获取当前匹配的快递路由req.subdomains获取子域名req.accepts()检查可接受请求的文档类型req.get()获取指定的HTTP请求头req.is()判断mime类型的响应对象requestheaderContent-Type作为HTTP响应res.app是回调,回调函数的外部文件,使用res.app访问express的实例res.append()附加指定的HTTP请求头res.set()重置之前设置的请求头res.append()res.clearCookie()清除Cookiesres.download()传输指定路径文件res.get()返回指定HTTP请求头res.json()传输json响应res.jsonp传输jsonp响应res.location()只设置响应的LocationHTTP请求头,不设置状态码或关闭responses.redirect()设置响应的LocationHTTP请求头,并设置状态码302res.send()发送HTTP响应res.status()设置HTTP状态码res.type()设置Content-Typeexpressroute的MIME类型expressroute,由URI,HTTP请求组成几个句柄//导入节点模块constexpress=require('express');//创建express程序constapp=express();//添加http路由app.get('/',function(request,response){//输出响应消息response.send('hellodashucoding');});app.get('/users',function(req,res){//req,resres.send('user');});//启动HTTP服务器app.listen(8080,function(){console.lo('expressapp');});GET请求指定资源的表示,仅用于获取数据POST用于向指定资源提交尸体HEAD请求与GET相同的响应,但没有响应主体PUT用于请求负载替换当前所有表示目标资源DELETE删除指定资源CONNECT建立到目标资源标识的服务器的隧道OPTIONS用于描述目标资源的通信选项PATCH用于部分修改资源申请app.get('/about',function(req,res){res.send('about');});app.get('/ab?cd',function(req,res){res.send('ab?cd');}app.get('/ab(cd)?e',function(req,res){res.send('ab(cd)?e');});路由句柄,提供多个请求处理的回调函数,next('route')方法letd1=function(req,res,next){console.log('1');next();};letd2=function(req,res,next){console.log('2');next();});letd3=function(req,res,next){console.log('3');下一个();});app.get('/',[d1,d2]);next用于执行下一个回调函数,next('route')用于执行下一个相同的路由。//导入节点模块constexpress=require('express');//创建express程序constapp=express();//添加http路由app.get('/',function(request,response){//输出响应消息response.send('hello');});app.get('/users',function(req,res){res.send('user');});//动态app.get('/users/id',function(req,res){letid=req.params.id;//返回响应res.send('id='+id);});//启动HTTP服务器应用程序。listen(8080,function(){console.log('expresssapp');});constexpress=require('express');constapp=express();app.get('/',function(request,response){response.send('hello');});app.get('/users',function(req,res){res.send('users');});app.param('id',(req,res,next)=>{console.log('hello');if(req.params.id==='1'){next();}else{res.sendStatus(404);}});app.get('/users/:id',(req,res)=>{res.send('hello');});//启动服务器app.listen(8080,function(){console.log('express');});pug查看模板命令行下载:npminstallpugpug.compile()将pug代码编译成JavaScript函数。app.jsconstexpress=require('express');constapp=express();//配置视图模板app.set('viewengine','pug');app.set('views','./views');//添加HTTP路由app.get('/',function(request,response){response.render('index.pug');//输出响应信息,加载解析index.pug文件});app.get('/users',function(req,res){res.render('users.pug',{title:'user',users:[{id:1,name:'张三',age:18}]});});//启动HTTP服务器app.listen(8080,function(){console.log('express');});users.pug:doctypehtmlhtmlheadmeta(charset="utf-8")title#{title}body#appforuserinusersdivpid=#{user.id}pname=#{user.name}page=#{user.age}pug.render()模板函数:constpug=require('pug');console.log(pug.renderFile('template.pug',{name:'dada'});执行pug.renderFile()函数,编译后的函数会自动存入里面在缓存中??别忘了留下你的学习足迹【点赞+收藏+评论】AuthorInfo:【作者】:Jeskson【原创公众号】:达达前端小酒馆【福利】:公众号回复【资讯】送自学资料大礼包(进群分享,想要什么就说,看我有没有)!【转载说明】:转载请注明出处,谢谢您的支持合作!~大前端开发,定位前端开发技术栈博客,PHP背景知识点,web全栈技术领域,数据结构与算法,网络原理等以通俗易懂的方式呈现给小伙伴-理解方式。感谢您的支持,感谢您的厚爱!!!如本账号内容有问题(例如:涉及版权或其他问题),请及时联系我们进行整改,我们会尽快处理。请喜欢它!因为您的认可/鼓励是我写作最大的动力!欢迎来到达达的CSDN!这是一个有品质有态度的博客
