前端领域发展很快,各种新技术新思想不断涌现,这是一个好现象。
但是前端发展太快也带来一些问题,比如有同学就问到我究竟应该学些什
么,Angular.js、React、Node.js、ES6、ES7、Coffeescript、Typescript……似乎永远有太多东西需要学习,有些东西好像还没学明白就被另一些新的技术取代而“过时了”。
1
我们需要知道前端工程师是做什么?
前端工程师是 互联网时代软件产品研发中不可缺少的一种专业研发角色。
从狭义上讲,前端工程师使用 HTML、CSS、javascript
等专业技能和工具将产品UI设计稿实现成网站产品,涵盖用户PC端、移动端网页,处理视觉和交互问题。
从广义上来讲,所有用户终端产品与视觉和交互有关的 部分,都是前端工程师的专业领域。
2
那么,前端工程师需要什么样的知识和技能?
有人说前端工程师的技术栈是这样的:
<img src="https://www.funengwang.com/file/upload/202305/26/013224681.png" title="成为JavaWeb工程师要掌握哪些技能"JavaWeb工程师需要掌握哪些技术?】" alt="【成为JavaWeb工程师需要掌握哪些技术?】">
还有人说是这样的:
实际上前端工程师最核心的技能还是:
在一个典型的互联网公司的产品研发流程中,前端工程师和其他角色的关系大致上是这样的:
前端是最接近产品和设计的工程师,起到衔接产品和技术的作用,前端为用户可以看到的部分负责,所以也是最接近用户的工程师。
在多终端的时代,如果一个产品同时支持PC、移动端,前端工程师还需要和更多的角色打交道:
Javascript 对于前端是最重要的技能,所以优秀的前端工程师要有扎实的Javascript基本功。
而Javascript这门编程语言也是目前程序设计领域炙手可热的宠儿,如今的它不仅仅只是用来开发Web,还可以用在各个方面。
Javascript 可以用在“树莓派”这类智能硬件芯片开发
前端工程师也是软件工程师,所以软件工程师的基础知识也是非常重要的,这些基础知识包括:
数学
计算机体系
操作系统
数据结构和算法
编译原理
HTML和CSS也是前端工程师非常重要的基本功,很多同学,尤其是喜欢写代码的同学容易忽视 Markup Language,实际上 ML 也是 UI
相关的领域里面很重要的内容,不应该被忽视。
HTML: The Living Standard
HTML & CSS
3
有同学问说:“前端工作需求很多,老是改来改去,实际的技术点并没有多少,产品决定业务逻辑,从事底层基础服务会不会更有挑战和职业未来?”
的确,越贴近业务和产品层面上的工作,需求差异性越大,可能改动越频繁。
不仅仅是前端改来改去,PHP服务端做业务的同学也面临这样的问题,业务逻辑改来改去。
越底层通用性越强,改动相对较少。
不过事情都是有两面性的,首先可以这么想想,是底层基础服务的市场大还是互联网业务和产品的市场大。
其次,基础服务的通用性很容易达成,而产品层面 上如何通用化,如何在业务驱动的产品研发中利用工程化和工具化提升开发效率,这其实是一个很难的问题。
丰富的互联网产品已改变和正在改变着我们的生活,然 而作为产品的创造者,工程师们怎样让自己过得更好,这个领域值得研究。
另外,不要觉得实际的技术点没有多少。
举几个例子:实现曲线和曲面动画,计算地图的最短路径,让png静态图片类似于gif图一样做局部的运动,抽奖游戏,物理效果的HTML5游戏,3D图表,增强现实的WebGL视频流处理等等,这些都是在前端领域中遇到的实际问题。
就 Javascript 来说,在实际项目中设计最合适的模型高效率解决现实问题本身就很有挑战。
作为一种典型的新生代编程语言,Javascript 特性丰富,使用灵活,性能优良。
面向对象、函数式编程、各种设计模式、MVC 和 MVVM,这些本身就有足够的吸引力。
前端要解决界面和交互问题,实际上UI层面上的问题一直是软件工程方面的一个难题,因为UI不停地在变化。
浏览器各个版本的兼容性、Web 标准、移动设备、多终端适配,给了前端工程师很大的挑战,对前端工程师的能力也有很高的要求。
许多UI问题有不只一种解决方法,许多问题有非常巧妙的思路和精彩的解决办法,前端在工程师群体里是属于非常有创造力的一个群体,因为这个行业需要丰富的创造力和想象力。
前端工程师还是Web标准的制定者、实践者和推动者,而现在的W3C标准不仅仅局限于浏览器,还包括各种手持智能设备,车载设备、智能家居等等。
在未来万物互联的时代,前端将不仅仅是网页上的工程师,而是所有人机交互领域的工程师。
java培训班小结:
其实还是那句话,前端工程师首先是软件工程师,基础是最重要的,如果基础不扎实,一切应用技能就都是“浮云”。
前端的基础是什么?
HTML、CSS、Javascript基本功,数学、算法、数据结构、操作系统、编译原理基本功。
一个优秀的前端工程师必须要有自己擅长的领域,并且钻研得足够深入,同时要有眼界,能“跨界”。
可以以前端作为职业,但千万不要把自己的技能限制在前端领域,因为有很多东西,只有站在前端之外,才能看得更清晰,更透彻。