当前位置: 首页 > Web前端 > HTML5

听说你认识一个J?——前端开发闲聊

时间:2023-04-05 17:55:25 HTML5

周末刚和小伙伴聊了聊“前端从被鄙视到重要”的话题,感受一下这四年前端的发展,所以我有这篇文章。一、前期情况总结不用说,刚开始工作的时候,前端还是一个不被重视的岗位。Chetudog,写网页的侮辱性昵称与前端开发有关。我经历过的一个明显迹象是,在招聘网站上,前端开发的薪资比其他开发人员高90%甚至更低。在知乎2011年的前端状态问题(《如何改善国内前端开发行业的尴尬地位?》)中,包括何世军老师在内,都承认这种尴尬确实存在。但是,30年河东,30年河西,到了2018年,前端已经成为了热门职业。现在你开个科技公司或者自己组团队,如果你没有自己的前端,那我只能说你的公司还没有上台。包括最近疯狂招聘的今日头条和拼多多,前端也是最抢手的职位之一。是什么原因导致前端在短短几年内成为重要且需求广泛的开发岗位?这种被重视的情况还能存在多久?红利下有哪些隐忧?前端开发应该如何发展自己成为TOP5?本文将根据自己的思考来回答这些问题,非常非常欢迎大家留言讨论。注:本文前端指的是H5开发,不是什么大前端,不包括iOS和Android端开发。2.前端开发线2.1野蛮时期应用设备:PC技术栈:LAMP这个时期也是前端最被鄙视的时期——说白了就是没有前端概念——这个时期,前端分了一群人:设计师用DreamWare做页面,应用开发和后台开发通过JSP和PHP来完成。路人A、B、C、D如果是个人,可以走到前面进门。业务逻辑放在后台,页面没有动态效果,也没有高层交互。最糟糕的是前端严重依赖后端来实现。想要抢先一步,必须懂PHP或者JAVA,否则命脉掌握在别人手里,根本就无法前进。现阶段的技术栈是LAMP(Linux+Apache+Mysql+PHP)。看看这些名词,就知道那个时期的前端真的和前端没什么关系。被鄙视也是正常的。这个时期对应我的大学时代。当时只是靠着JAVA+JSP+模板网站随便下载UI模板,混日子做网站,赚到第一桶金。2.2前端时期这个阶段其实可以分为两个部分,一个是MVC时代,一个是MVVM时代。2.2.1MVC时代的应用设备:主要是PC,少量的移动界面技术栈:AJAX、JQuery、CMD/AMD、Grunt/Gulp有了AJAX,前端终于可以和后端解耦了。同时,由于PC的普及和网络性能的提高,人们也希望网页能够有更好的用户体验。MVC框架应运而生。但是受限于各种自发布的浏览器,前端能做的还是很少。此时的技术栈是JQuery库。那时候知道JQuery就是知道前端。如果你看过JQuery的源码:“哇,兄弟你个屌,哪里最好看?”但是大部分的前端工作都是浏览器兼容的。直到现在,一想到IE,就可以瞬间提到IE6、7、8的几个坑,现在的新人可能无法理解这些兼容性让前端工程师有多疯狂。比如,直到2017年,我去参加JSConfig大会,有一家公司只支持Chrome浏览器作为福利写在招聘启事上。这个时代,设计师和后端都开始放弃前端了,但我估计怕麻烦胜过怕技术,因为我听过不止一个人说:让我写CSS/浏览器兼容性,我的头会痛。MVC时代后期,前端逐渐开始有了一点工程化的影子:模块化编程有CMD/AMD,构造有Grunt/Gulp,编码约定有Jslint/jshint。我们终于不是在一个JS文件里写写写写了。你以为你能翻身唱农奴?并不真地。在移动端高速发展的早期,iOS、Android等终端开发是这个社会的主流。前端开发受限于网速和缺乏统一的Html标准,所以还是没有被重视。2.2.1MVVM时代的应用设备:移动端、PC端技术栈:Angularjs、React、Vue、ES6、HTML5、CSS3、Webpack、PostCss、Flexible、Viewport、ESlintChromeV8引擎的出现、H5和ES6标准,补充前端最后的短板对齐。前端可以肆无忌惮的展现自己的存在感:更炫酷的人机交互,更流畅的用户体验。同时,4G网络的普及也让前端正式进入移动端的开发。如果说在MVC时代,我终于意识到前端也算博大精深(主要是前端的优化和兼容,代表人物张新旭),那么在MVVM时代,我真的体会到了前端的魅力。各种框架和新技术如雨后春笋般涌现。作为一个前端,我不敢说自己掌握了所有的技术,更别提其他的开发了。第一次,前端和其他开发之间出现了明显的壁垒:当然其他开发也可以做前端,但是要想做好,学习成本太高了——而这往往是不可接受的。这期间前端并不甘心只是做一个页面或者一个手机网站,做了很多APP的尝试,比如PWA,微信小程序。前端开始正式蚕食终端开发的生存空间。2.3全栈时代的应用设备:服务端技术栈:Express、Koa、Eggjs只是作为前端使用,最终受限于服务端。Node的出现,让前端开发有了掌控服务器的能力。官方宣布,前端开发的大部分正在向接入层转移,抢占应用开发的工作。当然,有些前端开发者之前也了解过PHP,但是更喜欢PHP的被称为应用开发。现在,同样的JS可以用来控制服务器,更不用说Node相对于SSR的先发优势了(PHP用js扩展也可以做到,但我觉得只有应用开发才能做到)。前端控制接入层后,后端就彻底沦为前端的接口提供者。以前的跨域,gzip压缩,求爷爷告奶奶这种事,自己都可以搞定。可以说Node扩展了前端的版图。这时候前端不再叫前端,改名为全栈开发。2.4未来应用设备:全终端、服务器、手机的普及,给以iOS、Andriod为首的终端发展带来了红利。随着5G网络的推进和[PWA][3]的加持,前端开发也将迎来最大的一波红利。在可预见的未来,前端受益于灵活的部署安装,其在移动开发中的比重将逐渐增加。我什至认为前端会成为终端开发的最终解决方案,包括但不限于手机、电视、汽车中控等等。项目=前端+大数据/AI3。个人开发思路3.1遇到的问题前面说过,前端不仅现在流行,而且还会流行很长一段时间。但是在前端开发技术的提升中,我也会遇到很多问题,如下。3.1.1组件过多,浮于表面毫无疑问。当然,最重要的还是要用到一定的技术。但是,如果在学习技术的时候仅仅停留在学以致用的层面上,那是远远不够的。只学粗浅的使用,首先容易忘记,其次遇到问题不能快速解决或定位。整个人都会有一种自己明明用过,实际上却一无所知的感觉。就我而言,最讨厌的感觉是:A:听说你用过XX?B:嗯A:那你能说说它的XX逻辑吗?为什么要这样写,看不懂B:(⊙o⊙)……而且现在框架和组件太多了。浮于表面的另一个缺点是你对各种框架和组件没有深入的了解。在选择技术时,会遇到困惑的选择。3.1.2基础薄弱,难以接受新技术当我们接触到一项新技术时,有时候怎么看都觉得文档晦涩难懂,难以理解。排除小概率文档确实不好的情况,大部分情况是我们缺乏这部分知识体系的基础。举一个非常简单的例子,添加一个部分完成的拼图肯定比完成一个完全空白的拼图更容易。如果你回头看看这些年前端的技术栈,你会发现前端的技术更新是最快的(比其他端的发展快很多)。如果难以接受新技术,会大大降低自身价值。我想这对于一个有梦想的工程师来说是很难接受的。注:前端技术更新快的原因:零历史负担:代码可以随时更新,不需要像终端一样等待审核,也不需要像后台一样支持多业务不能随便改。硬件更新带来的红利:浏览器性能提升、手机普及、4G网络应用、前端网页需求量大。更广泛的技术范围:前端H5、接入层Node。相比之下,终端开发和后台开发只有自己的一亩三分地。3.2采取的策略谈问题只能发现不足,有了策略才能不断改进。在论坛上,你经常可以看到如何有效地提升自己。这时候有人跳出来说“看源码”。我一点也不否认看源码的作用——其实我觉得看源码是一种质变的方式——但是,提升不仅仅是看源码的方式,在其实基础不牢的时候看源码是完全看不懂的。因此,我们应该根据自己的情况,在不同的阶段选择不同的策略。3.2.1我认为明确自己的定位是最重要的。在我们开始学习和工作之前,或者学习和工作一段时间之后,关键是要审视自己,确定自己的水平,制定适合自己的提升策略。一个明确的定位应该不断被提及。只有反省行业,反省自己,才能明确自己前进和努力的方向。3.2.2培养技术品味当自己的定位明确后,如何推进、推进到哪里就成了另一个问题。自己很难形成技术品味。你需要更多的投入,包括但不限于阅读上面的源码和博客,形成自己的技术品味,从而知道自己应该往前走的方向。3.2.3夯实基础,解决问题认真对待遇到的每一个问题,决不轻易放过,尽量从自己的理解出发,有原则地解释问题。每解决一个问题,都是对原理的又一次深入理解。几次之后,即使遇到以前没遇到过的问题,也能举一反三,事半功倍。这部分和第二步不分先后,两者交替进行。3.2.4多写博客,多总结。常常觉得有些事情以前完全想通了,但过了一段时间,再看的时候又忘记了。原因有二:一是之前没有深入了解。如果我深入挖掘,我还有一些我不明白的地方。总结的过程也是反思的过程。这时候我可以更清晰的梳理一下自己的思路,然后记录下自己的闪光点。从而达到深入理解和备忘两种效果。如果坚持不下去,可以找朋友采取对赌的方案,每次不写就扣几百元。关注和反思日常工作,可以一箭双雕。3.2.5以点带面,也有了跨界突破的想法。我遇到的大牛们,不仅对自己的领域很了解,对其他领域的知识也很了解。这是一种深度帮助——通过理解其他领域的解决方案反哺自己。所以,学习其他语言,研究其他开发理念,对前端开发是有帮助的。如果能做到以上五点,别说成为大神了,养家糊口、自信爆棚也应该是可以期待的。4.总结前端开发正当时,但也要居安思危,提高自己的技术,既不是以前的剪纸狗,也不是今天的组件小子。夯实基础,拓宽视野才是正道。