express与ejs学习讲解
Express
Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
Express路由解析
Express路由根据请求类型来处理:
路由4个基本方法:get,post,all,use 这四个方法,可以根据前台不同的请求 方式来执行 all函数能够处理所有的请求类型
var express=require('express'); var app=express(); //接受前端发来的get请求 app.get('/list',function(req,res){ res.send('list'+req.url); }); //接受前端发来的post请求 app.post('/post',function(req,res){ res.send('post'+req.url); }); //所欲的请求都能处理 app.all('/all',function(req,res){ res.send('all'+req.url); }); //所有的请求都能处理 app.use('/use',function(req,res){ res.send('use'+req.url); });
Express路由路径处理
nodejs最主要的核心就是根据url不同路径要处理不同的流程 路由路径和请求方法一起定义了请求的端点,他可以是字符串,字符串模式或者正则表达式
(1):字符串:直接根据路径名进行精确的匹配,如:app.get('/about', function (req, res) {});
(2):字符串模式:根据 一定的协议进行路径模糊匹配
(3):正则表达式:根据正则表达式进行匹配 注意:如上路由筛选是单个路径筛选,如果是多及路径则需要使用use函数来处理 <:name>的使用方式:是模糊匹配,并在回调函数中进行数据提取
当是ejs文件
var express=require('express'); var path=require('path'); var fs=require('fs'); var app=express(); app.use(function(req,res,next){ var rs=fs.createReadeStream(path.join(__dirname,'public',req.path,res)) }) app.set('view engine','ejs'); app.set('views',__dirname); app.get('/',function(req,res){ res.render('index',{ name:'zz', age:6 }) }); app.listen(8090);
当是html文件需要添加两行代码
app.set('view engine','html'); app.engine('html',require('ejs').__express);
Express中间件
中间件是一个函数,例如前面所说的get,post,all,use等,还有一个Next,主要用于web应用中处于请求响应循环流程中的中间件 Express是一个自身功能及其的简单,完全是路由和中间件构成的一个web开发框架:从本质上来说,一个Express应用就是在调用各种中间件 如果当前中间件没有终结请求-响应循环,则必须调用next()方法将控制权交给下一个中间件,否则请求就会挂起 路由句柄:提供多个回调函数(两种方式) route:使用 app.route() 创建路由路径的链式路由句柄 express.Router:使用 express.Router 类创建模块化、可挂载的路由句柄 中间件的设计逻辑:
每个路由设计顺序非常的严禁,谁先谁后必须想清楚
静态服务设计
格式:app.use(paht1,express.static(path2));
path1用于请求路径路由匹配,如果不写,则表示所有路径必须都匹配静态服务,匹配文件失败则继续走后续中间件
path2用于设定静态文件夹,此目录中所有的文件都可以通过静态文件方式访问
说明:在node.js中,所有路由匹配都是中断的:匹配逻辑是从上往下进行匹配,如果匹配成功则中断匹配,如果还需要继续,则通过next中间件进行后续匹配
get请求参数获取方式,由于get请求的参数直接在url中跟随,所以直接通过req.query的方式获取到 Post请求参数获取方式,不能直接在express中获取,必须要借助第三方的模块body-parser来获取 如果 Post请求中还涉及到文件的上传,则必须使用formidable模块来实现
Express中ejs使用
第一步引入模板引擎: app.set(“view engine”,”ejs”); 第二部通过render方法来给模板注入json数据:res.render(path,json); 注意:render寻找模板文件一般会默认在views目录下寻找,且模板后缀名为.ejs 设置模板文件路径:app.set(“views”,”路径文件夹”);
Express中的req对象和res对象
Express中的req对象和res对象和原生node.js对象不是同一个,虽然有些方法名相同
req对象常用函数和属性:
(1)req.originalUrl、req.baseUrl
(2)req.cookies、req.params、req.query
res对象常用函数和属性
(1)res.cookie()、res.clearCookie()
(2)res.send()、res.end()、json()
(3)res.status()