想开始下一件事情前,我必须对之前的做一下总结,养成一个习惯。
我是一个半路出家的所谓前端。大学毕业时,其实我是想做Android,但是进入第一家公司之后,半毛钱Android代码都没写过。主要从事一些java开发,C#驱动封装之类的工作,算是软硬件结合的工作。
2017年7月的时候,因为一些个人原因呢?想来上海,所以写了辞职申请,打算跑路。但是,由于工作内容牵扯甚多,前前后后离职了半年,2018年的2月份的时候正式离职。我的前端就是这半年开始生根发芽。
当时公司我和一个哥们的关系比较好,平时也一起吃饭,他算是我的前端领路人,他叫钱铭。虽说是闲聊,但是当时也没事干,就打算学个啥。他呢负责公司前端vue的基础组件,结构开发,所以我就顺水推舟的学起了前端。
具体学什么呢?Vue,当时Vue还不是很火。但是公司领导可能目光比较长远,我们已经开始使用Vue了,我清楚的记得当时我们项目的Vue的路由模块还是我们老板自己写的,说是官方的达不到要求,我是极度佩服的,因为到目前为止,他是我见过编程技术最强的人。
Vue比起我们传统的Jsp,Jquery 等等技术,我觉得主要有两个最大不同。
- 前后端分离模式
- 组件化开发
我当时学习的方向是,第一前后端怎么分离。第二组件化。前后端分离的基础是,前端技术的发展具备了,脱离后端独自开发,运行,测试,打包,部署的能力。那么这个能力的最大贡献者莫不是NodeJs,所以学习Vue或者任何其他前端框架,诸如Angular,React等等,绝对要对NodeJs有了解。
NodeJs是一套JavaScript运行时,借助与Google V8Js高性能引擎,使得Js代码可以脱离浏览器,直接运行到操作系统之上。这是一个大的创新。简单来说,就是NodeJs可以将js代码利用V8解释器,直接编译成c/c++代码,运行到操作系统之上。
我觉得前端如今的发展,NodeJs最起码有百分之五十的功劳。当时学了一些NodeJs的基础之后,我试着照着Vue的官网去搭建Vue的项目,当时的VueCli比起现在可以说是数量级的差距。很多配置代码,包括webpack(前端的一个打包工具,本质上其实也是利用NodeJs做的,所以webpack的语法我们可以发现他遵守的是commonjs规范)的一些配置,需要自己手写,幸亏当时有领路人,项目搭建很顺利。
项目搭建好之后,就开始学习Vue的基础语法,当时我因为也是后端开发嘛,我就很惊叹,代码还可以这样写,这比java爽多了啊。所以当时感觉的很酷炫。组件化,如果一个网页是一张纸,组件化就是把这页,裁剪成很多小块,然后最后用一张白纸装下就行。所以Vue的代码结构根本上是一个组件树结构,所谓的一张白纸就是根组件App.vue文件。
Vue的另一个创新就是,把每个组件的html,css,js代码放到一起组成一个后缀名为vue的文件。这样的好处是写起来很方便,对于从后端JSP等技术转过来的人很容易学习接受。但是缺点也是显而易见的,如果组件划分不好,单个vue文件的体积过大,阅读,开发,维护不方便。
然后当时就写了一个todolist,后面就没怎么看了,告一段落了。离职回家待了几个月,就来上海了。
说起来也怪,来了上海之后进了新公司,第一个项目前端用的是AngularJs,vue也没用上。由于兴趣使然,我也就学起了AngularJs,因为我有vue的一些概念在脑子里,我就对比着看,我发现AngularJs有他的优势,但是有时候也麻烦。
我们项目组用的是Angular+ionic的组合,项目很老。也没有前后端分离,所以在这第一个项目的2年里,我做了我认为我做过最难的事,把项目重构,实现前后端分离。当时我组的项目的规模是很大,业务逻辑JS代码有500个,有些单个JS文件都是几千行的。如果考虑不周,bug铺天盖地来,真的很难。当时我只能说我也是胆子大,接了。
虽然我认为从项目角度考虑,效果不尽如人意,从15秒的首屏加载速度,优化到5到7秒,我感觉不好,其实还可以做的更好,但是时间有限。但是从我个人而言,我收获巨大。当时我记得做这件事的人加上我就5到6个。我是负责人,当时虽说整个迭代周期有快10个月吧,但是时间很紧,坑巨多无比。当时做完时,全组测试,加上专门的测试团队,业务方整整测试了2个月。上线之后灰度进行了一周多。最后竟然没有因为这个前端重构,出现生产问题。我只能感谢所有人,心里是真的长出一口气,觉得什么都是美好的。
然后19年十月份的时候,也是当时个人原因,怎么说呢?我自己犯浑(不是工作的事情),害了很多人,时至今日,我依然记得。导致被迫换了个地方呆着就是我现在的项目。
这个项目是Vue的,这时候我发现我终于用到我自己学的Vue了,很舒服。融入很快,一周多吧,我基本项目就看明白了。当时项目不是我搭建的,有统一的框架。但是我是觉得简单。一来二去,一年多了,我觉得前端在我看来,很简单,很舒服,很迅捷。所谓简单就是不用考虑那么多,第一好看,第二快,第三代码尽量符合规范,很容易出成果。
按照上面的顺序,我总结了一下,作为前端工程师,第一我们要考虑美观,用户是用眼睛看,不要说代码有多规范,有多少技巧,不好看都是白扯。第二,快,响应速度要快。这就要求我们要有一定的业务结构代码设计能力。第三,很迅捷,不管是开发,测试,修改,维护都要很快,前端东西不多,现在Vue,Angular,React的任何一个脚手架,从开发,测试,运行,打包都太方便了。所以前端工程师,做事情一定要快,你没有很多受限的地方,不像后端,很多系统相互关联,一个数据链路上多少个系统,牵一发动全身。
所以总结下来,我发现我搞前端时,偶然里面包含着必然,必然中又充满偶然。这就是生活,记得前两个月,项目组的一个需求中,我提出使用Mongodb,其实2年前这个数据库我就用过,写过很多博客。但是如果没有以前的准备,我当时也不会有百分之百的信心去提出。
只要是正确的事情,用不用得到,得不得的到回报其实不重要,重要的是做就行了。
但行好事,莫问前程!关键是你发现,老天其实并不会辜负你的良苦用心。大善。










网友评论