做为文科专业毕业,无名校背景,无任何关系,没有接受过任何专业培训,彻底靠自学和看书看视频作了五年前端,在外包公司,创业公司,BAT级公司再到新型互联网公司都呆过,想结合本身的经历谈谈对于自学前端的一些见解:css
关于技术栈学习,网上总会有各类讨论,在此我就不详述了,感兴趣的话能够看看github上的一份前端学习大纲:2016年前端知识学习大纲,这个基本能覆盖绝大部分新手须要学习和掌握的内容,后面我更想聊聊本身对技术学习上的经验归结。html
首先对于前端学习须要有认同感,关于这点很是很是很是重要,想必大部分人学前端的初衷是以为前端相对于简单,上手快也不须要学习算法,编译原理,数据库,操做系统,网络原理都诸多基础知识,所见即所得立刻就能开始干活,并且外观呈现和交互效果这类东西比较容易激发人的学习兴趣,另外一种状况是作后端,作客户端,作产品的同窗以为本身的发展遇到了瓶颈,转作前端不管是从上手程度仍是快速出活等都相对容易,加上这几年h5应用,webapp,微应用,小程序,混合app开发等各类新概念层出不穷,市场承认度也比较高,行业需求的水转船高也让前端的职位的一直供不该求,可是请不要由于以上的外在因素下降了自身的学习标准,前端开发作到后面仍然是软件开发的一个工种,软件技术的一些普世性标准放到这块也一样适用,好比基础算法,编程语言,设计模式,工程管理,网络知识等都是通用的,甚至这些基础底蕴掌握的好坏会直接决定你后续的发展空间,因此请放弃前端=页面仔这种幼稚的想法,努力提高本身的内功修炼。前端
前端是门一直在变化的工种,相对于服务端和客户端的开发,不管是技术沉淀仍是框架的选用等业内都会有一套大体认同的标准,更多时候咱们是根据自身的产品类型和业务发展来作技术选型,可是前端则否则,这是为数很少走的官方标准落实缓慢,民间标准层出不求,而后民间标准流行后再反推官方标准更新的技术路线,这就直接致使了好不容易学了点新技术标准却苦于无合适的环境可使用,好不容易掌握了一个流行框架和工具而后隔年再看发现业内都不用了,不一样的浏览器和软件大厂纷纷推本身的特殊标准来占据市场致使同一套标准下的代码在不一样的环境中还会有各类兼容性问题等各类囧境,这就要求做为前端开发者天生就须要具有各类积极主动和开放包容的学习精神,多与业内的同行交流,多去关注下github上的一些火热的项目,多去尝试些新技术理念和调试一切的耐心。好比前几年会写jquery,了解CSS就能开始干活,加配个grunt和less已经算是高配,可是如今咱们再看看,你要不整点node的基础环境,不弄个npm和yarn来管理你的资源依赖,不整点单页路由,不上点babel和typescript来预编译下高级语法特性,不用点数据驱动和MVVM之类的框架,不来点redux,rx-js之类的编程模型,不整点webapck之类的依赖管理与打包工具,不上点mocha,jasmine之类的测试驱动开发框架等,你都很差意思说本身在作前端开发,诚然不少人都会说我只是想写个页面为什么要弄的这么复杂,可是你们为什么不反思下咱们的页面开发的工做模式和技术选型上是否是真的一直以来被咱们低估了才会有如此大的偏见,何况如今前端开发的工做量已经不一样往日,服务的接口日趋API化,各类处理业务和控制层等操做也在逐步往前端迁移,这也对咱们的工程化规模控制提供了更加严格的要求,而非以前的拼成各类脚本片断;vue
前端是门不断借鉴的工做,这里说的借鉴其实并不等于抄袭,而是指不断在站在巨人的肩膀上创新的过程,若是来看今天js的发展。当年js的做者都不会想到本身当初只是设计用来验证页面表单的语言能发展到现在这个程度,可是随着技术领域的不断发展,业内你们都比较公认的一些好的设计模式,架构理念其实也是不断地被一些新型的js库的做者所借鉴,好比当下最火的angularjs2,react,vue等,其中的不少数据更新策略,分层设计以及组件分层的思想其实在不少其余语言框架的设计中早已体现,只是把这些概念带到了js中再根据语言特色从新作了优化实现,好的技术理念与算法实际上是和语言无关的,因此多了解些通用的技术准则和最佳实践才能不断创新,否则的话永远只是作API的调用党和框架的追随者,自身的发展就容易陷入迷茫期。node
前端发展到如今可谓层出不穷,百花齐放,可是如何选择作适合本身项目的技术选型,这其实也是很是考验每一个从业人员的能力,一方面团队和我的须要成长,确定会愿意在项目中去尝试些新的技术框架和理念,另外一方面工做须要快速出活以及旧的业务须要平稳过渡,考虑到先后的衔接也不可能彻底弃旧的技术体系不顾,同时还须要考虑技术的稳定性以及后续的升级维护成本,第三方资源,社区活跃度以及生态发展环境等等,做为前端从业者是须要你对本身选择的结果负责的,因此咱们的指导原则应该是多考虑下本身以及团队的能力,hold不hold住,若是出现了最坏的状况该如何处理,若是出现了源码级的bug改怎么调试。遇到了文档匮乏和团队成员水平不一致该如何配合等等,这些都应该做为你的技术选型的参考,而非单纯的求新求酷,咱们不排斥新技术,也不轻易否定各类框架的优缺点,可是前提是请先多了解多思考,作最佳的选择。react
万变不离其宗,技术和基础的沉淀才最重要,诚然各类理念和框架在不断涌现,可是语言最本质的一些东西是不会变的,ecmascript的语言基础特性,html的语义标准,css的各类特性,http协议,设计模式以及经常使用的页面优化性能实现等等,这些最接近技术本质的东西是任何框架都取代不了的,因此时不时地回过头来多多看看这些东西,能够的话,本身也多写点博客文章或者造个轮子,对于自身的提高也极其有用的。jquery
最后我想说的是若是条件容许的话,建议初学者仍是多去大公司锻炼锻炼或者多研究一些业内主流公司的标准,毕竟先以高标准来要求本身,即便客观环境再怎么恶劣也不至于彻底走偏,可是相反一开始就都是些野路子,彻底按着本身的主观臆想和快速出活的想法去积累经验,那样每每容易陷入被动,后面再纠正回来不管是成本仍是时间损耗都是巨大的。git