丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的Chrome浏览器插件
这时候可能有细心的小伙伴发现了,不是重构项目吗?怎么看起来像是重写了?好吧,我自始至终都没见过旧版“在线PS”的源码,后来我才了解到,旧项目原本是老板五年前扒的别人生产环境代码来上线的,这可真是五线谱上瞧不见马——就你马离谱了呀。
开发中遇到的问题已经数不清有多少了,但最大的问题还是莫过于图片的生成方案,想想在客户端一顿操作,以为自己画了只虎,结果下载一看却是只猫,那不是白搞了?
为了弥补设计部产能不足的问题,领导示意我从网上采集些模板和素材过来,让设计可以在里面挑选/调整之后快速扩充模板数量:
采集的资源会默认为“未激活”状态,由设计部门去修改和判断停启用。一开始边测试边录入数据,每天入库几十个模板,老板嫌速度太慢,我干脆就化身无情的模板搬运工,用公司电脑不舍昼夜地挂机了两天,最终入库将近3万个模板,把设计部几年的工作量都给安排了(这里偷偷说下,其实我也采集了稿定的,但是不敢给公司用,只敢把小厂的偷来稿定的只给自己消遣和研究,分析数据的时候也能学到不少东西)
PS:目前公司后台的未审核模板数还剩下2万个:
但设计部最近又经历了一波人员变动,如今产能是更加不足了。。
关于Node服务的部署,也是困难重重,首先是运维方面非常不认同NodeJs,说漏洞非常多,听到我要使用node+chrome的方案时更是强烈滴反对,说linux浏览器以前就用过,十分不稳定,还会搞崩服务器等等。但我寻思着自己1核1G小主机都不会崩,公司的服务器怕什么呢?于是还是坚持了自己的方案(前面说了纯Web绘制咱也真做不出来啊)。
运维这边则给了一个内网端口,由后端php再写一个接口调用,并且加了个url回调,当我截图任务完毕时再调用它,通知php去拿到图片。这样可以在url加串md5解决一个鉴权问题,关键外网也不能直接访问到Node服务(运维放下了手中的刀)。而前端下载则只能不停轮询php的接口,轮询到有结果时才拿到下载地址,比较的呆。
由于我们的项目并不针对C端用户,所以比起覆盖各行业场景的模板需求,垂直领域海报的模板下沉更有意义,这当然离不开设计部的添砖加瓦,此时将平面设计师做好的psd上传到后台解析成可交互模板就很有必要。这块涉及到很多东西,包括各种字体特效、文本多行拆分样式、图片蒙层解析、分组多页面等功能——我都是没有实现的,只做到了基本够用的程度,所以也写了一些PSD设计规范给设计部,以免设计师辛苦做了图传上来却显示了个寂寞。
这块和稿定设计比起来就是班门弄斧了,稿定没有任何规范,因为99%的psd文件它都能近乎完美的解析,文件是上传到服务端解析的,不知道具体怎么实现,反正可以支持解析很大的文件,而我是在前端浏览器解析完再上传的,遇到超过200M的psd文件基本上页面就卡死在那摆烂了。
由于自己是整个项目的owner,UI和产品介入后我开始有两套代码,一套是给公司开发的,另一套是自己的实验田,有些功能自己做了觉得可以,就git检出比较代码手动迁移到公司项目里,比如当产品告诉我他想加一个二维码功能的时候,我已经开发完一版了,直接截图给他,于是产品原型也不画直接用截图给我提了个需求单。
尝试了不少有趣的功能,但其实折腾多了,有点“面向谷歌浏览器开发”的感觉,因为浏览器之间的差异很难抹平,做到完美兼容对我来说几乎不可能,所以有很多都没上线,怕出什么bug,又有些实验性质的东西,就只是自己玩。
也简单做了一下后台的模板与素材管理:
项目到这里介绍的也就差不多了,总之就是一个不停摸索又不停折腾的过程。其实互联网行业里大部分的产品我感觉都挺饱和的了,很难讲什么真正的创新,都是缝合一下就出来个产品,再按实际需求去做功能点。而像遇到这种非常规类型的项目,技术主导就显得尤为重要,一般的产品专员很难发挥效果,技术能力既决定了产品的上限,同时也是一道难以逾越的壁垒。我在做这个项目经常想的一类问题就是:稿定这个功能到底是怎么做到的?当然偶尔也会想摆烂,那会和同事开玩笑说我是一个人的下水道对标百人前端的天花板,但是每当做出来新功能时,多少还是有些小兴奋,人在巨大落差感面前,也总会不断激起前进的欲望吧。
一开始搭建过Vue2组件库、Vue3组件库,由于公司的前端项目基本都是使用Vue2技术栈的,所以我在4人前端小组里推过我做的这个组件库,当时我考虑的重点是怎么用起来舒服,所以编写了自动化脚本代替一些操作,而且我认为公共组件库就是给大家用的,使用文档很重要,所以组件文档也是要做到能根据代码和注释自动生成,降低开发成本。
我的组件库是基于monorepo模式并由lerna进行管理的,组件deploy会直接发到官网上面去,所以当然也有准备要部署私有npm的(是的我们公司项目都是淘宝镜像梭哈),但是碍于要去和运维申请服务器资源,可能还需要处理权限账号之类的对接,而且很奇葩的是我Gitlab连创建仓库的权限都没有,觉得限制太多懒得去搞了。
公司项目太多,分支管理也有点混乱,经常需要来回横跳切换,发布有的是CI/CD,有的是本地编译后提交dist目录,觉得麻烦,写了个自动化脚本,通过交互式配置任务来自动处理提交发布,还有判断任务执行风险、代码冲突检测机制、任务热重启、自动跳转到pr合并等功能,个人觉得挺酷,但是我们公司操作Git都是“小乌龟”起手(php应该很熟悉),不像我喜欢用命令行。
由于当时也在学习怎么写vue的cli插件,就把这个工具写成了cliPlugin,不知道是不是这个原因,发布到npm后竟然有不少的自然下载量,直到目前已经有20k+download数据,不知道别人用着怎么样,反正我基本没在公司项目里使用(因为提交规范原理是拦截githooks,但是我们多数前端代码是没有独立仓库的,都放在了php仓库的目录下。。
职业道路要早做准备、多做打算,能力增长有快有慢,可能目标感才更能决定成败。技术不必急于求成,都是可以慢慢学的,但环境可能不会变好,或许努力去到更好的环境,才更能加速你的成长。
要做的事情还有太多。就先说到这里吧,保持思考,保持学习,平常心。