express与ejs

本文详细介绍了Express框架的基本概念、路由处理、中间件机制以及EJS模板引擎的使用方法。Express是一个基于Node.js的轻量级Web应用框架,支持多种路由方法如get、post等,通过中间件实现请求响应流程。EJS模板引擎的集成使得动态渲染页面变得简单,通过res.render()注入数据。同时,文章还讨论了req和res对象的重要属性和方法,如req.query、res.send等。

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值