express介绍
1.概念:
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
使用 Express 可以快速地搭建一个完整功能的网站。
Express 框架核心特性:
可以设置中间件来响应 HTTP 请求。
定义了路由表用于执行不同的 HTTP 请求动作。
可以通过向模板传递参数来动态渲染 HTML 页面。
2. 基本应用:
(1)express搭建静态服务器(Web服务器)
后端渲染------后端语言 + 后端渲染模板,生成前端的html结构,然后在发送到前端
常见: php / java + jsp / Node + html/ejs/pug —生成前端的html结构,然后发送到前端
例:Node.js+html进行后端渲染
1.搭建web服务器并引入html模板文件:
引入第三方模块
const express = require('express');
得到app对象,是为了绑定中间件
const app = express();
定义一个端口
const PORT = 2000;
定义一个域名
const HOST = 'localhost';
引入文件系统模块
const fs = require('fs');
要想将模板中的内容发送出去,我们可以通过app对象和路由中间件来做
app.get(‘路由’,回调函数);
回调函数有三个参数,request(请求)、response(响应)、next-(从请求到响应的过程)—这个回调函数就是中间件
app.get('/text', (resquest, response, next) => {
//fs.readFile('文件路径',编码,回调函数)
//回调函数有两个参数:error(错误)、content(文件内容)
//此处的文件路径即为html模板文件路径
fs.readFile('./module/module.html', 'utf8', (error, content) => {
if (error) {
console.log(error)
} else {
response.send(content)
}
})
})
监听服务器
app.listen(PORT, HOST, () => {
console.log(`The server is running at :http://${HOST}:${PORT}`)
})
2.浏览器预览效果:
点击终端显示的地址,跳转到浏览器,在搜索框输入路径(此处为/text)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190720083250967.png)
(2)express搭建api服务器
在api服务器中,一个路由就是一个api,也就是一个后端接口
步骤:
☆ 首先搭建api服务器
☆ 然后建立路由模块
☆ 然后运行api服务器代码,输出接口数据
搭建api服务器代码:
引入express模块(前提是已经安装了该模块,npm i express )
const express = require('express');
得到app对象
const app = express();
定义一个端口
const PORT = 5000;
定义一个域名
const HOST = 'localhost';
引入text路由模块
require(‘路由模块路径’),此处的路由模块简单的说,就是一个数据接口,路由模块文件里放的是数据
const userRouter = require('./route/text.js');
通过app对象使用路由模块
app.use('', userRouter)
监听api服务器
app.listen(PORT, HOST, () => {
console.log(`The Server is running at:http://${HOST}:${PORT}`)
})
路由模块代码:
引入express模块
const express = require('express');
得到路由对象,模块创建
const router = express.Router()
打造接口(有get、put、delete、post方法)
格式:router.get(路由路径,回调函数)
使用restful api规则来暴露接口
router
.route('/text')
.get((req, res, next) => {
//后端数据
res.json({
ret: true,
status: '查询成功'
})
})
模块的导出:
module.exports = router
两种方式可以检测接口可以使用:
方式一:在终端点击地址跳转到浏览器,在搜索框输入路由地址(此处为 /text)
方式二:请求模拟工具 insomina
【补充】:Node.js RESTful API(https://www.runoob.com/nodejs/nodejs-restful-api.html)
REST即表述性状态传递(英文:Representational State Transfer,简称REST)是一种软件架构风格。
表述性状态转移是一组架构约束条件和原则。基于 REST 架构的 Web Services 即是 RESTful。需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML(标准通用标记语言下的一个子集)以及HTML(标准通用标记语言下的一个应用)这些现有的广泛流行的协议和标准。REST 通常使用 JSON 数据格式。
HTTP 方法:
以下为 REST 基本架构的四个方法:
GET - 用于获取数据。
PUT - 用于更新或添加数据。
DELETE - 用于删除数据。
POST - 用于添加数据。
(3)express-generator生成器【脚手架】
概念:
Express-generator是Express的应用生成器,通过使用生成器工具,可以快速创建一个Express的应用骨架。在Node.js中我们可以使用这个快速生成工具,帮助我们快速构建一个后端项目
安装方法:
方法:全局安装Express-generator
$ npm i express-generator -g
创建项目文件夹: -e表示使用ejs模板 -e是可以换的
express -e 项目名称
安装完成后,生成对应的项目文件,如下所示:
项目目录结构:
bin:
—www 创建服务器,并监听服务器
public 静态资源目录
—img
—css
routes:路由文件
view:模板文件 ejs/pug
app.js:整个项目的入口文件
中间件绑定的
中间件类型 【 3种 】
应用级中间件( 只是一个单一功能, 如:绑定静态资源目录)
路由中间件 ( 暴露一个路由 )
错误处理中间件 ( 处理项目的错误 )
package.json:记录项目依赖包配置信息和项目的命令脚本
项目步骤:
(1)在app.js文件对应的位置先引入路由模块,并绑定路由中间件
前两个路由模块为创建的项目文件夹自带的,此处第三个路由模块为引入的
前两个路由模块为创建的项目文件夹自带绑定的,此处第三个路由模块为自己绑定的
(2)在routes文件夹中,新建一个对应的路由模块
引入express模块
const express = require('express');
创建路由
const router = express.Router();
引入request模块,来请求接口
const request = require('request');
后端渲染
router.get('', (req, res, next) => {
//后端渲染: 后端语言 + 后端模板 --》 html结构 --》 发送前台
// res.render( 模板的路径, options )
// res.render( '../views/shopcar.ejs' )
// res.render('shopcar.ejs')
request('https://m.lagou.com/listmore.json', (error, response, body) => {
const result = JSON.parse(body).content.data.page.result
res.render('test', {result})
})
})
module.exports = router