我又双叒叕来写实习经历了....
其实应该算是第四周了,虽然我也不太记得,但是学技术是最主要的么
总结一下干了啥:
现在是将近周末了哈,我之前说的那个Unique的项目我要完成的功能都基本完成了,就是之前说的任务调度的两个界面都完成了
然后有一个模板配置的界面,我也拉过来了,其中的问题倒是不多,因为基本的结构都已经搭出来了,我改一下样式就好了,还是使用flex+grid实现响应式的布局,这里只有一个需要说的点,就是图片上传的问题,使用的是antd的Upload组件,实现思路是将上传文件保存在state中,然后根据地址进行显示/预览,这里图片上传有多种方式,第一种是使用一个线上的容器,然后通过后端接口将图片上传上去,然后再根据接口请求下来,但是这样后端的工作量就会比较大,平白无故多出几个接口,还需要一个安全的线上容器,因为是一个toB的系统,所以也就没有使用这种方式,而是是用了另一种方式,就是使用base64的图片格式进行存储,但是这种缺点也很明显,就是前后端交互传参的时候,会很慢,速度会被拉的很慢,而且base64的体积也会稍大一点,优点是可以直接存储在数据库中,存取比较方便;
上面说了一下图片上传的格式,以及两种方式大致的优缺点,在实际进行图片上传的过程中,出现了许多状况:
1.我并没有搞清楚图片url的定义,因为在前端这边使用了base64形式对图片进行转码,所以最后会得出一个base64形式的图片地址,前端只需要将这个base64格式的字符串传给后端就可以,但是我觉得只有传url才可以将图片进行回显,但是请教了导师才知道,这个'url'是需要一个线上地址,要不然这个url也没有用,打个比方就是我存在我电脑上面的地址'C:/user/xxxx'这种地址,即使上传上去也是显示不了的,别人要拿到这个数据的时候去他们的C盘下找根本就是找不到的,这个url只能是一个线上地址,就是像第一种方式一样,把所有图片存到一个线上地址,所有人都可以访问,然后获取图片的url进行回显,这样可以实现,但是我想直接读取我本地的图片地址,即使可以读到,也没啥用...
2.弄清楚这个url之后,知道了,除非是线上地址,要不然拿到也没有用,所以也就不考虑这个事情了,然后就把这个目光啊,转向这个base64形式的图片地址了,然后这里我又不懂了,我这个base64形式的地址,是从哪里转出来的呢,是我图片存储的地址,还是图片本身?然后我又去问导师了,导师告诉我base64形式的图片是有标识的,比如前面会有一个
img/xxx.png;bas64;
这样的表示,这也是很多图片上传的时候,图片没有办法进行回显的原因,只有有这样标识的base64形式的字符串才会被视为图片,才会在回显的时候被特殊解析,能够回显,然后就没有然后了,这个图片的参数就随着后端接口被发送了...
3.福无双至祸不单行,当然不可能只有这一点问题辣,他要是只有这点我也不用拿出来说了,情况是请求发出去了,但是并没有在列表当中体现出来,最开始的感觉是欸我发送请求之后要重置一下列表哈,然后写上了之后还是不好用,那不是刷新列表的问题,那肯定就是这个接口的问题了,也就是我'添加'的这个数据,没有被记录到数据库中去,但是这个请求又没有报错,那怎么搞的呢,后来找后端协调了一下,他说后端那边请求确实被处理了,但是里面所有字段都是null,当时是以为后端没有处理好这个请求,因为前端带过去的数据都是有值的,那是咋个回事呢,我找我导师看了一眼,他教了我一个很有用的调试方法,就是复制这个请求到postman里面,看看他发出去的形式是怎么样的,欸果不其然,这个参数携带的形式是错的,后端需要的是form-data形式的数据,而前端带过去的是被浏览器自动转换的json格式,那肯定是没有数据的,格式都对不上,所以前端对于携带的参数进行了处理,改造为form-data数据,请求成功;
4.综上所述,总体上来看还是我的问题,没有看明白后端的接口文档,但是也从中学到了不少东西,比如如何和后端同学进行交流,确定错误出在哪里,以及一些实用的解决方案;同时对于base64这个格式也有了一些了解
5.其实整个项目我认为亮点也就那么几个,其他的困难都是因为我react基础比较薄弱,在实践中一点点去试、去确定在不同情境下的不同解决方案,就比如非表单项的数据收集和数据回显(json展示框)、异步请求的处理以及数据的设置时机(useState)、前后端数据格式的交换和对应的类型约束(Ts、JSON)、以及对应antd组件和Procomponents组件的理解
这几周的企业实习确实带给我我一些显著的提升,不同于自主学习的时候,在企业实习的时候其实也在不断地去学习,更多的是有针对性的去学习,而且还可以对应的去实践,这样的提升很大了,企业实习之前我可能只是处于学习阶段的小白,虽然现在也是哈哈哈哈哈,但是自己有一点点编码的能力了,可以对于不同的应用场景有自己的思考和决断了,我觉得这才是来企业实习的最主要的点,可以不断地去提升自己,去更多的去认识自己,探索自己的能力边界,去扩展自己的技术能力,虽然我现在只会做一些简单的逻辑,但是我觉得只要认真的去学去积累,我也可以成为一个成熟的技术开发^_^
给自己立个小flag,成为一个成熟的开发