仿CNode社区——Vue2项目

148 阅读2分钟

项目组件结构

Header——头部

PostList——帖子列表

Article——文章详情页

SlideBar——侧边栏

UserInfo——用户信息

Psgination——分页组件

Header组件

使用VueCli将项目搭建好以后,我们开始制作本项目的Header组件。

在template中写入我们的页面结构。分别是一张logo图片以及被无序列表包含的链接集合。 截屏2023-03-08 14.35.28.png

添加一些CSS,我们使用float布局实现li的横向排列。 截屏2023-03-08 14.36.26.png

Header效果如下 截屏2023-03-08 14.37.09.png

PostList组件

做完Header我们着手开始做PostList组件。这个部分是本项目比较重要的部分。

先大致规划页面结构:在拉取list信息成功之前会显示一个loading的gif图片。剩下的则是拉取到的List部分。

通过v-if来对loading的展示进行控制 截屏2023-03-08 14.39.43.png

截屏2023-03-08 14.45.57.png

后续要拿到帖子的列表这需要用到官方的API

API接口:cnodejs.org/api/v1/topi… 获取帖子列表

limit page

拿到的参数分析

头像:author.avatar_url

回复量/浏览量 :reply_count/visit_count

帖子的标题:title

需要使用到过滤器:

时间:last_reply_at

帖子分类:top: 代表是否置顶 good: 代表是否精华 tab 是表示除了置顶和精华之外的其余分区 ­

share 分享 ­

ask 问答 ­

job 招聘

由于我们是向CNode社区获取数据所以需要用到axios插件。并且在main.js中进行引入且挂载在vue的prototype上。

回到PostList组件,我们写一个获取数据的方法,并且在挂载之前执行。

截屏2023-03-08 20.37.07.png

我们需要把获取的数据收集起来,我们在data中声明一个数组代表页面数据。

截屏2023-03-08 20.40.32.png

截屏2023-03-08 20.40.39.png

显示用户头像

截屏2023-03-08 20.49.44.png

截屏2023-03-08 20.49.54.png

适当加了一些样式 截屏2023-03-09 14.50.10.png

添加回复数等细节

截屏2023-03-09 19.49.10.png

截屏2023-03-09 19.49.35.png

截屏2023-03-09 20.08.23.png

截屏2023-03-09 20.08.37.png

过滤器

时间过滤器: 截屏2023-03-09 20.11.22.png

文字过滤:

截屏2023-03-09 20.11.42.png

在最终回复时间处使用过滤器:

截屏2023-03-09 20.13.20.png

截屏2023-03-09 20.13.36.png

动态绑定class

动态绑定class实现不同的帖子分类有不同的样式,并且使用过滤器显示帖子种类。 截屏2023-03-09 20.25.13.png

截屏2023-03-10 15.15.22.png

Article组件

API cnodejs.org/api/v1/topi… + 帖子ID

RouterLink的配置

这个组件中我们要实现点击postLIst组件的标题实现跳转的功能,所以我们要设置routerlink。

设置根路径已经要用的article路径。 截屏2023-03-11 16.25.36.png

配置routerlink的查询参数和名称。 截屏2023-03-11 16.26.36.png

使用routerview实现显示。 截屏2023-03-11 16.27.21.png