首页 > 编程语言 >一个java程序员,手撸app的日记(一)

一个java程序员,手撸app的日记(一)

时间:2023-10-04 20:22:20浏览次数:42  
标签:uniapp vue java app 问题 程序员 页面 图片

首先,我是一名多年的java后端程序员,但刚接触此行的时候,还是写过jsp页面的,因为当年不懂,以为sp页面也是java的一部分,就闷着头给公司写了起来(只想说,html好写,但css是真的难)。

jsp的编写是在自己经验不足的年纪,写了不到半年,草草了事,只是学会了ajax和部分js的编写(只觉得js真简单,弱类型,且逻辑不用很复杂就能实现很多功能)。

接下来就换了家公司,公司要求使用前后端分离技术,从那时起,我记得看了一周左右的vue教学视频,就开始上手编写vue页面和逻辑了,并且后端也是自己写(分给你的功能,前后端都要自己完成),现在回想起来,那时写的vue页面是真的烂,可以说是烂到家了哈哈哈。写完这个前后端项目后,就立刻跳了公司,之后也没怎么再写过前端了。

经过多年打拼后,最近突然有了个想法,就是给我身边需要的人写一个手机app,因为之前了解过原生的安卓编写,自己也写了一个登录页面(堪称痛苦),没坚持住,就放弃了,这件事应该是3年前的事情了,现在回想起来,原生的安卓确实很难写,需要系统的学习才行。因为科技的发展,各种好用的框架应运而生,我也从中得知了uniapp的大名,但一直没机会学习它,自从有了这个想法后,就开始着手搜集相关资料,并且得知“若依”体系中也有移动端(公司的项目,大都以若依为基础进行开发),仔细看过若依的移动端手册后,直接将它的项目下载了下来,并且在HBuilder(uniapp推荐使用该工具)中运行了一下(后端用的是自己从零手撸的springcloud项目,在这里不过多阐述)。

拿到若依的app项目,简单的看了下目录结构,再结合他们手册中写的相关接口、说明和注意事项后,发现整体的结构和vue差不多(自认为是大同小异的东西,毕竟是依托于vue的),太适合我这个之前写过vue项目的人了,感叹现在的技术相比过去,在开发层面,真是方便了不少(主要是学习成本减少了),自此,开始了我的app开发之旅!

其实无论是什么样的技术,在刚开始接触时,都有很多问题等着你,首先面临的是前后端接口连接的问题,因为若依的app已经做好了相应的对接request配置,但是当你去连接自己的服务器时,还是会遇到问题,比如传值问题,但对于现在的我来说,还是小问题,调试几次就成功解决了,其实,问题并不是传值的问题,而是一个全新框架的整体规则问题,uniapp给你定义的传值规则,获取数据规则,展示规则,都将是未来一个个的问题。

我的一期工作的其中一个功能是,在app上设计一个填写歌曲名称,并且备注该歌曲是否使用原调,如果不是,将修改后的内容填写到备注中,并且上传一张图片即可,之后会在另一个主页展示所有的歌曲信息,也包括上传后的那张图片。

现在回想下我的工作经历,上传和下载图片文件,都是一个头疼的问题,无论是前端还是后端,当然app也不例外,从前端页面的设计和布局开始,这个上传图片的部分就一直让我很头疼,虽然框架的平台上都提供了相应的组件,但是等到你真正去用的时候,才会发现,你读文档,理解文档里的内容,也是很耗时的一件事,当你把用例复制到你的项目中后,本以为很简单就能呈现出想要的结果,但它偏偏各种错误,样式也很难调整(我的css是最薄弱的),经过各种折腾熬夜后,终于把样式布局搞定了,但又面临着前端传送图片到后端的问题(这才是重中之重)。

我在做上传时,遇到的问题,让我都摸不着头脑,而且文档中只是一言代过,并不会特别详细的解释它的用法,我只能再去找各种各样的博客。我在其中遇到的问题是,明明将图片选中了,而且页面上也有了相应的缩略图,但始终无法将流传给后端(不知道耗了我多少时间),最后才发现,若依提供的请求头的认证key用的是Authorized,而我后端自己定义的是Authentication,自己把自己搞成了冤大头,还一度认为uniapp的组件有问题。

上传是搞定了,但是紧着这就会遇到另一个问题:回显!我想各位写过uniapp的,应该都知道,图片的回显是无法使用本地路径的,如果使用,则需要加require,但是这个是给静态文件用的,如果你想动态展示图片,那么不好意思,它永远会给你报一个moudel not find,也就是说,你只能在require()里面写一个路径字符串,但不能使用路径变量,啊!!!真是头大啊,就因为这个问题,我搞了一下午都没解决,上网一看, 原来require貌似是不能使用变量的(也搜过其它办法,比如style中加background:url(),但还是不行),而且uniapp也不能使用本地路径,那么到头来,只有两条路可走了,其中一条是,将所有的图片通过后端的逻辑,把图片复制到用户手机app的static文件中,每次访问,都访问自己手机的static文件路径就可以了(没有试过,只是自己的一个解决方案,感觉能行,但很消耗用户的内存),另一个就是建立或者租用文件服务器,将图片等文件放到文件服务器中,然后再返回相应的http文件路径就可以了。当然,可想而知,我接下来就要自己部署一个属于自己的文件服务器了,那么废话不多说,开撸吧~!

标签:uniapp,vue,java,app,问题,程序员,页面,图片
From: https://www.cnblogs.com/mark5/p/17742681.html

相关文章

  • Java17
    1.同时配置Java8和17环境用户变量2.新特性publicstaticvoidmain(String[]args){//1.文本框Stringtext="""{"name":"小黑说Java","age":18,......
  • springboot+Uniapp+redis开发的AI医疗智能导诊系统源码
    AI+医疗的智能导诊系统源码 自主版权 支持二开一、什么是智能导诊系统?智能导诊系统是一种基于人工智能和大数据技术开发的医疗辅助软件,它能够通过对患者的症状、病史等信息进行计算分析,快速推荐科室和医生。通过简单的描述自身症状,系统即可找到最适合的科室,实现线上高效挂号,线下......
  • APP逆向-hook框架frida
    1hook框架frida#搜出位置---》找到了代码---》你确定他就是吗?#我们现在不确定代码有没有走咱们找的地方#借助于另一个东西,帮咱们确认,它确实走了它#hook框架---》通过hook(钩子)--》拦截把我找的函数hook住,看看有没有执行Hook框架是一种技术,用于在运行时拦截和修改应......
  • "Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/n
    docker-compose搭建elasticsearch出现问题例子如下version:'3'services:elasticsearch:image:elasticsearch:7.14.0container_name:elasticsearchenvironment:-"discovery.type=single-node"-"xpack.sec......
  • Java 学习笔记一
    dos环境下(Windows即cmd)的Java命令先用javac文件名.java;命令,编译java文件,生成一个后缀为class、名与类名相同的文件。再用java类名命令,执行文件。注释当类名前的修饰符为public时,类名必须和源文件名一致。并且以上操作不能执行带package的java文件。和C......
  • 头歌(educoder)第 6 章 Java面向对象之常用类
    头歌(educoder)第6章Java面向对象之常用类目录Java面向对象-常用类(初级)第1关String类第2关:StringBuffer类第3关:Math类第4关Random类第5关:知识回顾Java面向对象-String类第1关length()方法与compareTo()方法的使用-花名册第2关substring()......
  • ARM 架构的 JVM(Java 虚拟机)最高的免费版本是 OpenJDK 17
    目前(截至2023年9月),ARM架构的JVM(Java虚拟机)最高的免费版本是OpenJDK17。OpenJDK17是JavaSE17的开源实现,由Oracle和其他开源贡献者共同维护。你可以在ARM架构的设备上安装和使用OpenJDK17,它包含了JavaSE17的所有功能和改进。要在ARM架构的设备上安装Op......
  • Java 18发布:甲骨文公司已开始将Java纳入其软件许可审计
    Java18发布:甲骨文公司已开始将Java纳入其软件许可审计 转载wx5b8b6568896132023-06-1601:22:35文章标签数据库编程语言java大数据人工智能文章分类Html/CSS前端开发阅读数171 2022年3月22日,甲骨文公司宣布推出世界头号编程语言和开发平台的最新版本-Java18。......
  • java多线程中的 锁(暂时记录)
    P150-lock----锁----那一节publicclassThreadExtendextendsThread{  staticintticket=0;  staticLocklock=newReentrantLock();  publicvoidrun(){    while(true){      lock.lock();      if(ticket......
  • 通过工厂函数封装返回app对象
    main.py#主文件importosfromappimportcreate_app#通过环境变量设置项目运行时使用的配置文件,这里就手动设置以下了,一般部署的时候通过脚本等设置。#os.environ.setdefault("APP_ENV","dev")app=create_app(os.environ.get("APP_ENV","dev"))@app.route('......