java转前端之后的一些思考

Java转前端之后,一直在思考前端近年来的变化。

之前数据填充到html的过程是在服务端完成的,服务端的模版引擎,比如jsp、velocity、freemarker等,支持循环和条件判断。有组件的概念,一个页面中相同的部分或多个页面之间公共的部分可以抽成组件,比如jsp的@include,velocity的#weight,数据有page、request、session、application4个域,做了很好的分层,page中存储当前页面中的数据,request中存储同个请求中的数据,session中保存着一个会话的数据,application保存着应用的全局数据。当然路由也是由服务端控制的。

ajax的出现使得一切慢慢有了变化,因为可以异步的去获取数据,所以请求数据不需要刷新页面了,这样用户体验更好,所以越来越多的数据交互采用异步的方式,异步加载列表数据,异步分页,异步上传文件,异步提交表单,数据填充到模版的过程是在前端完成,所以有了很多前端的模版引擎mustache.js、artTemplate.js、jsmart.js等。

越来越多的功能都在一个页面上实现,慢慢的发展成为完全的单页应用,数据的交互全部通过ajax的方式,然后单页的路由前端来控制,页面中的逻辑独立的单元或者需要复用的部分,都应该抽成组件,比如vue,react,angular2都提供了组件的功能,这些组件比服务端模版引擎提供的组件更加完善,支持穿参数,在组件内部分了mvc三层,加入了数据的单向或双向的自动绑定。有些数据不是组件内部的,是全局的,多个组件共享的数据,就像服务端的page,request,session,application域一样是分层存储的,facebook提出了flux架构,可以把全局的数据统一管理,改变的时候传给dispatcher一个action,然后store会做对应的改变,组件监听着store的变化,可以在store变化时收到通知。

代码多了,就不可能都写在一个文件中,应该分到多个文件中,但是仅仅分多个文件会有全局变量命名冲突的问题,所以有了模块的概念,浏览器端的模块化规范 amd,cmd和他们的实现requirejs、seajs,但是开发环境下用这种规范的话,文件不能分的很细,所以开发环境下一般都是用commonjs的模块化规范,然后经过模块打包工具把他们变成浏览器端支持的代码。代码总是分分合合的,模块化就是干这件事的,比如一个ui组件,一段功能独立的js都可以分到一个模块中。

因为ajax的出现,越来越多的之前后端的功能在前端实现,模版引擎,路由控制,数据分层管理等。很多思想都有种似曾相识的感觉。

但是js是弱类型的语言,写代码时候代码的自动提示和java的没法比,这点挺令人不爽了,用TypeScript会好很多,因为有了类型才能更精确的提示。

还是喜欢写java代码,虽然不做java了,越写js却越喜欢java。

你可能感兴趣的:(java转前端之后的一些思考)