做者 | Jesksonhtml
来源 | 达达前端小酒馆前端
Express服务器开发node
建立Express应用程序,Express路由,pug视图模板的使用web
让咱们来建立Express应用程序,Express是一个Node.js Web应用框架,它很强大,能够为用户建立各类Web应用和HTTP工具,使用Express框架能够搭建一个完整功能的网站。算法
能够用中间件来响应HTTP请求,能够定义路由表用于执行不一样的HTTP请求,能够向模板传参数来动态渲染HTML页面。express
命令行安装Express框架:npm
cnpm install express --save
Express框架安装在node_modules目录中,而后须要一块儿安装以下模块:json
body-parser是node.js的中间件,能够处理JSON,Raw,Text,URL编码的数据,cookie-parser是一个解析Cookie的中间件,而后经过req.cookies能够获取传过来的Cookie,并转为对象。segmentfault
multer是node.js的中间件,用于处理enctype="multipart/form-data"的表单数据。缓存
cnpm install body-parser --save cnpm install cookie-parse --save cnpm install multer --save
让咱们来看看express框架的版本号:
cnpm list express
建立第一个Express框架实例
目的为了输出:“hello”,命名:express_demo.js文件
// 引入node模块 const express = require('express'); // 建立express程序 const app = express(); // 添加HTTP路由 app.get('/', function(request, response){ // 输出响应消息 response.send('hello express'); }); // 启动HTTP服务器 app.listen(8080, function(){ console.log('express app'); });
执行项目:
node express_demo.js
而后就能够用http://127.0.0.1:8080
express框架使用request对象和response对象来处理请求和响应的数据:
app.get('/', function(req,res){ })
req.app
为callback,回调函数外部文件,利用req.app访问express的实例
req.baseUrl
获取当前安装的URL路径
req.body/req.cookies
为得到“请求主体”
req.hostname/req.ip
获取主机名,ip地址
req.originalUrl
获取原始请求URL
req.params
获取路由的参数
req.path
获取请求路径
req.protocol
获取协议类型
req.query
获取URL的查询参数
req.route
获取当前匹配的express路由
req.subdomains
获取子域名
req.accepts()
检查可接受请求的文档类型
req.get()
获取指定的HTTP请求头
req.is()
判断请求头Content-Type的Mime类型
res.app
为callback,回调函数外部文件,利用res.app访问express的实例
res.append()
追加指定HTTP请求头
res.set()
在res.append()后重置以前设置的请求头
res.clearCookie()
清除Cookie
res.download()
传送指定路径的文件
res.get()
返回指定的HTTP请求头
res.json()
传送json响应
res.jsonp
传送jsonp响应
res.location()
只设置响应的LocationHTTP请求头,不设置状态码或者close response
res.redirect()
设置响应的LocationHTTP请求头,而且设置状态码302
res.send()
传送HTTP响应
res.status()
设置HTTP状态码
res.type()
设置Content-Type的MIME类型
express路由,由URI,HTTP请求和若干个句柄组成。
// 引入node模块 const express = require('express'); // 建立express程序 const app = express(); // 添加http路由 app.get('/',function(request,response) { // 输出响应消息 response.send('hello dashucoding'); }); app.get('/users', function(req,res) { // req , res res.send('user'); }); // 启动HTTP服务器 app.listen(8080, function(){ console.lo('express app'); });
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')方法
let d1 = function(req,res,next){ console.log('1'); next(); }; let d2 = function(req,res,next){ console.log('2'); next(); }); let d3 = function(req,res,next){ console.log('3'); next(); }); app.get('/', [d1,d2]);
next用于执行下一个回调函数,next('route')用于执行下一个相同路由。
// 引入node模块 const express = require('express'); // 建立express程序 const app = 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){ let id = req.params.id; // 返回响应 res.send('id='+id); }); // 启动HTTP服务器 app.listen(8080,function(){ console.log('expresss app'); }); const express = require('express'); const app = 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视图模板
命令行下载:
npm install pug
pug.compile()将pug代码编译成一个JavaScript函数。
app.js const express = require('express'); const app = express(); // 配置视图模板 app.set('view engine', '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:
doctype html html head meta(charset="utf-8") title #{title} body #app for user in users div p id=#{user.id} p name=#{user.name} p age=#{user.age} pug.render()模板函数: const pug = require('pug'); console.log(pug.renderFile('template.pug',{ name:'dada' });
执行pug.renderFile()函数,会把编译出来的函数自动储存到内部缓存中
做者Info:
【做者】:Jeskson
【原创公众号】:达达前端小酒馆。
【福利】:公众号回复 “资料” 送自学资料大礼包(进群分享,想要啥就说哈,看我有没有)!
【转载说明】:转载请说明出处,谢谢合做!~
大前端开发,定位前端开发技术栈博客,PHP后台知识点,web全栈技术领域,数据结构与算法、网络原理等通俗易懂的呈现给小伙伴。谢谢支持,承蒙厚爱!!!
若本号内容有作得不到位的地方(好比:涉及版权或其余问题),请及时联系咱们进行整改便可,会在第一时间进行处理。
这是一个有质量,有态度的博客