校园通项目总结

来源:互联网 发布:淘宝信用贷款还款 编辑:程序博客网 时间:2024/04/27 08:34

好久没有在CSDN上写文章了,今天碰巧准备来写一篇文章,发现CSDN支持markdown编辑器了,真是程序员的福音啊。不过说起来,我去markdown的使用倒并不是很频繁,可能是我写文章的次数比较少吧,感觉markdown用起来还感觉挺生疏了。
可能这篇文章写的比较乱,唉,也就将就着看吧,主要是想把心情分享一下,当个流水账记录一下吧。

前言
校园通。15年6月24号我在知乎上发表了我的第一个长答案,题主想把学校的功能做成一个APP,可以做到的方法一是直接和学校索取(不靠谱),二是爬虫进行获取。我刚好之前有在爬虫方面研究一些东西(我在评论里面有谈到,是最早在写绩点查询器时去了解的这些东西)。说来也凑巧,那个时候其实我并没有想学校APP这样的想法,评论里面有很多人找我希望合作开发APP,但那个时候我并没有这样的想法。
就这样过了大概几个月,我在图书馆突发奇想(-_-)的想做一个关于学校功能的WebApp。最初的想法是想获取每天学校的新闻,能够更快捷的在手机上看得到。除此之外,我也异想天开的YY,比如图书馆的研究间预约(我个人比较期待的,然而由于后期我经常调试程序,导致我的图书馆帐号无法再预约研究间(┬_┬)),在线作业查询(老师经常神不知鬼不觉的在教学平台上布置了作业),还有想查询一卡通余额,查询水费等等,总之有很多想法啦。
校园通最初版本的首页

与此同时,我对这次的项目还是很重视的,事前规划好了很多东西,特别是思维导图的应用,让我觉得做起事来特别有效率。

开发阶段
从第一个版本到现在,开发的时间其实并不长(第一个版本的发布时间是2015.12.9),到现在接近3个月时间吧。虽然时间并不算长,但是我觉得自己在技术方面成长的很快,下面挑几个自己印象比较深刻的事情记录一下。

  • 框架使用
    在这个项目的开发过程中,我就秉承着敏捷开发的理念,也想亲身体验一下到底什么是敏捷开发。为了节省时间,我第一步要做的事情就是寻找合适的框架。因为是WebApp,所以我决定寻找响应式框架。几经比较之后,我选择了uikit这个框架作为我的前端页面展示层框架。然而在开发出几个版本后(迭代了几个版本),我决定完全抛弃uikit(好吧,uikit的徽章我保留了下来),使用了崭新的framework7(framework7是外国人开发的,淘宝团队翻译它的文档)框架。相对于uikit和其他的一些类似的移动端框架,我发现F7是更加完全彻底的APP框架(有一些小巧的App框架,比如app.js,但是这些框架我看了一眼就决定抛弃它们了,直觉告诉我拒绝它们(-_-))。
    这是记忆比较深刻的一件事吧,展示层的框架在项目开发图中更换,并且几乎是完全更换。不知道这在敏捷开发中常不常见,但是个人感觉在真正项目开发过程中这样做的话,付出的代价很大,因为我在后期的开发过程中为此付出了很多额外的精力。

  • 前端渲染还是后端渲染
    刚好想起来这个问题,就顺便谈一谈。在最初的校园通版本中,我是在服务器端渲染数据的。也就是说,我在服务器端把完整html代码拼接好,前台采用的表单提交的方式。我采用的是Tomcat服务器,但是我几乎没有用jsp页面,而是使用StringBuilder+Jsoup来拼接html字符串,因为我不喜欢访问网址是xxxx.jsp这样的,我看见很多网址都是类似/xxxx?p=123这样的形式,或许是我的个人爱好吧,我偏好右边这一种,所以直接在Servlet里拼接字符串再返回回去而不是用jsp。
    其实我这样设计还有一个想法是想支持不支持js的安卓机(后来证明我应该是想多了)。之前有在网上看见过前后端分离的帖子,现在想想确实是很有道理。因为我完全在服务器端渲染数据(比如表格样式,展现方式等等),数据层和展示层耦合在一起,导致我修改的时候特别麻烦,特别容易出错,标签没有闭合好嵌套错误是常犯的错误,导致前台显示异常。后来想通了(其实是因为F7是基于ajax方式的交互),数据层和展现层完全分开。前端采用F7和Template7(和F7可以配合使用,效果非常好)渲染数据,采取ajax方式请求后台数据。

  • JSON的妙用
    直到现在,我仍然认为JSON可以说是格式化数据的不二之选。我觉得它比xml强多了,可以说是简单灵活强大三者具备。
    在这里我必须安利一下服务器端的json的jar包。之前我一直在想方法的返回值到底怎样设计比较好。因为调用一个 方法,最典型的就是成功,然后返回数据;失败,返回失败原因。然而,没有一个统一格式的返回值。不同的方法返回的 数据类型是不同的。服务器的后台往往要写很多的实体类。但是我觉得其实很大程度是不用写这么多实体类的。方法的返回就是JSON字符串,然后在方法里面完全可以自定义自己的数据类型。JSON比java的实体类灵活的多,可以随时定义不同的类型,可以数组里嵌套数组,而且前端可以直接使用(现代浏览器支持JSON)。
    总之,我感觉自从服务器端用了JSON的jar包以后,感觉很多东西写起来要方便得多,自由得多。

  • 域名申请
    这次的校园通项目,我专门申请了域名并且备了案(迫不得已啊,备案过程中的心酸没人能体会)。不过这申请域名的过程倒是让我觉得自己成熟起来。想想自己都能够独立的去申请一个顶级域名,并且完成所有的事情,感觉自己还是蛮厉害的。吼吼。

  • 额外收获
    额外收获其实就是一个Ibatis的生成器。其实网上有各种各样的代码生成器,但是自己所需要的要么没有,要么不尽人意,最后发现其实自己写一个才是最方便实惠的。在写的过程中竟然意外的就把java里从来没学过的注解给实践了一遍,顺便把反射也给温习了一遍。有时候想想,真的是有些东西到了那个点,就跟无师自通一样,就算没人教你其实你自己也都完全会了。
    其实在写生成器的过程中还多次想过要不要把这个生成器给开源,好像自我感觉还写的蛮不错的。但是后来想想,还是算了,自己写来自己用用就好了,真要给别人用,自己写的那堆代码还是写的太烂了。
    其实这个生成器可以说是为这个项目订做的。如果不做校园通这个项目,我也完全不会写一个这样的Ibatis的生成器。

总结
其实还想再写一些的。但是由于时间太晚了,虽然也想明天再接着写,但是想想还是算了。我本来就是一个不太爱写文章的人。想想自己老是吸取别人的知识自己却没有任何输出,确实有点惭愧。不过我这个人大概也就这样了。

本来还想贴写图片的,就把我在贴吧的主题贴贴过来吧。
http://tieba.baidu.com/p/4203396449

0 0
原创粉丝点击