Node.js的web应用框架----Express介绍及应用

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)
在这里插入图片描述

(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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值