引言
- 做前端开发时间不算长,虽然在很多方面仍是小白,但是毕竟也悟出了一些东西,借此平台分享,也算是自己成长道路上的一点积累;
广度还是深度
- 自己对这个问题纠结了好久,最后得出的结论是:不用纠结,just do it!下面引用实验室一位牛人的看法,以此告诫自己just do it才是最重要的!
- 在一无所知的时候,当然是广度重要,需要先知道、后深入;
- 在知道了一些后,当然是深度更加重要,不同的框架、语言、知识都是相通的,如果真正将一门技术、一门语言学深入、甚至达到了精通,并且能够抽象出来一种适合自己的学习方法,那么学习其他技术也会触类旁通;
学习一门新技术的方法
- 了解技术的应用状况和应用前景:
- 在知乎、博客上搜索;
- 这项技术多少人在用、哪些公司在用;
- 这项技术处于上升还是下降阶段,是否会一直流行;
- 确定深入学习的路线图:
- 了解业内评价较好的专业书籍导论、目录;
- 进行第一遍普及性学习,此阶段的目标不是深入理解,而是会用、上手、基础性代码跑通:
- 官方文档、W3Cschool总结性文档;
- 公开课(比如极客学院);
- 入门博客;
- 入门书籍;
- 在学习深入到一定程度后,会发现一个瓶颈,那就是会用、但是不明白原理。此时应当进行第二遍研究性学习,此阶段目标不是广度,而是对某一技术点的深入挖掘,要达到看懂源码、完全了解内部运作机制的程度:
- 确定需要深入挖掘的几个技术点;
- 专业性书籍;
- 专业性博客;
- 官方文档细节;
- 在github上搜索别人的代码,阅读优秀代码;
- 自己实践一个小项目;
- 分享和提升:
- 在研究过程中产出自己的理解,试着写github和blog等,分享自己的思想;
- 回过头看看在”第一遍普及性学习”中的疑问是否解决;
Web系统开发流程
- 我还没有真正步入职场,但是根据在实验室的项目经历,也能悟出一些在web应用开发过程中的团队合作技巧和注意点;
- 首次讨论,不考虑技术细节:
- 系统的逻辑架构;
- 系统的物理架构;
- 系统需要哪些页面,之间怎样跳转,大概设计什么页面功能;
- 讨论后写wiki文档,让大家再想想细节,确定可行的方案;
- 第二次讨论,确定主要技术点的具体方案:
- 用户需求定稿;
- 页面样式设计图定稿;
- 数据库设计定稿;
- 系统主要技术点定稿,确实困难的技术点要确定几个备用技术;
- 讨论后将系统总体任务分解成小任务,提issue分配到人,确定时间进度;
- 原则:同一个页面交给同一个人去做和维护;
- 开发过程:
- 原则:只考虑把东西做出来,暂不考虑性能问题;
- 每个点:新建分支、写代码、commit和push、备份代码和数据库到本地、及时合并代码到master;
- 及时和用户、产品经理沟通(如果有双重管理更应如此),沟通好再开工,避免用户需求的更改导致重复劳动;
- 开发文档写在wiki;
- issue完成及时关闭;
- 整体完成后上线测试:
- 考虑性能问题;
- 考虑代码优化;
- 考虑测试中遇到的各种实际问题;
搜索技巧
- 刚开始用google的时候总是搜不到自己想要的东西,原本以为是自己英语太渣,现在看来是没有掌握住“关键词”,下面就把我总结的常用的搜索技巧分享给大家;
- js官方文档:MDN
- 扩展内容:cuntomized
- 实例内容:example
- 搜教程:tutorial doc
- 搜下载:download
- 代码测试器:plunker
- 同级概念:… vs …
- 搜快捷键:
- 代码补全:code/hint/completion/assist
- 代码格式化:code format