小兔鲜儿 - 首页模块涉及知识点:组件通信、组件自动导入、数据渲染、触底分页加载、下拉刷新等。
自定义导航栏参考效果:自定义导航栏的样式需要适配不同的机型。
::: tip 操作步骤
准备组件静态结构
修改页面配置,隐藏默认导航栏,修改文字颜色
样式适配 -> 安全区域
:::
静态结构
新建业务组件:src/pages/index/componets/CustomNavbar.vue
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071<script setup lang="ts">//</script><template> <view class="navbar"> <!-- logo文字 --> <view class="logo ...
uniapp
未读小兔鲜儿 - 项目起步效果预览体验小程序端体验 H5 端体验 App 端(安卓)
资料说明📀 视频学习https://www.bilibili.com/video/BV1Bp4y1379L/
📗 接口文档https://www.apifox.cn/apidoc/shared-0e6ee326-d646-41bd-9214-29dbf47648fa/
✏️ 在线笔记https://megasu.gitee.io/uni-app-shop-note/
📦 项目源码https://gitee.com/Megasu/uniapp-shop-vue3-ts/
项目架构项目架构图
拉取项目模板代码项目模板包含:目录结构,项目素材,代码风格。
模板地址1git clone http://git.itcast.cn/heimaqianduan/erabbit-uni-app-vue3-ts.git heima-shop
::: tip 注意事项小程序真机预览需在 manifest.json 中添加微信小程序的 appid:::
引入 uni-ui 组件库操作步骤安装 uni-ui 组件库
1 ...
springboot
未读这部分的代码实现均在 backend 端。
天梯积分更新随着对战的结束,要相应的更新用户的天梯积分
更新代码如下:
对局列表后端 API首先实现一个 API,从后端返回一个对局列表的 List。实现 API,需要依次编写 service, service.impl, controller。
由于对局列表可能很长,需要添加分页功能。
在config.MybatisConfig中添加分页配置:
123456789@Configurationpublic class MybatisConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interc ...
springboot
未读流程设计
接下来要实现的是,Bot 代码执行的微服务部分。
初始化相应的,首先要创建该服务的后端。
然后将matchingsystem模块的依赖直接复制过来
1234567891011121314151617181920212223242526272829303132<dependencies> <!--Spring Security--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> <version>2.7.1</version> </dependency> <dependency> <groupId>org.spring ...
springboot
未读流程分析
整个匹配的过程是异步过程,也就是在 Matching system 中执行匹配的过程,会执行一个未知的时间,当出现符合条件的匹配结果时,才会立即将结果返回给前端。这种流程很难用之前的 Http 来达到预期效果(http 为请求一次返回一次,且一般立即响应)。对于匹配系统,请求一次,返回的时间位置,而且可能多次返回。
用 websocket 协议,不仅客户端可以向服务器主动发送请求,服务器也可以主动向客户端发送请求,是一种对称的通信方式。
之前的地图生成方式,是在用户本地(浏览器中)随机生成,如果两名玩家都在本地实现地图,地图就会产生冲突。因此,需要将生成地图的整个过程,由服务器统一完成。此外,判断游戏是否失败的逻辑(蛇撞击),如果在用户本地(浏览器)中实现,就可能会导致用户作弊。所以,不仅是生成地图,而是整个游戏的过程(蛇的移动、判定),都要做服务器端统一完成,服务器端的相关参数、判定结果返回给前端,前端只用来渲染画面,不做任何判定逻辑。
websocket 原理将前端建立的每个 websocket 连接在后端维护起来
添加consumer.WebSocketServer ...
springboot
未读数据库在数据库中创建表bot表中包含的列:
id: int:非空、自动增加、唯一、主键
user_id: int:非空,用于表示bot的作者
注意:在 pojo 中需要定义成userId,也就是驼峰命名;在queryWrapper中的名称仍然为user_id
title: varchar(100)
description: varchar(300)
content:varchar(10000),对应的bot的代码
rating: int:默认值为 1500
createtime: datetime
pojo中定义日期格式的注解:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
modifytime: datetime
pojo中定义日期格式的注解:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
Pojobackend/pojo中.java 创建对应的Bot.java,将表中的内容映射成class
12345678910111213141516@Dat ...
springboot
未读MysQL配置环境变量将C:\Program Files\MySQL\MySQL Server 8.0\bin(如果安装到了其他目录,填写相应目录的地址即可)添加到环境变量PATH中,这样就可以在任意目录的终端中执行mysql命令了。
MySQL 服务(默认开机自动启动,如果想手动操作,可以参考如下命令)
关闭:net stop mysql80
启动:net start mysql80
MySQL 常用操作连接用户名为root,密码为123456的数据库服务:mysql -uroot -p123456
show databases;:列出所有数据库
create database kob;:创建数据库
drop database kob;:删除数据库
use kob;:使用数据库 kob
show tables;:列出当前数据库的所有表
create table user(id int, username varchar(100)):创建名称为 user 的表,表中包含 id 和 username 两个属性。
drop table user;:删除表
insert into us ...
springboot
未读导航栏安装插件
新建NavBar.vue组件,使用vueinit自动提示命令初始化一个 vue 页面。scoped 的意思是在当前组件中的样式是独立的。
12345678910111213<template> <div> </div></template><script>export default { }</script><style scoped> </style>
Bootstrap 使用https://v5.bootcss.com/
快速入门https://v5.bootcss.com/docs/getting-started/introduction/
寻找合适的导航栏
创建 NavBar通常把关于具体页面的组件,创建在src\views文件夹下,把涉及到的公共组件,放入src\components中
对于导航栏,创建src\components\NavBar.vue
将 Bootstrap 找到的代码粘贴到<template&g ...
springboot
未读项目功能
配置 git 环境
安装 Git Bash(使用 Mac 和 Linux 的可以跳过这一步):https://gitforwindows.org/
全部默认即可
输入cd回车进入家目录,执行命令ssh-keygen生成秘钥
我们使用 Gitee(Github、Acgit)的时候,通信的方式通过 ssh
由于 Gitee 不支持用户名密码,因此需要借助秘钥来操作上
然后进入.ssh文件夹,id_rsa和id_rsa.pub分别代表私钥和公钥文件,我们将公钥取出。
将 id_rsa.pub 的内容复制到 Gitee 上
使用 SSH 公钥可以让你在你的电脑和 Gitee 通讯的时候使用安全连接(Git 的 Remote 要使用 SSH 地址)
创建项目后端
注意,Thymeleaf 是通过前后端不分离的方式写页面,由于我们的最终的项目是前后端分离,因此只是借助这个依赖演示一下前后端不分离的场景。最终是不使用这个依赖的。
Spring 后端主要作用是负责实现一些函数,其中每一个 url 对应一个函数,负责给用户返回一些页面。
一般而言,我们建 ...
1. 获取 Json Web Token(JWT)
地址:https://app165.acapp.acwing.com.cn/api/token/
方法:POST
是否验证 jwt:否
输入参数:
username: 用户名
password: 密码
返回结果:
access: 访问令牌,有效期 5 分钟
refresh: 刷新令牌,有效期 14 天
2. 刷新 JWT 令牌
地址:https://app165.acapp.acwing.com.cn/api/token/refresh/
方法:POST
是否验证 jwt:否
输入参数:
refresh: 刷新令牌
返回结果:
access: 访问令牌,有效期 5 分钟
3. 获取用户列表
地址:https://app165.acapp.acwing.com.cn/myspace/userlist/
方法:GET
是否验证 jwt:否
输入参数:无
返回结果:返回 10 个用户的信息
4. 获取某个用户的信息
地址:https://app165.acapp.acwing.com.cn/myspace/getinf ...