大佬教程收集整理的这篇文章主要介绍了node.js中express框架的基本使用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
express是一个基于node.js平台的,快速,开放,极简的web开发框架。
一、安装 express
npm install express --save
二、简单使用 express
//引入express const express = require(‘express‘); //创建一个应用 let app = express(); //匹配GET请求路径设置回调函数 app.get(‘/Hello‘,function (req,res) { res.end(‘Hello‘); }); //监听端口 app.listen(8888,function () { console.log(‘port : 8888‘); });
通过访问 localhost:8888/Hello 我们就可以看到内容输出了。
当然 express 还支持其他的一些请求方法,比如 app.post(),app.put(),app.delete(),app.head() 等。
//引入express const express = require(‘express‘); //创建一个应用 let app = express(); //匹配POST请求 app.post(‘/Hello‘,res) { res.end(‘post Hello‘); }); //监听端口 app.listen(8888,function () { console.log(‘port : 8888‘); });
如果我们想要匹配所有的请求路径,可以使用通配符 * 号。
//引入express const express = require(‘express‘); //创建一个应用 let app = express(); app.get(‘/Hello‘,res) { res.end(‘Hello‘); }); //*号匹配所有路径 app.get(‘*‘,res) { res.end(‘not found‘); }); //监听端口 app.listen(8888,function () { console.log(‘port : 8888‘); });
express 还提供了 all() 方法,可以匹配所有请求方法。
//引入express const express = require(‘express‘); //创建一个应用 let app = express(); //匹配所有请求方法 app.all(‘/Hello‘,res) { res.end(‘all Hello‘); }); //监听端口 app.listen(8888,function () { console.log(‘port : 8888‘); });
三、express 中间件的概念
express中间件就是处理http请求的函数,用来完成一些特定的操作,比如登陆检查,权限控制等等。
1、一个中间件处理完请求和响应,可以把数据传递给下一个中间件。
2、在回调函数中使用 next(),就可以让请求继续向下传递。
3、通过不同路径,分别执行不同的中间件。
我们可以使用 use() ,在路由数组中添加一个中间件。注意我们设置的路由路径最终会存放在一个数组里,由上到下的把路径加入这个数组中。
//引入express const express = require(‘express‘); //创建一个应用 let app = express(); //如果没有设置路径,则会匹配全部 app.use(function (req,res,next) { console.log(‘匹配全部路径‘); //注意这里如果不调用next(),则请求并不会向下传递。 next(); }); app.use(‘/Hello‘,next) { console.log(‘use Hello‘); next(); }); app.get(‘/Hello‘,next) { console.log(‘get Hello‘); next(); }); //监听端口 app.listen(8888,function () { console.log(‘port : 8888‘); });
next() 函数可以传入一个参数,表示错误信息,默认将执行错误中间件。
//引入express const express = require(‘express‘); //创建一个应用 let app = express(); app.get(‘/Hello‘,next) { console.log(‘get Hello‘); next(‘error!!!‘); }); //注意错误处理中间件的参数是4个 app.use(function (err,req,next) { console.log(err); res.end(err); }); //监听端口 app.listen(8888,function () { console.log(‘port : 8888‘); });
四、express中的request对象
在express中对原生的req请求对象进行了扩展,添加了一些属性和方法。
//引入express const express = require(‘express‘); //创建一个应用 let app = express(); app.get(‘/Hello‘,next) { //主机名 res.write(‘req.hostname : ‘ + req.hostname + ‘\r\n‘); //请求URL的路径 res.write(‘req.path : ‘ + req.path + ‘\r\n‘); //查询字符串对象 res.write(‘req.query : ‘ + JSON.Stringify(req.query) + ‘\r\n‘); //请求的远程IP地址 res.write(‘req.ip : ‘ + req.ip + ‘\r\n‘); //请求方法 res.write(‘req.method : ‘ + req.method + ‘\r\n‘); res.end(); }); //监听端口 app.listen(8888,function () { console.log(‘port : 8888‘); });
通过 req.params 获取路径里的参数
//引入express const express = require(‘express‘); //创建一个应用 let app = express(); app.get(‘/list/:key/:page/:size‘,next) { //注意,设置了多少参数,地址就需要传入多少参数 res.end(JSON.Stringify(req.params)); }); //监听端口 app.listen(8888,function () { console.log(‘port : 8888‘); });
五、express中的response对象
express中也对原生的res对象进行了扩展,添加了一些属性和方法。
const path = require(‘path‘); //引入express const express = require(‘express‘); //创建一个应用 let app = express(); app.get(‘/send/str‘,next) { //send方法会自动判断数据类型,并进行相应的head信息设置 //如果参数是字符串,则Content-Type为 text/html res.send(‘Hello,world‘); }); app.get(‘/send/arr‘,next) { //如果参数是一个数组,则返回json res.send([1,2,3]); }); app.get(‘/send/obj‘,next) { //如果参数是一个对象,则返回json res.send({name: ‘xiaoxu‘,age: 24}); }); app.get(‘/send/number‘,next) { //如果是一个数字,则返回相应状态码短语 res.send(404); }); app.get(‘/download‘,next) { //提示下载文件 res.download(‘./1.txt‘); }); app.get(‘/json‘,next) { //响应json对象 res.json({name: ‘xiaoxu‘}); }); app.get(‘/jsonp‘,next) { //客户端请求时,需要带上callBACk=test res.jsonp(‘Hello‘); }); app.get(‘/redirect‘,next) { //重定向到一个地址 res.redirect(‘http://www.baidu.com‘); }); app.get(‘/sendfile‘,next) { //发送一个文件 res.sendFile(path.resolve(‘./1.txt‘)); }); app.get(‘/sendstatus‘,next) { //发送一个状态码 res.sendStatus(302); }); //监听端口 app.listen(8888,function () { console.log(‘port : 8888‘); });
六、ejs模板的使用
支持express的模板有很多种,这里我们使用ejs作为模板引擎。
安装ejs:
npm install ejs
使用ejs模板
const path = require(‘path‘); const express = require(‘express‘); //创建一个应用 let app = express(); //设置模板引擎 app.set(‘view ENGIne‘,‘ejs‘); //设置模板目录 app.set(‘views‘,path.join(__dirname,‘views‘)); //监听 app.listen(8888);
如果我们希望,ejs能够渲染html页面,可以使用如下
const path = require(‘path‘); const express = require(‘express‘); let app = express(); //设置视图引擎为html引擎 app.set(‘view ENGIne‘,‘html‘); //设置视图的路径 app.set(‘views‘,‘views‘)); //配置html引擎 app.ENGIne(‘html‘,require(‘ejs‘).__express); app.listen(8888);
const path = require(‘path‘); const express = require(‘express‘); let app = express(); app.set(‘view ENGIne‘,‘html‘); app.set(‘views‘,‘views‘)); app.ENGIne(‘html‘,require(‘ejs‘).__express); app.get(‘/Hello‘,next) { //参数一表示模板的名称,会在当前项目目录下的views目录查找 //参数二表示传入模板中的数据 res.render(‘Hello‘,{ name: ‘xiaoxu‘,age: 24 }); }); app.listen(8888);
<!doctype html> <html lang="zh-CN"> <head> <Meta charset="UTF-8"> <title>Document</title> </head> <body> <%= name %> <%= age %> </body> </html>
七、静态文件服务器
有些时候我们需要在页面上加载css,js,img等静态资源,指定存放静态资源的目录,浏览器发出非html文件请求时,服务器会到这个目录下找对应的资源。
const path = require(‘path‘); const express = require(‘express‘); let app = express(); app.set(‘view ENGIne‘,require(‘ejs‘).__express); //注意express.static这个中间件是express内置的 app.use(express.static(path.join(__dirname,‘public‘))); app.get(‘/Hello‘,age: 24 }); }); app.listen(8888);
八、使用body-parser中间件解析post过来的数据
安装body-parser
npm install body-parser
使用body-parser
const path = require(‘path‘); const express = require(‘express‘); const bodyParser = require(‘body-parser‘); let app = express(); app.set(‘view ENGIne‘,require(‘ejs‘).__express); //解析 application/json app.use(bodyParser.json()); //解析 application/x-www-form-urlencoded app.use(bodyParser.urlencoded({extended:falsE})); app.post(‘/form‘,res) { console.log(req.body); }); app.listen(8888);
以上是大佬教程为你收集整理的node.js中express框架的基本使用全部内容,希望文章能够帮你解决node.js中express框架的基本使用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。