对于前端开发的一些看法
在过去的一个学期一直在参加一个项目,主要负责为某应用改进前端设计。当我们组接手的时候这个项目的代码库里已经有超过1万行代码,且大部分代码都由一位程序员完成。
这个应用是移动端的应用,然而却是由前端技术开发完成,并通过框架架设在移动端上的。应用使用的主要开发框架为美国流行的meteor框架,且使用了Coffescript作为Javascript的代替语言。应用的所有CSS文件均由Stylus书写并编译而来。理论上,当开发者熟悉这些语言后会认为使用这些东西极大的降低了开发难度。然而真正的问题在于维护。
我们队的队员都是前端开发的新手,其中只有我有过前端项目的开发经验。其余两位几乎没有写代码的经历(有一个人任设计师,另一位我并不知道是如何把自己定义成程序员的)。Meteor框架是典型的mvc开发模式,应用的原先开发者也是采取了将应用独立成各个view的开发方式。我们团队采取的方式是单独对一个view进行改善,这样可以降低时间成本。
在我们开始着手开发的时候,发现了几个重要的问题,这也是对前端开发产生看法的原因。
首先,代码的原先开发者在超过500行的Coffeescript文件里没有一行注释。虽然文件大体能够按照功能进行模块化,但是对于新加入的开发者,阅读代码是非常困难的一件事。因此,在前端开发的时候一定要按照逻辑将函数排列,并在相应地方给出注释。尤其是采用Coffeescript这种缩进影响编译的语言时,更是要注意这个问题。
其次,尽量少用开发框架的插件。原来的开发者使用了130多个插件对这个应用进行改进,造成的巨大问题是每一次改进并重新启动服务都需要耗费大量时间。我个人不是太了解npm和meteor,但我确定插件多了一定会造成依赖冲突的问题。这个应用本身实现的功能不算太复杂,但体积竟然达到了将近100M。作为一个由网页应用移植而来的手机应用,这个体积真的有点笨重。
第三,我想要提一些我个人的想法,也可说是疑问。以前开发网页应用如Django,Flask应用时,前端的很多运算仍然由后台来完成,之后由jinja2等框架呈现在前端。然而现在越来越多的开发者开始使用Angularjs等前端框架来完成计算。这样的好处是前端与后端只有数据交互,而可以尽量减少使用jinja2来使得前后端交互过多。可能我这里说的不是太明白,举个例子,使用angularjs时可以完成对一个表单内容的全部处理,并在用户点击提交时将表单数据打包成json发送给后端;传统的方式可能是在表单每一个控件都有监听,在用户提交时直接由后台处理每一个控件的数据。我作为前端菜鸟并不知道我理解的是不是百分之百正确,也不知道究竟哪一种才是正确的方式。在这次的项目中我尝试过使用轻量级数据框架Vuejs,通过简单的Javascript就可以实现一个view的功能并打包发送给后台。不过由于原开发者并没有一开始就使用这些前端框架,导致我的这个想法不能得以采纳。
最后,开发前端应用时,CSS还是不要从头写起。网络上流行的bootstrap,purecss等可以省时省力的完成大部分工作。
经过这次项目,我对于前端开发也是身心疲倦了,尤其是当一个不会写代码又觉得自己很懂很想做点事的人要当产品经理的时候。下学期开始应该不会在实验室干了,还是专心研究运筹吧。