欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

express与ejs学习讲解

程序员文章站 2024-01-23 20:06:04
Express Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。 Expr...

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