【koa + vue + es6 + node】全家桶前后端分离项目实战(1)?

1,432 阅读4分钟

之前说好的一周完成两篇技术文档,事实证明被打脸了。我高估了自己学习的速度和时间管理,实在没办法做到,但我还是在学习的路上坚持着。今天给大家带来是5月份自己学习的一个总结:即使用koa和vue全家桶独立完成一个前后端分离的项目。于是利用双休的时间,我写了一个小demo,来跟大家分享前端菜鸟是怎样从0到1的完成整个前后端分离项目的架构,以及在完成这个项目中会遇到哪些问题。

这个demo是以《易经64卦》作为数据基础,在前端给出相应的展示。下面我给大家放两张这个例子的配图,让大家有个大概的印象。

今天这篇文章是作为项目开始之前的一些介绍。包括这个项目会用到哪些插件,项目的结构,开发前需要的准备有哪些,表结构如何设计等等,我将在下面给大家一一介绍。

项目地址

点击跳转到项目位置

演示地址

点击跳转到演示地址

项目架构

既然是前后端分离,那么肯定是分成两部分:前端,后端。所以我分别用client和server文件夹代表这两部分。前端部分是使用vue全家桶,使用vue-cli脚手架创建的,这一块相信大家都非常了解,其项目结构就不做过多的赘述。我在这里需要重点讲一下server部分的架构。

server的文件结构

|- config
    |- config.json
|- migrations
    |- ...-create-contents.js
    |- ...-create-comments.js
|- models
    |- contents.js
    |- comments.js
|- node_modules
|- routes
    |- maiin.js
|- seeders
    |- ...-contentTest.js
    |- ...-commentTest.js
|- app.js
|- package.json

我对主要的文件夹做一个介绍:

  • config是连接数据库的配置文件
  • migrations是建立数据库表结构的迁移文件
  • models是对数据进行增删改查的模型文件
  • seeders是创建数据库数据的种子文件
  • routes 写接口的路由文件

看到这里我就开始疑惑了,这些迁移文件、种子文件是什么鬼,抛出一个这样的概念根本无法理解啊有木有。是的,俺也一样。所以接下来我跟大家介绍一下这个项目需要用到的一些插件,而这里的迁移文件、种子文件的概念,就是根据这些插件来的。

服务端依赖的插件

  • mysql2
  • sequelize
  • sequelize-cli
  • koa
  • koa-body-parser
  • koa-router
  • koa-static-cache

所以要想让服务端跑起来,需要用到上面列出来的插件。而上面说的迁移文件、种子文件就是sequelize这个插件里的概念。这一部分我在后面会单独用一篇文章来介绍。感兴趣的朋友可以提前看一下这些插件的使用方法。

上面说到需要使用数据库,那么要在测试环境让项目运行起来,你需要提前准备好开发的环境,需要做哪些工作呢?我在下面给你一一道来。

开发前的准备工作

  • 本地安装mysql数据库
  • 安装node环境

准备工作比较简单,按照上面的两点要求做好就行。到了这里数据库已经搭建好了,那下面我们就根据需求来说说如何创建数据库的表结构。

定义表结构

我们在上面的展示图可以看到。一共是两个页面:一个是展示了64卦的列表页面,一个是单独某一个卦象的详情页面,很简单的效果。

我们分析一下:至少需要创建2张表。一张是64卦的内容表,一张是评论表(或者说解释表)。内容和解释表的关系是一对多的关系。即:一个卦象可能对应多条评论(多条解释)。所以需要有一个字段将这两张表进行关联。那是什么字段呢?即每一个卦的id在内容表中是唯一的,而这个id可以跟它对应的评论表做一个映射关系,这样就能建立起联系了。

所以最后我的表结构设计是这样的:

内容表:Content

名称类型允许空默认值主键说明
idINTEGERNo-Yesid
contentIdINTEGERNo-No卦Id
nameSTRINGNo-No名称
contentListSTRINGNo-No内容
descSTRINGNo-No描述
likeCountSTRINGNo-No点赞人数(附加字段)

评论表:Comments

名称类型允许空默认值主键说明
idINTEGERNo-Yesid
commentIdINTEGERNo-No卦Id
contentSTRINGNo-No评论内容

以上就是对该项目的简单介绍,更多内容将在后续为您揭晓。

总结

主要讲了一下关于实现这个demo的一些准备工作、该项目的架构、服务端依赖的插件、表结构的定义等内容。是从比较大的方向粗略的讲了一下让大家对这个demo有一个基本的预测,也方面我们接下来对这个demo的细节部分进行阐述。

另外我自己新建了一个QQ群,群号码是:1103713567(全栈开发跳板群)。方便大家一起交流前端方面或者项目方面的问题。