商丘市网站建设_网站建设公司_网站建设_seo优化
2026/1/3 17:42:03 网站建设 项目流程

@

目录
  • 0.代码版本
  • 1. 前端部分
    • 1.1 主要文件
    • 1.2 主要组件
      • 1.2.1 signUp.vue
      • 1.2.2 signIn.vue
      • 1.2.3 recLists.vue
      • 1.2.4 hotLists.vue
      • 1.2.5 NewsInfo.vue
      • 1.2.6 Myself.vue
  • 2. 后端部分
    • 2.1 主要文件
    • 2.2 主要组件
      • 2.2.1 register()
      • 2.2.2 login()
      • 2.2.3 rec_list()
      • 2.2.4 hot_list()
      • 2.2.5 news_detail()
      • 2.2.6 actions()
  • 3. 交互图示

0.代码版本

该专栏的博客当中涉及的所有代码,均为组队学习期间的版本,大概在2021年12月12日左右,某一个可能的参考版本链接如下:

https://github.com/datawhalechina/fun-rec/tree/9bcfafaae339c443cc7911b9070bf52adef9e994

1. 前端部分

1.1 主要文件

PS D:\Project\fun-rec\codes\news_recsys\news_rec_web> tree /f /a
卷 Data 的文件夹 PATH 列表
卷序列号为 7876-8A9C
D:.
\---Vue-newsinfo|   .babelrc|	ES6转码的配置文件||   package-lock.json|	锁定安装时的包的版本号|	保证大家的依赖能一致||   package.json|	依赖包的配置文件|	配置前端项目运行脚本||   README.md|	说明文件||   vue.config.js|	vue项目的配置文件||   webpack.config.js|	webpack的配置文件|	用于打包整个项目|\---src|   App.vue|	根组件||   index.html|	项目主页面||   main.js|	主脚本文件|	用于定义全局变量|	同时可以引入插件||   router.js|	路由脚本文件|	配置url链接与页面组件的映射||   store.js|	管理用户的各种状态|+---api|       newVue.js|		不太清楚是什么作用|		只有两行代码的import|		结合下面的文件,感觉没用||       Vue╕№╨┬░ц ╧ю─┐║═api╜╙┐┌╦╡├ў╬─╡╡ги╧ю─┐╓╨╦∙╙╨╡─╜╙┐┌╬─╡╡╥╘┤╦╬к╫╝гй-╫ю╨┬.docx|		一个word文档,好像是某个库的各个API描述,但是看起来与本项目无关|+---assets|   |   logo.png|	|	vue的logo文件|   ||   +---css|   |       index.less|	|		不知道是什么,感觉没用|	||   |       sign.css|	|		用户登录注册页面的装饰|	||   |       tab.css|	|		vant顶部导航装饰|	|		但是没有在本项目使用|	||   |       test.css|	|		顶部导航栏装饰|	|		就是推荐和热门两个tab|   ||   \---js|           cookie.js|			定义cookie的相关操作|+---components|       bottomBar.vue|		底部组件,就是我的和新闻两个tab||       common.vue|		存放全局变量||       hotLists.vue|		热门页||       Myself.vue|		个人中心||       NewsInfo.vue|		新闻详情页||       recLists.vue|		推荐页||       signIn.vue|		登录页面||       signUp.vue|		注册页面|       +---images|       datawhale.png|		DataWhale头像||       dw.png|		DataWhale二维码|\---lib\---mui\--饿了么的Mint UI库\-但是没有在本项目使用\+---css|       icons-extra.css|       mui.css|       mui.min.css|+---fonts|       mui-icons-extra.ttf|       mui.ttf|\---jsmui.jsmui.min.js

1.2 主要组件

1.2.1 signUp.vue

image

1.2.2 signIn.vue

image

1.2.3 recLists.vue

image

1.2.4 hotLists.vue

image

1.2.5 NewsInfo.vue

1.2.6 Myself.vue

2. 后端部分

2.1 主要文件

从前后端交互的角度来讲,主要的只有server.py这个文件在直接处理请求

2.2 主要组件

2.2.1 register()

@app.route('/recsys/register', methods=["POST"])

接收前端传来的注册请求及用户信息

首先要查重,使用UserAction().user_is_exist()来检查用户名

重复则返回,不重复则从雪花算法获取一个独特的uid

然后依次检查用户信息的合法性,不合法返回错误

合法则用UserAction().save_user()存入MySQL

2.2.2 login()

@app.route('/recsys/login', methods=["POST"])

接收前端传来的登录请求及登录信息

UserAction().user_is_exist来检查用户名和密码

成功则返回200状态,否则就返回其他状态

2.2.3 rec_list()

@app.route('/recsys/rec_list', methods=["GET"])

接收前端传来的获取推荐的请求及其对应参数

recsys_server.get_cold_start_rec_list_v2()获得推荐结果

也就是OnlineServer().get_cold_start_rec_list_v2()函数

2.2.4 hot_list()

@app.route('/recsys/hot_list', methods=["GET"])

接收前端传来的获取热门的请求及其对应参数

recsys_server.get_hot_list_v2()获得热门列表

也就是OnlineServer().get_hot_list_v2()函数

2.2.5 news_detail()

@app.route('/recsys/news_detail', methods=["GET"])

接收前端传来的获取新闻的请求及其对应参数

recsys_server.get_news_detail()获得新闻内容

也就是OnlineServer().get_news_detail()函数

同时,需要检查该用户是否对该文章点赞和收藏

也就是UserAction().get_likes_counts_by_user(user_id,news_id)

UserAction().get_coll_counts_by_user(user_id,news_id)

2.2.6 actions()

@app.route('/recsys/action', methods=["POST"])

接收前端传来的用户行为请求及其对应参数

如果是likecollection,那就要检查状态

已经有过,这次就是取消,删除对应的记录

UserAction().del_likes_by_user(userid,newsid)

UserAction().del_coll_by_user(userid,newsid)

还没有过,这次就是记录,新增对应的记录

UserAction().save_one_action(userlikes)

UserAction().save_one_action(usercollections)

不管状态检查的结果如何,日志都是照常记录的

也就是 LogController().save_one_log(logitem)

3. 交互图示

image

image

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询