• WEB开发初体验


    最近在一个小项目上第一次尝试了独立完成WEB开发从前端到数据库的所有工作,在工作即将完成之际发现自己挖了一个大坑。

    之前一直做前端开发,前后端分离,后端的前置接口全都是rest风格的。虽然也会偶尔参与到接口的开发中,但所有的工作都是按照前人定好的方案,按部就班地填代码而已。
    这次要独立完成WEB开发从前端到数据库的所有工作,于是有机会去自己考虑系统该怎么做,代码该怎么写(学写代码的时候就自以为是地偷了懒没有做过这个工作)。

    后端用java。由于我对java的了解仅仅是知道语法,能取取数据,封装封装数据而已,所以突发奇想,干脆前端js代码能不写就不写,工作都交给后端去做算了。模板引擎就选了spring推荐的thymeleaf,没有用ajax,所有接口都是form提交,算是返璞归真了。刚开始写页面的时候感觉还好,但到了后期对接上数据库之后,我就发现代码是越来越难驾驭了。

    前端需要填不少表单,填写过程中还可能会有请求接口的操作。由于我愚蠢地拒绝使用ajax,所以请求这类之前接口必须把表单数据存起来。因为页面功能比较简单,只用了jquery和bootstrap,没有用前端模板引擎,而thymeleaf绑定表单到的java对象的功能实在是太好用了,以至于我觉得要什么前端模板引擎,thymeleaf挺好用,于是,我决定调用这类接口的时候,把表单数据一起提交了存在服务器上,之后和接口结果一起返回。于是问题就来了:

    1. 因为以前写的后端接口都是rest风格的,所以,我压根就没有考虑过在服务器端存储页面状态,于是这些数据被我理所当然地扔到了session里面存储。然后就发现,要存到session里面的数据实在是太多了,以至于我专门写了个类用来管理存到session里面的数据。即使是这样,这一块的逻辑还是让人觉得混乱。
    2. controller类我是以功能划分的,这样一来,跨类从session中存取缓存就成了常事,经常这里存了,那里忘了取,或者存取的时机不对。
    3. 因为懒,我用于给前端进行绑定的类和要存到数据库去的类是同一个,甚至连对象实例也是同一个,类里面有很多属性和前端没有关系,是需要在后端改变的。因为后端会缓存前端的数据,所以经常出现本来已经设置好了的属性值存到数据库里面去了以后却没有了的情况。
    4. MVC根本区分不出来了

    虽然最后功能都实现了,但调试的过程真是累得吐血,这样的代码维护起来真的会要人命。

    如果让我重新做一次的话,估计我会做以下改变:

    1. 使用前端模板引擎,除了吐页面的那一次之外,后面的交互都用ajax来实现,页面的状态多交给前端去维护,不要不愿意写js。
    2. 如果实在是不想写JS,后端会一个类对应一个页面,相关接口都放到这个类里面,用类的成员变量缓存页面数据,不再乱用session。
    3. MVC分层,要把使用前端mvvm框架的经验用到后端,理解这个项目的java是作为js的替代,除了语言特性导致的写法差异外,分层与分模块不应该有太多差异。

    总结起来,还是我经验不足。还要继续努力啊大叔。

  • 相关阅读:
    Redis介绍
    getch
    gecher
    C语言中的sleep函数
    sleep
    C语言中的System()函数
    System的使用
    函数参数的传递方式
    C语言strlen()函数:返回字符串的长度
    strlen
  • 原文地址:https://www.cnblogs.com/linden5/p/7158150.html
Copyright © 2020-2023  润新知