2018年总结之技能成长

  盒端开发是天坑 

没接触盒端开发前,pc和移动端开发要兼容低版本IE和不同终端我觉得很坑,但是在现在的我看来已经很友好了,他们的浏览器是标准的,遇问题可网页调试,兼容有各种框架插件助攻。

盒端就悲剧了:

  1. 盒端很多浏览器是不标准的,在浏览器开发顺顺利利的,在盒子上一跑代码各种出问题,不会给你报错提示,不能打断点调试。
  2. 各种框架也不能用,只能跑原生js代码(所以我这个码农是原生态的),更过分的是某些原生语法还不支持!
  3. 盒端遇到问题只能从现象入手,原理出发,分析可能是什么导致的问题。

    比如有个奇葩的盒子,渲染和盒模型都不按常理出牌,默认样式{backgroud:red}。然后给它加个.white{backgroundwhitefont-size:27px;}class,当移除.white,它字体还是27px,解决办法是在默认样式里去显式声明font-size这个属性,得到这个结论就是从渲染原理出发的,它的盒模型经过测试,会因为加padding或者margin变成另外一种盒模型。

 

反正盒端开发只有你想不到没有它不会挖的坑,分分钟让你的代码狗带。。。。

 

盒端工程化开发的崛起

  正因为盒端开发条件的艰苦,我们得掌握主动权,于是在2018年主管带领我们搞了一系列部门技术建设工作:

     1、根据公司业务,借鉴流行前端框架思想,写了项目模板库和工具库,在项目上实现了可移植性和可扩展性。

这些库是部门核心人物参与设计开发,我这种小啰嗦就读读源码,学习整体设计,不理解某些技能点就去问问他们,不想只做代码的搬运工。事实证明,主动点学习是有好处的,因为在给同事讲解怎么用时候,好多同事都一脸懵逼,后期还边用边问。

从读源码学到开发思想应用到自己的页面代码小模块,比如从整理好的分析需求里抽出自己负责的业务模块,整理出公共模块,这样既能和大家合作好开发又互不影响,业务的耦合降低了,增强了它们的可移植性。

  2、针对各款盒子,抽离出业务,编写了专门的中间件,中间件对业务层提供统一的api,针对不同盒子,只需要更改中间件api的实现,业务层不受影响,大大提高了工作效率。

     3、针对盒子写了测试工具(测试盒子对html,js,css的支持情况),我负责的是css测试工具的编写,现在听说也只有我的能用还一直在用,这个技术狂带着我写的,我们不断的优化,从使用者的角度出发,还找设计师当使用者给我们提意见(他们不懂技术,只管看现象知道盒子哪些效果不兼容来设计)。

     4、盒端日志工具,这真的是个黑科技,基本是技术狂一个人开发的,可以在盒子上打日志调试,往盒子发命令控制网页,拍快照,实时双向通信,大数据上报查看等等,给开发效率大大提升,甚至可以不用现场出差,也方便了测试人员。而且他是一个很能站在别人角度思考问题的人,开发的工具使用者体验都比较好,现在很幸运,我是他同桌,虽然没了分享会,但是工作之余跟他聊聊技术,聊聊产品,聊聊人生,学到了很多。

   5、由于一直做芒果和优酷的项目,业务模块都差不多,慢慢的有了模块管理意识,加上画流程图的习惯,知道哪些业务可以集成到一个模块去,于是自己开始规划业务模块和写业务组件,注意模块之间的解耦,在各个项目上实现最大限度的复用和组合,工作效率上提高了很多。

   6、在业务上根据产品设计对数据的展示需要做不同模式的翻页,定位和计数,很多时候要考虑算法和拉取数据的时机,给出最好的用户体验(盒端各方面条件限制没办法的事)。这让我养成了手写算法草稿的习惯,经常一大堆草稿纸摆桌上,自己一时兴起写的个人版本的2048小游戏也是费了9张纸,经历三个算法迭代出来的成果。  

 

个人成长技能整理

因为独立负责项目,遇到问题大部分时候是自己查资料解决,少不了各方面技术的学习,而且除了web端,还和apk的同事合作在他们提供的webview上开发,就又涉及到学习一些其他的技能。所以整个2018年可以说忙碌又充实的,虽然没有在园子里写笔记,但是私下记录了不少。

  1、工具:git命令(放自己轮子使用),gulp打包(部门项目打包模板),adbapk开发时用到),webstormftp部署和调试代码同步),xshell使用(远程部署代码),Postman(以前用文档整理接口,现在用这个归类接口,并进行接口条件测试,目前部门也只有我在使用),ps(参加设计部的ps使用培训)

 

  2、语言:

  (1)项目开发前期技术储备,学习了phpjsp,但是最后使用php做数据请求和处理,不管接口怎么变,保证了业务层使用的数据统一,自己在本地服务器写的jsp页面就这样尘封在那里了。

  (2)公司今年了些计算机语言培训课程,报自己感兴趣的语言去学习,我报了java,最后还给大家颁发了毕业证书,phpjava学下来,对面向对象的编程又更进一步理解了。

 

       3、网络知识充电:

由于本身非计算机专业出身,我本身欠缺这块知识,所以看了些httphttpstcpdns,编码等方面的知识

 

4、非业务技能尝鲜:

less,vuebootstrap等框架学习(顺带学了node之类的,部门远程日志工具也用到了这块的知识)

页面模型(PWA,SPA,MPA,后来项目模型里面借鉴了SPA页面模型,用原生语言开发了符合业务的单页面应用)了解

移动端的通信更新和离线也比较感兴趣,主要了解存储设计这一块。

以上主要是去看些学习视频和别人造的轮子,自己写着玩了些东西,虽然盒端开发用不上这些东西,但是它们的思想是值得借鉴的。

 

5、代码调试技术:

之前自己组织了一场关于chrome调试工具的分享会分享了各个面板的使用和如何进行性能分析,但是打断点是门技术活,找到关键所在打断点进行跟踪和回溯。

从调试还意外收获了一项技能:

这个是去出差现场开发广告的时候遇到了跨不去的槛,主管不远千里来现场解救我,周末陪着我开发了两天,应用广告系统底层框架不是主管写的,但是他调试给我感觉就像他写的,哪哪都清楚,我观察学习主管的调试方法后意外掌握了怎么读代码的方法,以前我看回调全靠在chrome打断点跟,现在读代码毫无压力,这样也让我读开源框架的源码没那么费劲了。

 

6、性能优化:

由于盒端性能太差,所以性能优化的知识是必备的,比如浏览器缓存,图片,网络请求,存储优化,渲染,cdn,跨域解决等方面,这方面真的还任重而道远。    

   

2019年期望

   之前的自己懵懵懂懂,经验也不足,对什么都没有好的规划。新的一年,重头来,给自己的园子好好规划一下,重新整理和注入新的知识,也当巩固和学习基础知识,还要多造轮子,写自己想写的代码。

ps:不写博客只早读的程序猿不是个好的社会主义接班人。

2018年总结之开篇吐槽

2018年总结之角色蜕变

posted @ 2019-01-13 22:29  中二的羊  阅读(653)  评论(0编辑  收藏  举报