Nodejs的Express框架简单使用

一、什么是Express

Express就是一个为nodejs设计的web开发框架,它基于nodejs平台,本身功能极简,灵活,它提供了一系列强大的特性来帮助创建各种web和移动设备应用 。

特点:
1、可以设置 中间件来响应http请求
2、定义了路由用于执行不同的http请求动作
3、可以通过模板传递参数来动态渲染html页面

二、express的使用

1、安装
前提:在项目目录下要安装express框架(或者全局安装 -g);
win+R ——CMD(打开命令行窗口)——输入 npm install express -g;——安装完成后通过
express -V 查看express安装的版本号,注意V大写
2、使用:
在js对应的文件模块中

//引入所需的模块
var http=require('http')
var express=require('express')
//创建express对象app
var app=express();
//在app上获取请求,响应内容
app.get('/',function(req,res){   //通过get方式请求页面,'/'代表请求的是根目录(一般为首页)
    res.send('欢迎访问首页');   //send()方法发送数据到客户端
    res.end();           //响应结束
})
//创建服务并监听
http.createServer(app).listen(3000,function(err){
   if(!err)
    console.log('listening....')  //当监听成功会执行
})

3、总结:
1)、express就是一个web开发框架,基于nodejs,
2)、express封装了很多nodejs的原生方法用于操作请求,响应数据等
3)、app===express();

三、express路由

3.1 路由是什么?
路由:router,是指如何定义应用 (请求的url)的端点urls以及如何响应客户端的请求,(路由实际就是url的分发,根据请求的url不同,执行不同的业务逻辑。)
作用:分发数据,根据请求的不同,分发响应不同的内容;这里写图片描述

四、路由模块

上面的代码中直接在app里写路由,会有一个问题,当页面多了时,要判断的请求url就多了,这样使整个模块的功能就不明确了,因此可以把app.get/post这些路由抽出来,单独写成一个模块,而在app文件里,只需要引用相应的模块再作用即可,具体做法如下:
1、在项目文件夹下的router文件夹中,创建两个模块admin.js, user.js 分别对应不同页面请求的url

//1、引入express模块
var express=require('express')
var ejs=require('ejs');
var querystring=require('querystring')
//2、创建路由
var router=express.Router();
//4、添加路由,做出响应
router.get('/',function(req,res){
    res.send('<h1>欢迎来到首页</h1><a href="admin/login">点击跳转到登录页面</a>')
    res.end();
})
router.get('/login',function(req,res){
    ejs.renderFile('../posthtml.html',function(err,data){
        if(err){
            console.log('读取失败')
        }else{
            res.send(data)
            res.end();
        }
    })
});
//3、暴露模块接口出去
module.exports=router;

2、在app文件中使用admin模块

var http=require('http')
var express=require('express')
//引入admin模块
var admin=require('./router/admin');
//创建express对象app
var app=express();
//使用admin模块
app.use('/admin',admin);    //这里的路径'/admin',使用admin模块,这个行为就是把admin模块挂载到/admin路径下,通过/admin就可以访问admin的主页,
//创建服务并监听
http.createServer(app).listen(3001,function(){
    console.log('listening....')
})

3、在客户端(浏览器)查看效果
这里写图片描述
这里写图片描述
通过:127.0.0.1:3001/admin——访问到admin主页
通过:127.0.0.1:3001/admin/login——访问到admin下的子页面
在这基础之上就可以通过扩展实现返回一个html页面的功能。

五、中间件

在express中,中间件的实质就是函数,它们有一定的作用(如:增、删、改、查),起到过滤请求和响应的作用。
>中间件:Middleware,本质为一个函数,它可以访问请求对象request(res),响应对象response(res),以及在web应用上处于请求-响应循环中的中间件。
5.1   功能
1、执行任何代码
2、修改请求和响应对象
3、终结请求-响应循环
4、调用堆栈中的下一个中间件
【注意】:如果当前中间件没有结束请求-响应循环,则必须调用next()方法将控制权交给下一个中间伯,否则请求就会挂起。
5.2   中间件的分类
    1、应用级中间件——自定义的中间件
var express=require('express')
var http=require('http')
var app=express();
//自定义中间件
app.use(function(req,res,next){
    console.log('中间件1')
    next();
});
app.use(function(req,res,next){
    console.log('中间件2')
    next();
});
app.get('/',function(req,res){
    res.send('welcome....')
    res.end();
})
http.createServer(app).listen(3002,function(){
    console.log('listening....')
})

2、express内置中间件
static是express内置的唯一的中间件,它上面有很多的方法。

var options = {
  dotfiles: 'ignore',
  etag: false,
  extensions: ['htm', 'html'],
  index: false,
  maxAge: '1d',
  redirect: false,
  setHeaders: function (res, path, stat) {
    res.set('x-timestamp', Date.now());
  }}

app.use(express.static('public', options));

3、第三方中间件(如:body-parser)
第三方中间件是在express的基础之上开发出来的,在使用之间要先安装相应的中间件,npm install body-parser;
【需求】:拿到用post方式提交的表单中的数据

//引入所需模块,http处理网络数据传输,express提供方法,ejs模板引擎,这里可以拿到index.html模板,body-parser:用于将req中post方式提交的数据放在req.body中
var http=require('http')
var express=require('express')
var bodyparser=require('body-parser')
var ejs=require('ejs')
//创建app
var app=express();
//使用bodyparser中间件,解析post方式提交的请求数据
app.use(bodyparser.urlencoded({extended:false}))
//当访问主页时返回的页面
app.get('/',function(req,res){
    ejs.renderFile('./index.html',function(err,data){
        res.send(data)
        res.end();
    })
})
//在index内的form表单里提交时,在后台打印req.body的值
app.post('/login',function(req,res){
    console.log(req.body)   //{username:'admin',pwd:'12345'}
})
//创建服务,并监听;一般放在最后,但要先写。
http.createServer(app).listen(3004,function(){
    console.log('listening....')
})

六、项目中的views层

在项目中,views层一般用来存放模板的(html),router层用来放路由模块的,public层用来存放一些静态的模板(如:css,img,js等);
【需求】用res.render(‘htmlpath’)的方式来渲染一个请求的页面

var ejs=require('ejs')//用于模板引擎
var path=require('path')//用于views层的绝对路径
//2、创建app
var app=express();
//4、定义一个模板引擎
app.engine('html',ejs.__express);
//5、设置引擎的模板初始路径
app.set('views',path.join(__dirname,'views'));
//作用:设置html模板的路径为views,下面代码在使用引擎返回页面时,只需写相对views的路径即可
//6、设置对应模板引擎
app.set('views engine','html');
//3、get方式提交时,渲染页面
app.get('/',function(req,res){
    //使用res.render方式发送页面
    res.render('index.html')
    //在这里不需要再写html相对当前文件的路径,而是直接通过views目录来找到index.html文件
})
//3、创建服务器并监听
http.createServer(app).listen(3005,function(){
    console.log('listening.....')
})

【总结】:
1、app.set(‘views’,path.join(__dirname,’views’));——的作用是设置html文件模板的来源是views文件夹,当下面要发送views文件夹里的html文件到客户端时,只需要用’index.html’的方法,即不需要再写html相对于当前js文件的路径来查找要发送的html。
2、使用模板引擎的步骤:
1)、引入模板引擎require(’ejs‘)
2)、定义一个模板引擎app.engine(‘html’,ejs.__express);
3)、设置该模板引擎的模板路径(用到path.join来获取根目录到views的绝对路径)
app.set(‘views’,path.join(__dirname,’views’));
4)、设置模板引擎
app.set(‘views engine’,’html’);
5)、用新方式来发送html模板到客户端
app.get(‘/’,function(req,res){
res.render(‘index.html’)
});
5、模板引擎的作用就在于方便在发送数据时动态的去响应页面

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sophie_U

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值