Vue.js + Node.js + Express + MySQL示例:构建全栈CRUD应用程序

本文翻译自Vue.js + Node.js + Express + MySQL example: Build a full-stack CRUD Application

Vue.js + Node.js + Express + MySQL example: Build a full-stack CRUD Application

上次修改时间:2020年10月16日 bezkoder Full Stack,Node.js,Vue.js

在本教程中,我将向您展示如何构建一个全栈(Vue.js + Node.js + Express + MySQL)的CRUD应用程序示例。 后端服务器将Node.js + Express用于REST API,前端是带有Vue Router和axios的Vue客户端。

更过实践:Node.js Express + Vue.js: JWT Authentication & Authorization example

Serverless with Firebase:

Vue.js + Node.js + Express + MySQL示例概述

我们将构建一个全栈教程的应用程序包括如下几点:

  • 教程具有ID,标题,描述,发布状态。

  • 用户可以创建,检索,更新,删除教程。

  • 有一个搜索框,用于按标题查找教程。
    下面是示例的截图:

  • 添加一个对象:


    Add an object
  • 显示所有的对象:


    Show all objects
  • 点击Edit按钮更新对象:

    update an object

    在这个页面中,你可以:

    • 使用Publish/UnPublished按钮将状态更改成Published/Pending
    • 使用Delete按钮从MySQL数据库中删除对象
    • 使用Update按钮更新数据库中对象的详细信息
  • 根据title字段查找对象

    Search objects by field ‘title’

全栈CRUD应用程序架构

我们将构建一个如下体系结构的应用程序:


Full-stack CRUD App Architecture
  • Node.js Express导出REST API,并使用Sequelize ORM与MySQL数据库进行交互。
  • Vue客户端使用axios发送HTTP请求并获取HTTP响应,在组件中使用数据。 Vue路由器用于页面间的导航。

Node.js Express后端

总览

下面是Nodejs Express应用导出的一些APIs:

Methods Urls Actions
GET api/tutorials get all Tutorials
GET api/tutorials/:id get Tutorial by id
POST api/tutorials add new Tutorial
PUT api/tutorials/:id update Tutorial by id
DELETE api/tutorials/:id remove Tutorial by id
DELETE api/tutorials remove all Tutorials
GET api/tutorials?title=[kw] find all Tutorials which title contains 'kw'

项目结构

[图片上传失败...(image-4ae86f-1604851901712)]

  • db.config.js导出MySQL连接和Sequelize的配置参数。
  • 在server.js的Express Web服务器中,我们配置CORS,初始化并运行Express REST API。
  • 接下来,我们在models/index.js中添加MySQL数据库的配置,在models/tutorial.model.js中创建Sequelize数据模型。
  • controller中的教程控制器。
  • 在tutorial.routes.js中处理所有CRUD操作(包括自定义查找器)的路由。

实现

您可以在文章中逐步找到实现此Node.js Express应用程序的步骤:
Node.js Rest APIs example with Express, Sequelize & MySQL

Vue.js前端

总览

[图片上传失败...(image-3ec37e-1604851901712)]

  • App组件是具有route_view的容器。 它具有链接到routes路径的导航栏。
  • TutorialsList组件获取并显示Tutorials。
  • Tutorial组件具有用于根据`:id'编辑教程详细信息的表单。
  • AddTutorial组件具有用于提交新教程的表单。
  • 这些组件调用TutorialDataService方法,这些方法使用axios发出HTTP请求并接收响应。

技术

  • vue: 2.6.10
  • vue-router: 3.1.3
  • axios: 0.19.0

项目结构

[图片上传失败...(image-2de8c8-1604851901712)]

  • package.json包含3个主要的模块: vue, vue-router, axios
  • 有三个组件: TutorialsList, Tutorial, AddTutorial
  • router.js为每个组件定义了路由。
  • http-common.js使用HTTP基准Url和请求头初始化axios.
  • TutorialDataService中有用于发送HTTP请求的Apis的方法。
  • vue.config.js为Vue客户端配置端口。

实现

您可以在文章中逐步找到实现此Vue App的步骤:
Vue.js CRUD App with Vue Router & Axios
或者使用Vuetify:Vuetify data-table example with a CRUD App

Vuetify data-table example with a CRUD App

结论

现在,我们在构建全栈CRUD应用程序时概述了Vue.js + Node.js Express + MySQL示例。

我们还介绍使用Express&Sequelize ORM的REST API的客户端-服务器体系结构,以及用于构建前端应用程序以发出HTTP请求和使用响应的Vue.js项目结构。

接下来的教程向您展示有关如何实现系统的更多详细信息:

如果你想要一个TypeScript版本的Vue App,可以参考如下文章:
Vue Typescript CRUD Application to consume Web API example

分页:

Serverless with Firebase:

祝您学习愉快,再见!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容