博客1.0

293 阅读2分钟

实现的功能

  1. 登录注册
  2. 发表评论/留言(新)
  3. 博客书写
  4. 博客根据类别、标签分类(新)
  5. 博客详情页
  6. 后台管理(新)
  7. 根据关键词进行文章搜索(新)
  8. 移动端使用媒体查询进行简单适配(新)

后台管理: 可发布公告、笔记的增删改、用户的增删改查、留言的查看与删除、备忘录的增删改

小点

  1. 非指定用户不可直接访问后台页面,输入网址也不可以。
  2. 添加了交叉观察模式,增强了页面的动态效果。
  3. 页面导航(锚点链接)

所用的知识点

前端

  1. vue2脚手架
  2. 状态管理工具vuex
  3. 前端路由vue-router
  4. element-UI组件库
  5. mavon-editor(markdown编辑器)
  6. axios,dayjs等第三方库

后端

  1. koa2(基于nodejs的web开发框架)
  2. mongoDB数据库
  3. jwtmongoose第三方库

功能点的具体实现思路

评论/留言

数据库中创建一个评论表,每条评论都存有每篇文章的id,以便得到每篇文章对应的评论,每条评论都拥有一个数组存放回复这条评论的二级评论。但二级评论没有数组,他的回复也在这个数组中。

游客在进行评论时,如果是第一次评论,后端自动为其分配一个头像。

博客的分类/标签

把全部博客(数组)转换成对象数组

[
    {
        tag:'tag1',
        arr:[note1,note2]
    },
    {
        tag:'tag2',
        arr:[note3,note4]
    }
]

后台管理

大量使用了elementUI组件:布局容器、图标、按钮、输入框、上传、表格、标签、消息提示、弹框、导航菜单、下拉菜单、对话框等等。

根据关键词进行搜索

根据输入的关键词对笔记的内容和标题进行过滤,留下匹配的笔记标题

移动端进行适配

根据媒体查询,当窗口的最大宽度少于x时,重写样式选择器

改善的点

文章详情页

之前是前端通过query将数据从一个页面传到另一个页面,这样不好的地方是通过qurey传的参数都会出现在网址上,如果参数多且长的话,不美观。

改善:传的参数换成笔记的id,详情页再通过接收到的id去请求后端,这样解决了网址太长的问题。但是这样可能不够好,因为频繁请求后端。或许可以将初始化得到的笔记列表存在sessionStorage中,点击详情页时再从sessionStorage中取出。

待解决的问题

  1. 这篇文章中的评论区有我的留言(我的头像),另一篇文章的评论区不知道。

还可以实现的点

无限滚动/分页查询,路由切换的过渡动画,数据的加载状态,草稿箱,评论折叠......