hapi mysql项目实战路由初始化_用hapi.js mysql和nuxt.js(vue ssr)开发仿简书的博客项目...

前言:

预览:

开始:

npm i

把mysql配置好

npm run server or npm run dev

实现功能:

用户: 登录、注册、用户资料修改,详情页面,类似于简书的文章数量、总字数、收获的喜欢总数,文章删除。

b166f094530c89e9433ecc853af2c99d.png

文章:文章详情页面,查看,评论,点赞和踩,文章阅读次数统计

aee9ced03de757439cbfc461eb0ba595.png

文章: 所有文章,支持分页和按关键词、时间查找

1707994c8f56af0d9a35e995b7ea27b3.png

文章书写:支持markdown和图片拖拽上传

eec16f3d2ce8a6a1fb3a2965a92e8c88.png

首页: 文章推荐,作者推荐,首页轮播,顶部搜索文章和用户

716d3359e312af6770d1863c99eb981d.png

ssr 效果预览:

类似于知乎的

ae5977eda6cc1017d1ef3b9dce588a1c.png

seo 效果:

待补充

1 技术栈:

前端:axios、element-ui、nuxt.js、 ts

后端:node.js、hapi.js、sequelize(orm)、 hapi-auth(token)、 hapi-swagger(在线api文档)、hapi-pagination(分页)、joi(前端请求数据检验类似于element的表单校验)、 mysql 和其他插件

2 技术细节介绍:

说明: 本文主要侧重后端,最后的效果类似于我司后端

目录结构:

├── assets // 静态资源,css, 图片等

├── client // 客户端目录,axios请求函数和其他辅助函数

├── components // vue组件目录

├── config // 默认设置

├── layouts // nuxt视图

├── middleware // nuxt 中间件

├── migrations // orm 数据迁移

├── models // orm 数据模型

├── nuxt.config.js

├── nuxt.config.ts

├── package-lock.json

├── package.json

├── pages // nuxt

├── plugins // hapi插件和nuxt插件

├── routes // hapi路由

├── seeders // 种子数据

├── server // app.js

├── static // 静态资源

├── store // nuxt

├── tsconfig.json

├── uploads // 文件上传目标目录

└── utils // 辅助函数

前言:为什么是hapi.js ?

hapi官方文档已经说了很多了(expresstohapi),这里最吸引我的是,不用安装很多的插件(expres的话有很多的xx-parse插件...),就能满足我的需求,而且hapi已经应用于商用了。

注意点:

我的这些代码,在我目前的package.json的版本是能正常运行的,hapi版本大版本有时候会出现不兼容的,不同版本的hapi对应着不同的插件版本,所以需要和我的版本保持一致,我还遇到过nuxt.js v2.9运行加入ts出现不识别@component的情况,安装2.8.x版本就没有问题。

2.1 Sequelize建模

开发后台第一个想到的是建立数据模型(建表),默认你已经安装好了mysql

之前我自己用数据库,不知道有orm这个工具的时候,会选择自己用navicat这样的图形化工具建表或者直接用sql语句建表。这样做有几个缺点:

对数据库的操作记录不明确,我新建一个表或者新增字段,我后悔了,删掉,我又后悔了,orm的数据迁移就可以用来做这些事情类似于git。

迁移新环境,用sql操作很麻烦,直接执行orm的命令自动建表。

数据模型,之前后台程序与mysql联系的时候,仅仅在建立了连接池,数据的关系,表结构这些我们其实并不知道。

执行增删改查代码更简洁清晰

其他

注意:用orm在执行sql操作时,相当于我们用jquery执行dom操作,api简单了,但还是需要对原来的有点了解

sequelize

sequelize就是node.js的promise orm工具,同时也支持其他数据库.

使用

安装插件:

npm i sequelize-cli -D

npm i sequelize

npm i mysql2

sequelize init

通过 sequelize-cli 初始化 sequelize,我们将得到一个好用的初始化结构:

// 可以安装npx

node_modules/.bin/sequelize init

├── config # 项目配置目录

| ├── config.json # 数据库连接的配置

├── models # 数据库 model

| ├── index.js # 数据库连接的样板代码

├── migrations # 数据迁移的目录

├── seeders # 数据填充的目录

config/config.json

默认生成文件为一个 config.json 文件,文件里配置了开发、测试、生产三个默认的样板环境,我们可以按需再增加更多的环境配置。这里我用config.js替代config.json,这样配置更加灵活

修改后的 config/config.js 如下,仅预留了 development(开发) 与 production(生产) 两个环境,开发环境与生产环境的配置参数可以分离在 .env 和 .env.prod 两个不同的文件里,通过环境变量参数 process.env.NODE_ENV 来动态区分。

// config.js

if (process.env.NODE_ENV &

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值