回顾创业的这几年,总是激情与绝望、通达与纠结交织。
2019年,对于自己的技术来说算是一个小转折。
这一年,我独自承担了项目的前后端,日常在2个vue项目、1个php项目中来回切换,有空搞搞新技术、刷刷掘金、逛逛github。虽然有时会抱怨负荷的工作量,遇到难题也会有些泄气,但一次次的攻克难关还是给了自己更多信心。
2019年,是我学习技术的第3年,也是我和前端亲密接触的第一年。
头两年里我学了php,并做了一个半B2B项目,虽然由于各种问题没有启动,但也算积攒了一些经验。2019年,孵化了第3个项目,全部由我一人负责,技术栈是vue
+ php
。
由于我需要独立承担大量的功能开发,所以我做了一些“偷懒”工作。
制定项目规范
可能有人会奇怪,一个人的项目还需要项目规范?
我需要,因为我经常觉得过去写的代码一团乱,时不时会兴起搞一些骚操作(比如用一种很诡异的写法写一个很普通的功能)😅……所以对于我,即便只有一个人,制定一份清晰、有指导作用、可执行的项目规范都是非常重要的!这样当我状态不佳时也不至于弄得乱七八糟,情绪太High时也不至于太过放飞😝。

因为就我一个人看,所以也没有太在意格式、排版什么的,网上的各种规范也参考了一些,只记录了自己容易弄混的,总的来说
内容 > 形式
。
typescript重构
都说后端学前端最好上手的就是typescript
,确实原项目加入typescript
后,妈妈再也不用担心我记不住string
、number
等各种类型的API啦!再结合webstorm
简直就是开发利器,保证我不会受复杂的变量名、遗忘的函数名这些开发噪音干扰,让我可以少打几个字,也不再手抖拼错单词啦。对vue
+typescript
感兴趣的可以看看我之前总结的不再头秃!typescript平滑重构vue项目
。

项目结构合理化
主要在于后端项目service层的实现,不同入口调用统一的service,保证业务代码的复用。这在我的专栏web开发MVC结构扩展,更加合理的代码分层 中有提到,不过现在看来,还是有些过度封装了,现在对于复用与简化的边界多了一些想法,要根据情况选择合理方案,等这块的想法再成熟一些,就做个总结好了。
基础代码自动生成
通过这一年的学习总结,我也算是积攒了一些“套路”,大部分开发万变不离其宗,都是换汤不换药的。为了解放双手,我将它们封装成了模板,把简单、繁琐的工作交给机器去做,这样一来,我就可以将注意力聚焦在那些我不熟悉、更为复杂的问题上了。
比如,做网站开发必然会设计大量的crud
,而crud
除了字段名、字段类型和一些细节操作不同外,基本都是大同小异的。再说了,我们讨论的是代码生成,而不是代码封装,即便生成的代码不能满足需求,也可以在此基础上自行完善。
我的项目后端用的是php(yii2)
,拓展yii2
中的gii
功能就可以满足我的需求。

生成的文件既有后端
php
,也有前端的vue
。
最终效果,我标注的地方都是代码自动生成的。

另外,axios
的api
文件也是根据后端路由配置自动生成的,解放双手的同时还能统一叫法,再也不会出现后端一个/user-info
到了前端变成myProfile()
之类的无语问题了👏。


同理,
typescipt
要用到的数据类型文件也是直接从mysql
动态生成的……当然还可以有很多。只要摸清了套路,代码自动生成真的是一个非常智(tou)慧(lan)的方法。
自动化项目构建发布
以前我开发完一个功能,是这样部署的:
后端:
git add .
git commit -m 'commit message'
git push origin release
然后在服务器上
git pull
前端:
npm build
npm gulp deploy //打包到服务器
这是之前前端的方式,我照着做的。由于传输需要一段时间,所以会导致服务器暂时无法访问😓。
因为有3个项目,来回切换实在让人头大,一不小心就会导致疏漏。为了解决这个问题,我重写了gulp
文件,把git
版本控制、ssh
文件传输结合在了一起,中间还添加了版本号管理、服务器软链接项目(保证项目随时可访问)。自此,我的每一个发布都变成了

虽然折腾这套自动化流程用了小几天,但是成果还是非常值得的✌️。
这一年的不足
按照程序员惯例:if
完必然有else
,说了正面当然要谈一谈负面(这样会显得更严谨😂)。
这一年系统化的认识仍然较少,一身武艺都是指哪打哪的零散知识点。技术的边界有所扩充,深度还是不够。
2020展望
最后,回到我的2020展望,还是那个flag——迎难而上。
新的一年,
希望自己能够更好地适应工作上的困难,
工作之余每月一到两篇掘金专栏,一周大于3次github代码更新……
多多锻炼,多和朋友聚聚,
相信自己的成长,每天少抱怨一点,多开心一点,
脚踏实地,拥抱未来 :)
