目录
这个作业属于哪个课程 | 2301-计算机学院-软件工程社区-CSDN社区云 |
---|---|
这个作业要求在哪里 | 团队作业——站立式会议+alpha冲刺-CSDN社区 |
这个作业的目标 | 记录alpha冲刺Day1 |
团队名称 | 熬夜会秃头 |
团队置顶集合随笔链接 | Alpha 冲刺随笔置顶(熬夜会秃头团队)-CSDN博客 |
一、团队成员站立式会议总结
组员1:陈少桐同学
昨天站立式会议到现在的进展: 设计和优化APP登录界面
存在的问题/遇到的困难:没完全熟练uni-App其语法规则、页面生命周期等,将在接下来的任务中一边学习一边熟练。前后端交互的接口调用部分仍在学习,还没有一个完整的概念体系。页面的交互逻辑还在学习
今天到明天会议的安排: 交互逻辑实现
心得体会: 虽然是初次使用uni-App,但仍然能深刻体会到uni-App相比于原生开发App的方便之处,DCloud大量的资源社区、HBuilderX的简约界面、可视化配置文件、自动添加依赖等都让我感受到了极大的便利性。
组员2:梁菲汎同学
昨天站立式会议到现在的进展:完成web登录界面、注册页面
<template>
<div id="base" class="noname">
<!-- Unnamed (组合) -->
<div id="u0" class="ax_default" data-left="0" data-top="0" data-width="0" data-height="0" layer-opacity="1">
<!-- Unnamed (组合) -->
<div id="u1" class="ax_default" data-left="0" data-top="0" data-width="0" data-height="0" layer-opacity="1">
<!-- Unnamed (组合) -->
<div id="u2" class="ax_default" data-left="0" data-top="0" data-width="0" data-height="0" layer-opacity="1">
</div>
</div>
</div>
<!-- Unnamed (图片) -->
<div id="u3" class="ax_default image">
<img id="u3_img" class="img " src="@/assets/images/登录界面/u3.png"/>
<div id="u3_text" class="text " style="display:none; visibility: hidden">
<p></p>
</div>
</div>
<!-- Unnamed (热区) -->
<div id="u4" class="ax_default">
</div>
<!-- Unnamed (组合) -->
<div id="u5" class="ax_default" data-left="763" data-top="134" data-width="520" data-height="431" layer-opacity="1">
<!-- Unnamed (矩形) -->
<div id="u6" class="ax_default box_1">
<img id="u6_img" class="img " src="@/assets/images/登录界面/u6.svg"/>
<div id="u6_text" class="text ">
<p style="font-size:30px;"><span>欢迎使用</span></p><p style="font-size:36px;"><span>对象存储平台</span></p>
</div>
</div>
<!-- Unnamed (图片) -->
<div id="u7" class="ax_default image">
<img id="u7_img" class="img " src="@/assets/images/登录界面/u7.png"/>
<div id="u7_text" class="text " style="display:none; visibility: hidden">
<p></p>
</div>
</div>
<!-- Unnamed (矩形) -->
<div id="u8" class="ax_default button">
<div id="u8_div" class=""></div>
<div id="u8_text" class="text ">
<p><span>手机号</span></p>
</div>
</div>
<!-- Unnamed (矩形) -->
<div id="u9" class="ax_default button">
<div id="u9_div" class=""></div>
<div id="u9_text" class="text ">
<p><span>邮箱</span></p>
</div>
</div>
<!-- Unnamed (文本框) -->
<div id="u10" class="ax_default text_field">
<div id="u10_div" class=""></div>
<input id="u10_input" type="text" value="" class="u10_input"/>
</div>
<!-- Unnamed (文本框) -->
<div id="u11" class="ax_default text_field">
<div id="u11_div" class=""></div>
<input id="u11_input" type="text" value="" class="u11_input"/>
</div>
<!-- Unnamed (矩形) -->
<div id="u12" class="ax_default button">
<div id="u12_div" class=""></div>
<div id="u12_text" class="text ">
<p><span>登录</span></p>
</div>
</div>
</div>
<!-- Unnamed (矩形) -->
<div id="u13" class="ax_default label">
<div id="u13_div" class=""></div>
<div id="u13_text" class="text ">
<p><span>还没有账号?点我注册</span></p>
</div>
</div>
<!-- Unnamed (热区) -->
<div id="u14" class="ax_default">
</div>
</div>
</template>
<template>
<div id="base" class="">
<!-- Unnamed (组合) -->
<div id="u15" class="ax_default" data-left="763" data-top="184" data-width="504" data-height="368" layer-opacity="1">
<!-- Unnamed (矩形) -->
<div id="u16" class="ax_default _一级标题">
<div id="u16_div" class=""></div>
<div id="u16_text" class="text ">
<p><span>注 册</span></p>
</div>
</div>
<!-- Unnamed (文本框) -->
<div id="u17" class="ax_default text_field">
<div id="u17_div" class=""></div>
<input id="u17_input" type="text" value="" class="u17_input"/>
</div>
<!-- Unnamed (矩形) -->
<div id="u18" class="ax_default button">
<div id="u18_div" class=""></div>
<div id="u18_text" class="text ">
<p><span>立 即 注 册</span></p>
</div>
</div>
<!-- Unnamed (文本框) -->
<div id="u19" class="ax_default text_field">
<div id="u19_div" class=""></div>
<input id="u19_input" type="text" value="" class="u19_input"/>
</div>
<!-- Unnamed (文本框) -->
<div id="u20" class="ax_default text_field">
<div id="u20_div" class=""></div>
<input id="u20_input" type="text" value="" class="u20_input"/>
</div>
<!-- Unnamed (文本框) -->
<div id="u21" class="ax_default text_field">
<div id="u21_div" class=""></div>
<input id="u21_input" type="text" value="" class="u21_input"/>
</div>
</div>
<!-- Unnamed (组合) -->
<div id="u22" class="ax_default" data-left="0" data-top="0" data-width="0" data-height="0" layer-opacity="1">
<!-- Unnamed (组合) -->
<div id="u23" class="ax_default" data-left="0" data-top="0" data-width="0" data-height="0" layer-opacity="1">
<!-- Unnamed (组合) -->
<div id="u24" class="ax_default" data-left="0" data-top="0" data-width="0" data-height="0" layer-opacity="1">
</div>
</div>
</div>
<!-- Unnamed (热区) -->
<div id="u25" class="ax_default">
</div>
<!-- Unnamed (图片) -->
<div id="u26" class="ax_default image">
<img id="u26_img" class="img " src="@/assets/images/登录界面/u3.png"/>
<div id="u26_text" class="text " style="display:none; visibility: hidden">
<p></p>
</div>
</div>
<!-- Unnamed (矩形) -->
<div id="u27" class="ax_default button">
<div id="u27_div" class=""></div>
<div id="u27_text" class="text ">
<p><span>获取验证码</span></p>
</div>
</div>
</div>
</template>
存在的问题/遇到的困难:
图片引用问题。直接把本地图片地址放在src里没问题。但如果把地址提取出来写在data里或者通过method动态给src赋值则引用不到。因为放在template模板里会被webpack打包所以可以,而放在data或者动态赋值,图片路径只是一个字符串webpack不会处理所以引用不到。
解决办法:通过import或者required引入。import src from ‘../../img.png’或者data:{img:require(‘../../img.png’)}
vue中每一个组件都可以自定各自的css样式,如果希望组件内的样式只对当前组件起作用,可以在style标签中增加scoped即可。
该写法会让vue在渲染组件的时候给每个元素都增加一个data-v-/版本号/的属性,可以保证只针对有同样data-v-data-v-/版本号/的元素应用该样式。
今天到明天会议的安排:实现剩下的几个界面的交互
心得体会:
MVVM模式(全称为Model-View-ViewModel)为Vue实现数据双向绑定。
在MVVM中,View为视图层,ViewModel为业务逻辑层,Model为数据层。
什么是数据双向绑定呢?当用户使View变化时(如填写表单),变化会自动同步到ViewModel处理相应逻辑,并将变化更新到Model数据库。反之,若服务端数据变化(如股价波动),变化会自动同步到ViewModel处理相应逻辑,并将变化同步到View展现给用户。
在用Vue之前,完成HTML和JS之间的交互需要使用大量的DOM操作来实现动态加载。
组员3:陈知菲同学
昨天站立式会议到现在的进展:完成springcloud集成nacos、feign、gateway的框架搭建
- Springcloud框架的搭建
- 项目架构
- 网关gateway、user-service、order-service(一个测试demo,会替换成其他模块)
网关
(路由与跨域配置)
server:
port: 10010 # 网关端口
spring:
application:
name: gateway # 服务名称
cloud:
nacos:
server-addr: localhost:8848 # nacos地址
gateway:
routes: # 网关路由配置
- id: user-service # 路由id,自定义,只要唯一即可
# uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
uri: lb://user-service # 路由的目标地址 lb就是负载均衡,后面跟服务名称
predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
- Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
- id: order-service
uri: lb://order-service
predicates:
- Path=/order/**
globalcors: # 全局的跨域处理
add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
corsConfigurations:
'[/**]':
allowedOrigins: # 允许哪些网站的跨域请求
- "http://localhost:8080"
- "http://localhost:8081"
- "http://www.leyou.com"
allowedMethods: # 允许的跨域ajax的请求方式
- "GET"
- "POST"
- "DELETE"
- "PUT"
- "OPTIONS"
allowedHeaders: "*" # 允许在请求中携带的头信息
allowCredentials: true # 是否允许携带cookie
maxAge: 360000 # 这次跨域检测的有效期
全局过滤器(登录权限暂时写死,之后将添加权限校验)
@Order(-1)
@Component
public class AuthorizeFilter implements GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
// return chain.filter(exchange);
// 1.获取请求参数
MultiValueMap<String, String> params = exchange.getRequest().getHeaders();
// 2.获取authorization参数
String auth = params.getFirst("authorization");
// 3.校验
if ("admin".equals(auth)) {
// 放行
return chain.filter(exchange);
}
// 4.拦截
// 4.1.禁止访问
exchange.getResponse().setStatusCode(HttpStatus.FORBIDDEN);
// 4.2.结束处理
return exchange.getResponse().setComplete();
}
}
其他服务
服务结构
feign的调用
@FeignClient("user-service")
public interface UserClient {
@GetMapping("/user/{id}")
User findById(@PathVariable("id") Long id);
}
数据库、nacos注册中心的配置
server:
port: 8080
spring:
application:
name: order-service
cloud:
nacos:
server-addr: localhost:8848
datasource:
url: jdbc:mysql://localhost:3306/cloud-order?useSSL=false
username: root
password: xxxxxxx
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
type-aliases-package: cn.itcast.user.pojo
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.itcast: debug
pattern:
dateformat: MM-dd HH:mm:ss:SSS
存在的问题/遇到的困难:在项目搭建过程中,依赖的管理较为复杂,会有版本冲突问题
解决:查找网络上springboot和springcloud版本兼容性表,解决版本冲突问题
引用依赖如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.9.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR10</spring-cloud.version>
<mysql.version>8.0.23</mysql.version>
<mybatis.version>2.1.1</mybatis.version>
</properties>
今天到明天会议的安排:实现springcloud集成oauth,新增登录与权限校验功能
心得体会:了解了大型分布式项目的整体架构,与各模块、各服务之间的调用方法。不再像小型项目那样在pom.xml中引入全部要用的依赖,而是将诸多功能拆成多个module,在project总的pom.xml中引入maven依赖管理,实现对依赖的版本控制,其他module在需要时将依赖逐个引入
在springcloud中完成对注册中心nacos、gateway、feign等组件的集成配置,加深了对各组件在分布式架构下的功能的理解。
组员4:李恒欣同学
昨天站立式会议到现在的进展:学习SpringCloud和巩固复习JAVA注解的使用
存在的问题/遇到的困难:对JAVA中注解的使用还不是很熟悉
今天到明天会议的安排:开始参与进行后端程序的编写
心得体会:有此前学习SpringBoot框架和使用JAVA的基础,学习起来相对顺利,但在注解部分的学习还是遇到了一些困难。
组员5:邱思源同学
昨天站立式会议到现在的进展:学习JAVA和JAVA的测试方法
存在的问题/遇到的困难:对JAVA并不熟悉
今天到明天会议的安排:对已完成的后端代码进行测试
心得体会:已掌握JAVA的test的使用,还需要结合实践进行进一步学习。
组员6:宋芳鑫同学
昨天站立式会议到现在的进展: 设计和优化APP注册界面
存在的问题/遇到的困难:无
今天到明天会议的安排:交互逻辑实现
心得体会:对vue的使用有了更熟练的掌握,可以更好地做出符合自己想法的前端作品了。
组员7:张一凡同学
昨天站立式会议到现在的进展:学习前端单元测试方法
存在的问题/遇到的困难:从零开始,学习难度较大
今天到明天会议的安排:对已经开发的前端代码进行单元测试
心得体会:此前对vue的掌握并不熟练,加上前端单元测试也是第一次接触,学习起来相对较吃力,但结合实践后会好一点。
组员8:林承桢同学
昨天站立式会议到现在的进展:学习测试文档编写
存在的问题/遇到的困难:无
今天到明天会议的安排:进行已完成模块的功能测试,将完成的测试结果写入测试文档
心得体会:学习掌握了测试文档的编写流程和规范,对单元测试有了更深理解。
组员9:黄才栋同学
昨天站立式会议到现在的进展:完成APP导航界面
存在的问题/遇到的困难:无
今天到明天会议的安排:完成和其他界面的交互
心得体会:掌握了vue如何使用url加入图片,巩固了如何使用vue的script进行更好的页面排版。
组员10:谢怀广同学
昨天站立式会议到现在的进展:核对和完善代码规范以及制作项目ran'jin
存在的问题/遇到的困难:前后端代码规范不同,工作量较大
今天到明天会议的安排:继续核对代码规范并完成相应的项目燃尽图
心得体会:对前后端的代码规范有了深入了解,但学习的任务量有点大,学起来还是比较累的。