目前前端市场情况:初级前端供大于求,在培训机构和互联网公司的共同推动下,市场上的的初级前端越来越多。但是高级前端供小于求,本质上因为互联网公司的发展速度高于市场上的前端工程师的平均成长速度。所以,虽然会前端的人现在多了,但是从目前企业招人现状来看,企业招人依然困难。比如,在阿里巴巴供应链平台,企业为了构建一套适用于阿里所有零售场景的供应链解决方案,在系统架构、用户体验和研发效率的平衡等维度做了大量封装、抽象。这是企业的高速发展的必然结果,所以这对前端程序员的要求越来越高,然而市场上能够满足这样场景的同学,少而又少。
前端开发上手快,找到好的方法后入门很轻松,而且前端开发容易得到反馈,因为页面效果是可见的,所以我推荐学习一点内容后快速实战,在实战中找到成就感,发现问题,然后再带着问题回去系统学习,如此往复,然后就会越来越熟练。
首先是编程工具选择
在开始正式学习前端之前,学会使用基本的编程工具会让你的前端学习事半功倍,首先我们是要选择一个好的编辑器和一款好的浏览器,现在有很多的编辑器和浏览器给我们选择,但是无论是刚入门还是有一定经验的前端学习人员,我都推荐VSCode+Chrome这一个组合,百度直接搜就有了,如果在使用过程中有遇到问题可以留言咨询!安装好基本的编程工具以后我们就可以愉快的进行开发啦~
一、基础学习
1、html+css
这部分建议在网上找一些视频教程进行学习,视频教程的好处是有老师讲解,能够更加有利于刚入门的小伙伴快速进入前端行业。在看视频的同时可以在w3school在线教程上进行学习,边学边练,w3school在线教程上每章后还有小测试。建议看明白后自己在编辑器上敲一敲,然后在书上再看看,加深记忆,这对以后的前端学习会打下很深的基础。
2、javascript
javascript是前段开发人员必须要掌握的一门编程语言,前端要学的内容实在很多,如果没有其他编程语言的基础的话,学起来可能要费些力,还是建议先在w3school上学习,多敲敲代码加强记忆,可以适当做一些笔记,加一些前端开发社区和大佬们聊聊。
当然,书是必不可少的,在前端猿里有我给大家整理的几本重要的从前端小白到前端大神必备的五本书,希望大家手头都要有,可能很大概率这些书会陪伴大家走很长时间的学习生涯。
有了以上基础,就可以进行一般的静态网页,对于大学生的课程设计一般没什么问题,不过对于企业要求的复杂的页面还有一些距离,需要进一步学习。
二、进阶学习
1.css进阶(css3和基本的css库)
CSS在刚开始学习的时候看起来非常简单。毕竟,它仅仅就是些样式而已,但是,随着你的不断了解。很快,你会发现CSS没你想象的那么简单,它复杂且有深度。学完css基础知识以后我们还需要学一些css库,比如boostrap、elementui等等,这会极大降低我们的工作量,同时也能够增强大家的学习乐趣~
2.html进阶(html5)
我们需要了解html都提供了哪些api,然后项目中用起来。这部分没有什么难理解的,关键在于能用html5解决业务问题,以及不支持html5的浏览器的降级方案。这部分体现了前端的一个思想:面向未来编程,尽早将新技术引入业务中来,而不是过分考虑兼容性问题,进而导致面向过去编程。
3.javascript进阶(js高级和js框架)
首先是javascript语言范式。javascript不完全是一个面向对象的语言,它的很多设计理念都有函数编程语言的影子,甚至说如果你不用面向对象,完全可以把它理解成一门函数式编程语言。javascript的很多语言特性,都是因为他具有函数式语言的特点才存在的。这部分推荐先学习面向对象的基本理论,对封装,继承,多态等概念要理解,
然后是框架的学习。目前js主流的框架有react、vue、angular等,他们不直接操作dom。这类框架建议js基础打扎实后再学习。复杂框架是用来解决复杂问题的。对于电商无线端导购页面来说原生JS足以。对于类似商家管理系统这类交互复杂,开发量大的系统,才适合用这类框架。对于这些框架核心在于理解理念,不要只停留在会用的层面。
还要学es5,es6。现在开发js大部分基于es5的,ie8以下通过es5-shim。但利用一些工具,现在已经可以直接写es6代码了,尤其在reactjs,nodejs类型的项目中。对于从es5,es6每个阶段js发生了哪些变化都需要系统学习,学习顺序建议是JavaScript基础-es5-es6,越靠前的越重要。
4.数据结构和算法
开篇就提到了目前市场缺的是高级前端,初级到高级的门槛不在未来,而是在过去的大学基础课。
前端为什么要学数据结构和算法呢?因为这些都是稍微复杂一点的场景解决问题的必备武器。比如,把一个列表形式的地址数据,以树形渲染到页面,或者反过来;又比如,把一个多级嵌套的数据对象,转化成扁平的map结构再提交到服务器。更关键的,数据结构和算法,是计算机的思维方式,尤其是分治递归的思想,影响到代码实现、模块设计、乃至到系统设计,所以这是现在前端人员必须要掌握的知识,也是很多大公司目前招人必问的问题。
三、高级学习(