Express框架的使用教程

Express框架的使用简单教程

express是一个开源的框架,大多数公司也在使用这样的框架作为Node中间层或者是服务端使用,下面来简单的讲解一下express的使用,包括(框架的搭建,数据库的操作,服务端的渲染等等)

1.安装express框架

npm install express -g  // 全局安装express
express demo            // 初始化express项目
cd demo

大致的目录结构如下
在这里插入图片描述
接下来大致介绍一下这些目录的作用

1.1 bin目录

该目录下存放的是一些配置文件如:项目启动的端口号等

1.2 public目录

存放的是一些公共的样式等等,可能有些人会有疑问这里面为什么会用到样式呢?我这Node是做后端的呀,对!!理解的没错。但是有时候我们可能会使用到服务端渲染所以才会有样式的出现

1.3 routes目录

顾名思义:routes下面的是所有的路由配置(也就是所说的接口)路由文件如下图

var express = require('express');
var router = express.Router();
var usersController = require('../controller/users');
/* GET users listing. */
router.get('/getList', usersController.list);
router.get('/login', usersController.login);
router.post('/register', usersController.register);
router.get('/delete', usersController.deleteUser);
router.post('/update', usersController.updateUser);
module.exports = router;

router.get():即前端用get的方法请求接口
router.post():即前端用post的方法请求接口
请求某个接口之后会调用一个对应的函数去处理相对应的业务逻辑,拿上述代码的router.get('/getList', usersController.list)来说,当前端请求该接口之后会去调用usersController.list这个方法,看一下userController.list这个方法吧

const list = async (req, res) => {
	const { pageSize = 5, pageNum = 1 } = req.query;
	const offset = parseInt(pageSize) * (pageNum - 1);
	const limit = parseInt(pageSize);
	const users = await usersModel.findAndCountAll({ offset, limit });
	const data = {
		success: true,
		data: users
	}
	res.send(data)
}

该函数的两个参数分别是requestresponse分别是请求对象响应对象。上面的代码res.send(data)即是将从数据库中查询的数据以json的形式返回给前端。关于findAndCountAll是sequelize提供的。这是一组封装好的ORM为了方便的查询数据库,读者可自行google查询用法

1.4 views目录

该目录是服务端渲染的htmljade文件的存放位置,不过需要在app.js中来指定该目录app.set('views', path.join(__dirname, 'views'));

1.5 app.js

该文件是项目的根文件包括一些路由的引用配置,统一的错误处理等

2. 接口的使用

上面已经介绍过了,接口是写在routes文件中的,接下来给大家看一下routes文件的目录
在这里插入图片描述
该目录下的两个文件分别是index.js和users.js。既然有两个文件的话那么路由匹配的时候究竟会匹配到哪一个呢?或者说在哪引用到了这两个文件呢
在这里插入图片描述
原来是在app.js中引用了这两个文件,并且两个文件的使用方式不同,这就很明显了。当你请求usersRouter中接口的时候呢需要这样来写/service/接口名 即请求usersRouter中的接口的时候前面需要加上前缀/service

3. Model的使用

model是MVC分层中的M层,主要是用来建立对照模型,即使用代码建立模型与数据库中数据表的字段一一对应。那怎么使用呢?其实前面已经提到过了就是使用sequelize

// 安装sequelize
npm install sequelize
// 在项目根目录下建立model文件夹,并建立users.js文件

var Sequelize = require('sequelize');
var sequelize = new Sequelize(
	'user_info',   // 数据库名
	'limingyang',  // 用户名
	'limingyang',  // 密码
	{
		dialect: 'mysql',  // 数据库类型
		host: 'mysql56.rdsmscdhekdxy4f.rds.bj.baidubce.com',   // 数据库地址,本人用的是百度云的数据库
		port: '3306'  // 端口号
	}
)

// 定义表的模型(对应数据库中users数据表)
var Users = sequelize.define('users',{
	id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true },
	user_name: {
		type: Sequelize.STRING(50)
	},
	user_pass: {
		type: Sequelize.STRING(50)
	},
}, {
	freezeTableName: true,
	timestamps: false   // 是否自定生成并查询时间戳
});
Users.sync();
module.exports = Users;

定义表的模型时候需要注意的是如果你的表中没有createAt或者updateAt字段的时候 需要设置timestamps: false,否则在请求数据的时候会报错。

4. Controller的使用

controller是MVC分层的C层主要用来处理业务逻辑,即数据库的查询等相应的逻辑操作放在controller层中去完成。上面已经说过controller的简单使用,接下来主要阐述一些细节的东西。
我们在做一些业务逻辑处理的时候经常会操作到数据库,接下来说一下sequelize的用法,举一个简单的例子

const list = async (req, res, next) => {
	const { pageSize = 5, pageNum = 1 } = req.query;
	const offset = parseInt(pageSize) * (pageNum - 1);
	const limit = parseInt(pageSize);
	const users = await usersModel.findAndCountAll({ offset, limit });
	const data = {
		success: true,
		data: users
	}
	res.send(data)
}

该list函数是一个简单的分页查询功能 值得一说的是await usersModel.findAndCountAll({ offset, limit }); 当使用usersModel.findAndCountAll({ offset, limit })去操作数据库的时候返回的是promise对象,这样就可以使用async await语法来拿到请求回来的数据并返回到前端了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值