我的前端自学 express框架

(一)概述
Express是一个基于Node平台的web网页开发框架,它提供了一系列强大的特性,帮助你创建各种web应用。我们可以用npm install express命令下载它。
Express框架特性:
1 .提供了方便简洁的路由定义方式(router模块就是从express框架中抽取的)
2 .对获取http请求参数进行了简化处理
3 .对模板引擎支持程度高,方便渲染动态HTML页面
4 .提供了中间件机制,有效控制http请求
5 .拥有大量第三方中间件对功能进行扩展
(二)
1 .使用express框架搭建服务器不需要再引入http模块,我们可以直接调用框架的express方法,并创建路由

const express = require("express");
const app = express();
app.get("/", (req, res) => { res.send("ok") });

2 .使用send方法代替end对请求进行响应。
①send方法内部会自动检测响应内容的类型
②send方法会自动设置http状态码

(三)中间件
中间件就是一堆方法,可以接收客户端发来的请求,可以对请求做出响应,也可以将请求交给下一个中间件继续处理。
中间件由两部分构成,中间件方法以及请求处理函数。
中间件方法由express提供,用于拦截请求,请求处理函数由开发任意提供,负责处理请求。可以对同一个请求设置多个中间件,进行多次处理。默认情况下,请求从上到下依次匹配中间件,一旦匹配成功则终止匹配,如果需要继续往下匹配,则在回调函数中调用next方法。

const express = require("express");
const app = express();
app.get("/", (req, res, next) => { req.name = "ROSE"; next() });
app.get("/", (req, res) => { res.send( req.name ) });
app.listen(80);

2 .app.use中间件
app.use中间件可以不传递任何请求参数,也就说任何请求都会走这个中间件,前提是将这个中间件写在了所有中间件的最上方

app.use((req, res, next) => { 
	// 处理程序
	next();
})

3 .中间件的实际应用
①路由保护,如用户在访问路由页面时,可以先使用中间件判断用户的登录状态,如果未登录则拦截请求,阻止用户访问需要登录的页面
②网站维护公告,在所有路由的最上面定义接收所有请求的中间件,直接为客户端做出响应
③自定义404页面,在所有路由的最后面定义中间件,如果用户请求的页面匹配不到所有路由,则返回404页面,使用res.status()来定义状态码

app.use((req, res) => {
	res.status(404).send("请求的页面没有找到");
})

4 .错误处理中间件
错误处理中间件就是一个集中处理错误的地方,错误处理函数第一个形参为错误对象,错误对象的message属性包含了同步错误信息。
错误处理中间件只能捕获同步错误 异步错误请用next()方法传出,
next方法如果不加参数表示将处理交给下一个中间件,如果加参数则表示触发错误处理中间件

const fs = require("fs");
const express = require("express");
const app = express();
app.get("/", (req, res, next) => {
	fs.readFile("错误目录", (err, doc) => {
		if (err != null) {
			next(err);
		} else {
			res.send(doc);
		}
	});
});
app.use((err, req, res) => {
	res.status(500).send("当前发生未知错误");
});
app.listen(80);

(四)模块化路由
在实际开发中,将大量的路由写在同一页面的代码时难以维护的,我们可以用express提供的Router方法创建二级路由,并将不同的请求处理放置在不同的文件中,这就是模块化路由。

(五)express框架请求参数接收
1 .get请求参数
①在express框架中,使用req.query可以轻松获取get请求参数,并自动转换为对象格式
②get请求参数的另一种方式:
在书写路由代码时,可以给请求添加占位符,用冒号表示

server.use("/index/:id/:name", (req, res) => {
	// 它表示用户在地址栏输入请求参数时,要匹配每一个占位符
	// 获取此类get请求要用req.params
	res.send(req.params);
})

比如要匹配以上路由,地址栏就要输入以下格式
localhost/index/xxx/xxx

2 .post请求参数
post请求参数的接收需要借助第三方包 body-parser
body-parser模块是express官方提供的从框架中抽取出去的模块,当需要使用此模块时,使用npm命令下载即可
1 . 引入body-parser模块

const bodyParser = require("body-parser");

2 .配置body-parser模块
①使用app.use中间件拦截所有请求
②调用bodyParser模块下的urlencoded方法对请求进行处理,urlencoded方法内部会检测是否包含请求参数,如果包含,会接收请求参数,并且将请求参数转换为对象类型,再对req对象添加body属性,最后在方法内部调用了next方法将请求控制器交给下一个中间件,我们就可以使用req.body获取post请求参数。
③在urlencoded方法中传递了一个extended参数,当extended值为false时,会自动调用querystring对请求参数进行处理,当值为true时,会调用QS的第三方模块对请求参数进行处理,QS在功能上要比querystring更加强大,这里我们用querystring已经足够了。

const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded( { extended: false } ));
app.post("/add", (req, res) => {
	res.send(req.body);
})

(六)静态资源处理
使用express内置的express.static可以相当方便的设置静态资源托管
调用use中间件拦截请求,直接调用express.static当作处理函数,并将静态资源目录当作参数传递进去,当然,路径还是选择绝对路径,是不是相当的方便

server.use(express.static(path.join(__dirname, "views")));

(七)express-art-template
在这里插入图片描述

(八)最后
Node.js 是前端工作人员转向后端开发的最快途径,也是前端的加分项,但不是必选项(当然这得看公司需求)。在其他前端知识还没有掌握扎实的情况下,学到这里也就够了,能够使用node搭建简易的服务,用来测试前端代码,也为Ajax技术的掌握提供基础。当前端技术掌握的足够扎实后,再来继续深入学习node.js

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值