写本文的初衷:
现在是 2024年6月。虽然现在大环境不好,业内都在唱衰前端,前端已死的论调甚嚣尘上,但是不能一棒子打死所有人,对待所有事物都要理性看待,要有自己的思考,不能人云亦云。接下来我将根据从业五年的经验和感想,来说说我的想法。以及对新人的一些建议。
写在前面-给谁看:
- 以前做后端,因为兴趣或者工作需要,学习前端。
- 刚毕业的学生,想从事前端行业,但是对前端没有系统的、全方位的认知。
- 已经从事前端工作,但是仍在初级,对职业发展有些迷茫的前端同学。
接下来我将结合我的实际工作经验,以及找工作的经验,谈谈我对前端的一些看法。分为几个部分:
- 行业现状
- 前端能做什么
- 哪些人适合学前端
- 如何学习前端:技术总结
行业现状:
1. 大公司(本部):百度、阿里、字节、网易、腾讯、快手、高德、美团、拼多多,这些公司对前端的需求还是不少的,岗位大部分在一线城市,而且前端岗位的薪资待遇也是不错的。
- 岗位:在公司内部前端负责的工作多种多样:如pc客户端、h5页面、安卓app、ios App、pc内部办公系统、公司内部前端基建:如低代码、组件库、脚手架、工作流系统、包括一些图形技术如地图、三维渲染等等。
- 技术要求:通常要求比较高,且相对小公司来说技能面更广。总的来说,需要的技术一般包括:
HTML、CSS、JavaScript、ES6、React(优先级高于vue,但是也看项目组,大厂也有很多vue项目)、Vue、Node.js、Webpack、vite、Git、编译、算法、HTTP、跨端兼容、性能优化、安全、工程化、可视化、图形开发等等。大厂一般不要求掌握所有这些技术,但是至少要精通其中一部分,且要有一定的实战经验。 注意:校招的技术要求高于经验要求,因为校招的面试官一般不会问你工作经验相关的问题,所以校招的面试难度会比社招的面试难度低,刷好算法,基础扎实,了解底层原理,优势很大。 - 学历/经验要求:2024年的时间点,学历最低 本科,且是 计算机专业,否则都过不了简历关。校招的话,学历要求更高,985、211的同学相比之下优势更大。经验要求:校招不说了。社招的话一般要求3年以上经验,且与岗位对应的技能要求匹配,比如某个岗位要求精通
electron,那么你精通react就不够,就达不到要求,因为招进去就是让你做electron的,你不行就换下一个人,太正常了。 - 薪资待遇:校招一般都在14k以上,且随着工作经验的增加,薪资待遇也会越来越高。社招的话,3-5年经验,比较优秀的,拿20k以上的也比比皆是。加班一般比较严重,十点以后下班是常态,内部比较卷,压力相对较大。
2. 中小公司、非互联网公司、游戏公司:也有需求,但是待遇一般,因为这些公司的技术层,大部分都是以后端为主导,很少有toC的产品,基本上项目的前后端人员比例是1:3,或者更高,甚至我也见过团队前后端比例达到1:10的。
- 岗位:以做后台管理类型的系统为主,比如OA、CRM、ERP、BI、财务系统、人力资源系统等等。
- 技术要求:一般要求较低,因为这些公司技术栈一般都比较老,比如
jsp、jQuery、bootstrap、java等等,一般对前端的招聘要求较低,HTML、CSS、JavaScript、ES6、vue、webpack、echarts,基本上会这些就够了。 - 学历/经验要求:学历要求,本科及以上学历,工作经验要求一般,1-3年,且对技术要求一般,一般不会要求掌握底层原理。
- 薪资待遇:二线城市初级平均6-8k,高级一般最高不会超过12k,在一线城市平均13k,高级可能能达到15k-20k,但是基本过不了20k这个坎,加班情况一般,一个月可能会有五六天加班,工作强度一般,因公司而异。
3. 外包公司:根据甲方的要求出岗位,一般比较好进,只要你对应的技能还可以,不过由于从业人数太多,现在的外包还是有一些常见的要求。
- 要求: 本科学历,计算机专业,3年经验,熟练
HTML、CSS、JavaScript、vue、echarts。 - 待遇: 一般会外派到甲方驻场办公,五险一金按照最低的比例交,薪资比中小公司略低,一线城市一般10k-15k,高级平均17k,加班相比另外两种公司会少一些。
总结:现在不管什么类型的公司,前端岗位都比前几年少了很多,中小公司、外包公司岗位大约少了50%,大厂影响较小,少了20%-30%,因为大厂对前端的需求量还是很大的。
前端能做什么:
其实大型互联网公司的岗位职责,基本就囊括了前端的所有职责,广义的前端能做的工作如下:
- 开发公司内部办公系统,比如
oa、erp、crm、bi、财务系统、人力资源系统等等。 - 开发小程序:
微信小程序、支付宝小程序、百度小程序、头条小程序等。 - 开发app:
安卓app、ios app,内嵌h5开发的模式。 - 开发pc客户端:windows客户端、mac客户端,类似
bilibili、网易云音乐、qq等客户端。 - 开发h5页面:移动端h5页面,如抽奖、秒杀、活动页、广告页、h5游戏等。
- 开发可视化大屏:数据可视化大屏,比如地图、三维渲染等等。
- 开发低代码平台、组件库、脚手架等等。
哪些人适合学前端:
首先学历最好是本科,不然还是比较难找的。
- 出于兴趣学习,喜欢做界面的感觉,希望以后做这方面工作的。
- 后端同学想提升自己的竞争力和技能广度的。
- 只想学这门技术,用来养家糊口赚钱的。
如何学习前端:
这是我基于自己的学习过程得出的结论。也是本文的重点内容,我推荐的学习顺序如下。
1.html。html是一种标记语言,是构成网页的最基本元素,它不是编程语言,难度很低,主要是要记住一些常用标签的用法。
- 学习方法:系统学习法:菜鸟教程简单过一遍,先写没有样式的静态网页,熟悉html的基本标签。
- 学习目标:能编写
html文件,熟悉body、div、button、form、table、a、这些常用标签。可以实现文字,列表、表格、表单、图片、链接、视频、音频这些元素在浏览器中的展示。 - 学习时长:全日制一周
2.css。css的唯一功能就是给网页添加样式、色彩、动画,它也不是编程语言,不过需要学完html再学css。
- 学习方法:需求导向法:看到一个现有的效果,思考如何实现其样式,不会了就百度搜索方案。比如我想改变一个div的背景色,我应该用什么css属性,如果不知道,那就可以百度,由简单到困难,由浅入深,都可以这样学。
- 学习目标:搞懂css的语法,以及常用的属性,如宽,高,背景色,字体大小,字体颜色,边框,圆角,阴影。学习常用的定位和布局:如浮动,定位,flex布局,grid布局。
- 学习时长:全日制一周
3.JavaScript。JavaScript是一门编程语言,它可以给你的网页添加行为,且javascript是一门动态语言,可以实现网页的交互。
- 学习方法。系统学习+需求导向法。可以选择看bilibili中的教学视频或者看菜鸟教程学习基础,一边看一边敲代码。然后试图完成一些网页交互效果,比如鼠标点击按钮,弹出对话框,改变元素属性,调用后台接口,动态修改网页内容,用js实现计算器、轮播图、鸡兔同笼、找闰年等。
- 学习目标:搞懂JavaScript的语法,以及常用的语法特性,如变量,函数,对象,数组,字符串,正则表达式,this,闭包,原型链,作用域链,事件循环,异步编程等等。
- 学习时长:全日制两周/全日制四周。js的设计者花了10天设计了这门语言,js的语法非常简单,对于有编程基础的同学,2周时间足以掌握,对于非计算机专业读者,4周时间足以掌握。
4.ES6。ES6是JavaScript的一个重要版本,发布于2015年,因此也叫es2015.它是对js的一次重要升级,增加了很多特性。学完js后,你可能已经对es6有一些了解了,不过还是建议专门花时间系统学习一下。
- 学习方法:系统学习法:哔哩哔哩有很多讲es6的视频,可以挑一个播放量多的观看学习,我是看的汪磊同学的es6,觉得讲的还可以。
- 学习目标:搞懂es6的语法,以及常用的语法特性,如
let、const、class、箭头函数、解构赋值、模板字符串、Promise、Generator、Set、Map、Proxy、Reflect等等。 - 学习时长:全日制三天。
5.jquery、lodash、less。前两个库是十分常用的js工具集,可以了解一下基本用法。less是css的预处理语言,可以了解一下基本用法。
- 学习方法:查阅文档。
- 学习目标:搞懂
jquery的语法,以及常用的语法特性,如jquery选择器,jquery事件,jquery动画,jqueryajax,jquery插件,了解lodash、less的用法。 - 学习时长:全日制两天。
6.Typescript(如果时间紧,可选择跳过)。Typescript是JavaScript的一个超集,它由微软发布并开源,可以给你的代码添加类型,并且可以编译成js代码。
- 学习方法:系统学习法:可以看bilibili上小满zs的typescript视频,跟着敲代码。
- 学习目标:搞懂typescript的语法,以及常用的语法特性,如类型注解,类型推断,类型断言,接口,泛型,枚举,类等等。
- 学习时长:全日制一周。
7.vue全家桶。vue是前端最流行的框架之一,它基于javascript,vue的语法非常简单,非常适合作为初学者的第一个框架。
- 学习方法:系统学习法:推荐直接学vue3,如果你有typescript的基础,建议看哔哩哔哩上小满zs的vue视频,讲的非常详细,对源码也进行了一定的剖析。
- 学习目标:搞懂vue的语法,以及常用的语法特性,如vue组件,vue路由,vue生命周期,vue指令,vue过滤器,vue计算属性,vue监听器,vue插槽等等,了解vueRouter、vueX、pinia等概念。
- 学习时长:全日制两周。
8.node.js。node.js是一个基于chrome v8引擎的JavaScript运行时环境,它可以让javascript运行在服务器端,并且可以调用系统底层接口,比如读写文件,操作数据库,发送http请求等等。
- 学习方法:系统学习法:可以看bilibili上小满zs的nodejs视频,前期简单了解一下即可。
- 学习目标:搞懂node.js的语法,以及常用的语法特性,如node.js模块,node.js事件循环,node异步编程,node文件操作,node http请求,node数据库操作,node定时任务,node进程管理等等。如果只是做前端,那了解一下
npm工作原理、fs、path等前端常用api就可以,学习一下怎么在本地搭建一个nodejs服务,这样就可以自己写接口给网页端测试了。 - 学习时长:全日制一周。
9.webpack(可与vite二选一学习,建议先学vite)。webpack是一个前端打包工具,它基于nodejs,可以将你的项目打包成浏览器可以识别的文件,并且可以对文件进行压缩,混淆,分包等等。
- 学习方法:系统学习法:看哔哩哔哩上的webpack教学视频。
- 学习目标:搞懂webpack的语法,以及常用的语法特性,如webpack配置文件,webpack插件,webpack模块化,webpack打包优化,webpack热更新,webpack跨域,webpack多页面应用等等。
- 学习时长:全日制三天。
10.vite(可与webpack二选一学习,建议先学vite)。vite是轻量级的脚手架,由vue官方开发,它基于esbuild、rollup,并加入了很多开箱即用的脚手架实用功能。是vue官方推荐的脚手架,也可以用于搭建react、svelte等框架。
- 学习方法:系统学习法:看哔哩哔哩上的vite教学视频。
- 学习目标:搞懂vite的语法,以及常用的语法特性,如vite配置文件,vite插件,vite模块化,vite打包优化,vite热更新等等。
- 学习时长:全日制两天。
11.react(可跳过)。react是前端最流行的框架之一,是大公司的首选框架,难度高于vue。
- 学习方法:系统学习法:看哔哩哔哩上的react教学视频。
- 学习目标:搞懂react的语法,以及常用的语法特性,如
react组件,react路由,react状态管理,react虚拟dom,reactHooks等。 - 学习时长:全日制两周。
12.微信小程序(可跳过)。
- 学习方法:查阅文档。
- 学习目标:能独立完成小程序页面的开发,实现各种基本需求。
- 学习时长:全日制一周。
13.算法(可跳过)。算法是大厂的必考项,如果你是0基础,建议先跳过。
- 学习方法:做力扣、牛客网的算法题,做不出来也没关系,重要的是思考的过程,以及对某种算法的了解,基本上都做过一遍之后,算法能力会提升很多,面试也会加分。
- 学习目标:了解大部分常用的算法,如排序算法,搜索算法,动态规划算法,贪心算法等等。
- 学习时长:全日制一周。
!注意 ! 对于0基础的读者,学到这里,最少也2个月过去了。此时你应该能独立完成一个前端项目的开发了,可以开始一边到网上找一些大型项目自己实现,或者看看他们的源码,学习一下生产级的系统的设计思路,一边背面试题,准备找工作了。
- 关于面试题总结,这个网上有一大堆,很好找。不过重点还是要多投简历,多面试,次数多了自然就有经验了,记住两个字,海投!
大前端进阶。
如果还想继续深入,可以考虑以下一些知识。详细方法我就不补充了,因为我也不懂。
1.Electron(客户端开发)。基于nodejs和Chromium,实现桌面端开发的成熟解决方案,已经被很多大企业采用。
2.Nestjs(全栈开发)。基于typescript,可以说是目前最先进的nodejs框架,在nodejs的地位类似于spring在java中的地位。
4.Tauri(客户端开发)。基于rust,号称是未来的桌面端开发框架,目前还是实验阶段,但是已经有很多大公司开始使用它了。
5.Flutter(混合开发)。基于dart,可用于ios、安卓开发。
6.Rust。系统级别的语言,学习难度较高,主要用于系统底层开发,在开发应用时不占优势。
8.Go(后端开发)。由谷歌开源的语言,可用于后端开发,或工具开发,esbuild就是用go开发的。
9.taro(跨端开发)。支持使用 React/Vue/Nerv 等框架来开发 微信 / 京东 / 百度 / 支付宝 / 字节跳动 / QQ / 飞书 / 快手 小程序 / H5 / RN 等应用。
10.uni-app(混合开发)。基于vue,可用于多端开发,可以开发小程序、app、h5等。
文末总结:
前端能不能做?我的回答是:能,但是读者一定要明白,不管是前端、java、go、安卓、还是ios,市场都不缺初级人才,但是高级人才是稀缺的。因此要保证自己在前端领域的专精程度。前端能不能长期做(8年以上)?我的回答是:不建议。所谓的前后端分离,只是工作内容分离,并不是个人技能分离。如果你真的只会前端,后端知识一概不懂,那随着年龄增长,竞争力真的不够。市场更需要全能型人才,因此后端、运维这些也是一定要学的,前提是你已经非常熟练前端的技能,有了自己的基本盘。- 互联网发展迅速,技术更新迭代快,因此前端的学习成本很高,希望已经就业的读者也能保持学习的心态。当然如果觉得不喜欢,或者认为互联网不是自己的出路,也可以工作之余多看看其他行业的行情,人不能在一棵树上吊死。