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语法来拿到请求回来的数据并返回到前端了

Express框架的使用教程相关推荐

  1. cocos creator麻将教程系列(二)—— 达达麻将的底层通讯express框架与socketio

    达达麻将网络通讯 目录 达达麻将网络通讯 要点: (1)express框架的基本写法 (2)socket.io的基本原理和使用; (3)creator阅读源码的必杀技巧; (4)一起来看达达麻将的游客 ...

  2. Node.js Express 框架 Express

    Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速 ...

  3. html间数据传送,Express框架与html之间如何进行数据传递(示例代码)

    关于Node.js 的Express框架介绍,推荐看菜鸟教程的Express框架,很适合入门,这里不再赘述,这里主要讲一下Express框架与html之间如何进行数据传递 我采用的是JQuery的Aj ...

  4. 从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

    大致步骤(2017.07.25): 1.购买阿里云服务器 2.在云服务器上搭建node环境 3.上传Node.js代码,并测试通过 一.购买阿里云服务器 1.登陆阿里云 2.选择控制台 3.选择云服务 ...

  5. Nodejs之Express框架

    Nodejs之Express框架 Express 简介 安装 Express 第一个 Express 框架实例 请求和响应 路由 静态文件 GET 方法 POST 方法 文件上传 Cookie 管理 ...

  6. Vue移动端框架Mint UI教程-调用模拟json数据(五)

    1:安装 npm install vue-resource 2:打开main.js 注册 import VueResource from 'vue-resource' Vue.use(VueResou ...

  7. crm开源系统 tp框架_thinkphp6学习教程与源码 tp6开源CMS系统源码研究

    thinkphp6最新正式版框架上市已经有一段时间了,从官方的介绍来看,tp6的框架和tp5有很大的区别,完全重新改写了底层架构代码和逻辑,所以不支持thinkphp5的无缝升级,也就是说如果你之前的 ...

  8. 如何搭建html运行环境,搭建基于express框架运行环境的方法步骤

    一.Express简介 Express提供了一个轻量级模块,把Node.js的http模块功能封装在一个简单易用的接口中.Express也扩展了http模块的功能,使你轻松处理服务器的路由.响应.co ...

  9. http协议、模块、express框架以及路由器、中间件和mysql模块

    一.http协议 是浏览器和web服务器之间的通信协议 1.通用头信息 request url:请求的url,向服务器请求的数据 request method:请求的方式   get.post sta ...

  10. express 框架中的参数小记

    首发地址:https://clarencep.com/2017/04... 转载请注明出处 注意:req.params 只有在参数化的路径中的参数.查询字符串中的参数要用 req.query. 比如: ...

最新文章

  1. POJ 1989 贪心
  2. 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目
  3. vue时间控件美化成IOS样式(移动端),vux组件datatime添加星期几/周几教程
  4. 菜鸟,下一代分布式体系架构的设计理念
  5. 苹果白屏一直显示苹果_最新消息显示:苹果还要发新品
  6. python 读写 json文件
  7. 机器人环境感知算法之鲁棒感知阶段
  8. mysql系统调试文字说明_mysql的配置说明
  9. 流体力学专业常用网站集合
  10. OOP思想与Java实现
  11. c语言入门经典的作用,C语言入门经典
  12. Biotin-HHL,AL;生物素化朱顶红凝集素(HHL,AL)
  13. 七大江河水系--海河
  14. 【问题描述】输入一行字符串,含有数字和非数字字符以及空格等,如: df23adfd56 2343?23dgjop535 如果将其中所有连续出现的数字视为一个整数,要求统计在该字符串中共有多少个整数,并
  15. JAVA RESTful WebService实战笔记(二)
  16. 国产电机驱动芯片TMI8870应用在智能马桶翻盖/翻圈上
  17. 如何查询oracle 的版本
  18. NOIP 前的垂死挣扎
  19. AndroidiOSApp架构总结
  20. 总结黄铅笔奖中国第一人的20年营销经验

热门文章

  1. macOS中使用Delete键
  2. 学习Fiddler安全测试
  3. Android FBReader基础资料文档
  4. [含lw+源码等]S2SH+mysql的报刊订阅系统[包运行成功]Java毕业设计计算机毕设
  5. ExtraMAME(mame模拟器)官方正式版V21.0下载 | ExtraMAME模拟器
  6. 分销零售企业售后服务管理软件的业务分析
  7. Jetson Nano | DeepStream部署Yolov5(Pytorch模型-->wts 文件-->TensorRT模型)
  8. Cousera Sequence,Time Series and PredictionWK1
  9. 解决iframe嵌套微信公众号文章图片不显示的方案
  10. 数据集成-3-数据集成框架