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)
}
该函数的两个参数分别是request
和response
分别是请求对象
和响应对象
。上面的代码res.send(data)
即是将从数据库中查询的数据以json的形式返回给前端。关于findAndCountAll是sequelize
提供的。这是一组封装好的ORM
为了方便的查询数据库,读者可自行google查询用法
1.4 views目录
该目录是服务端渲染的html
或jade
文件的存放位置,不过需要在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语法来拿到请求回来的数据并返回到前端了
Express框架的使用教程相关推荐
- cocos creator麻将教程系列(二)—— 达达麻将的底层通讯express框架与socketio
达达麻将网络通讯 目录 达达麻将网络通讯 要点: (1)express框架的基本写法 (2)socket.io的基本原理和使用; (3)creator阅读源码的必杀技巧; (4)一起来看达达麻将的游客 ...
- Node.js Express 框架 Express
Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速 ...
- html间数据传送,Express框架与html之间如何进行数据传递(示例代码)
关于Node.js 的Express框架介绍,推荐看菜鸟教程的Express框架,很适合入门,这里不再赘述,这里主要讲一下Express框架与html之间如何进行数据传递 我采用的是JQuery的Aj ...
- 从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目
大致步骤(2017.07.25): 1.购买阿里云服务器 2.在云服务器上搭建node环境 3.上传Node.js代码,并测试通过 一.购买阿里云服务器 1.登陆阿里云 2.选择控制台 3.选择云服务 ...
- Nodejs之Express框架
Nodejs之Express框架 Express 简介 安装 Express 第一个 Express 框架实例 请求和响应 路由 静态文件 GET 方法 POST 方法 文件上传 Cookie 管理 ...
- Vue移动端框架Mint UI教程-调用模拟json数据(五)
1:安装 npm install vue-resource 2:打开main.js 注册 import VueResource from 'vue-resource' Vue.use(VueResou ...
- crm开源系统 tp框架_thinkphp6学习教程与源码 tp6开源CMS系统源码研究
thinkphp6最新正式版框架上市已经有一段时间了,从官方的介绍来看,tp6的框架和tp5有很大的区别,完全重新改写了底层架构代码和逻辑,所以不支持thinkphp5的无缝升级,也就是说如果你之前的 ...
- 如何搭建html运行环境,搭建基于express框架运行环境的方法步骤
一.Express简介 Express提供了一个轻量级模块,把Node.js的http模块功能封装在一个简单易用的接口中.Express也扩展了http模块的功能,使你轻松处理服务器的路由.响应.co ...
- http协议、模块、express框架以及路由器、中间件和mysql模块
一.http协议 是浏览器和web服务器之间的通信协议 1.通用头信息 request url:请求的url,向服务器请求的数据 request method:请求的方式 get.post sta ...
- express 框架中的参数小记
首发地址:https://clarencep.com/2017/04... 转载请注明出处 注意:req.params 只有在参数化的路径中的参数.查询字符串中的参数要用 req.query. 比如: ...
最新文章
- POJ 1989 贪心
- 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目
- vue时间控件美化成IOS样式(移动端),vux组件datatime添加星期几/周几教程
- 菜鸟,下一代分布式体系架构的设计理念
- 苹果白屏一直显示苹果_最新消息显示:苹果还要发新品
- python 读写 json文件
- 机器人环境感知算法之鲁棒感知阶段
- mysql系统调试文字说明_mysql的配置说明
- 流体力学专业常用网站集合
- OOP思想与Java实现
- c语言入门经典的作用,C语言入门经典
- Biotin-HHL,AL;生物素化朱顶红凝集素(HHL,AL)
- 七大江河水系--海河
- 【问题描述】输入一行字符串,含有数字和非数字字符以及空格等,如: df23adfd56 2343?23dgjop535 如果将其中所有连续出现的数字视为一个整数,要求统计在该字符串中共有多少个整数,并
- JAVA RESTful WebService实战笔记(二)
- 国产电机驱动芯片TMI8870应用在智能马桶翻盖/翻圈上
- 如何查询oracle 的版本
- NOIP 前的垂死挣扎
- AndroidiOSApp架构总结
- 总结黄铅笔奖中国第一人的20年营销经验
热门文章
- macOS中使用Delete键
- 学习Fiddler安全测试
- Android FBReader基础资料文档
- [含lw+源码等]S2SH+mysql的报刊订阅系统[包运行成功]Java毕业设计计算机毕设
- ExtraMAME(mame模拟器)官方正式版V21.0下载 | ExtraMAME模拟器
- 分销零售企业售后服务管理软件的业务分析
- Jetson Nano | DeepStream部署Yolov5(Pytorch模型-->wts 文件-->TensorRT模型)
- Cousera Sequence,Time Series and PredictionWK1
- 解决iframe嵌套微信公众号文章图片不显示的方案
- 数据集成-3-数据集成框架