同学B:
学不动啦,vue 2.x 还没有搞清楚呢,vue 3.0 就又要来了,react 还没有学过,node 也不会,还有各种新的概念比如:大前端、微前端、serverLess、前端工程化…这些都没有接触过
同学C:
非常羡慕大厂的同学,接触的技术深,管理和流程规范,技术面也广,不像自己整天在小公司里面写 if-else
关于技术能力发展的问题
同学A:
工作了3年了,感觉什么都会了,又觉得自己什么都不会,不知道如何进行提升
同学B:
天天写业务代码,公司的技术栈很老旧,感觉跟不上时代,也没有什么技术含量,也没有什么沉淀,成长的太慢了
同学C:
对框架原理层的东西接触的太少,工作上也接触不到,感觉只是在做代码的搬运工,根本无法突破现在的技术阶层
这些问题我也进行了思考,我觉得他们应该并不是小众,而是一个大众化普遍会遇到的问题。包括我,我当年也遇到过类似的问题。
================================================================
-
那么这样一个大众化的问题(技术体系不清晰、发展过程不明确)我们应该如何去进行处理?
-
前端的技术体系究竟都包含了那些内容?
-
我们当前的技术能力可以满足哪些需求?处在哪一个位置?
如果你也有这样的疑惑的话,那么这篇文章或许会帮助到你
==================================================================
我们会从三个方面来去说明上面的问题:
-
前端的技术体系
-
前端工程师的发展计划
-
以上问题的解决方案或者说是个人建议
大家可以根据自己的情况,直接跳到对应的模块中。
==================================================================
整个博客的内容,我整理出来了一个脑图。大家如果觉得看下面的内容过于繁琐的话,那么可以直接看这个脑图。
脑图相当于是一个简化版的文章内容,包含了文章中所有的知识点。如果看到某个内容节点时有所疑惑的话,那么再去看具体的文章内容,这样也不失为一种好的方法。
=====================================================================
对于前端技术体系这块,我把它主要分成了 6 个方面:
-
PC 端技术
-
移动端技术
-
服务端技术
-
优化技术
-
监控技术
-
工程化技术
而整个前端的体系也是针对这 6 个方面来去解释的。
部分技术点可能同时属于多个方面,这一类的技术点我就根据自己的理解放入到了我认为合理的位置了
首先我们先来看 PC 端技术,对于现在的 PC 端来说,我们可以主要把内容分成两块:
-
以 jQuery 为代表的一系列高兼容性框架(或者说是库)
-
MVVM 框架,如 Angular、React、Vue(排名不分先后),这一块内容,以 Vue 为例进行解释
以 jQuery 为代表的一系列高兼容性框架(或者说是库)
这一类框架对于维护老系统的同学(以政府项目或国企项目为主 )来说应该非常的熟悉,虽然说现在越来越多的项目已经不再考虑兼容 IE9 这种老的浏览器了,但是对于一些老系统来说,因为历史遗留问题,或业务兼容问题,根本无法忽略掉 IE 浏览器的兼容。
所以说这一类的技术依然是无法被忽略的一块,毕竟 技术永远是为业务来进行服务的,虽然可能大家都非常讨厌这一块的内容。
以 Vue 为例的一系列 MVVM 框架
这一块是目前使用率最多,也是最被大家所接受的。它们大大的提高了前端的开发效率,并且增加了前端的开发壁垒。可以说没有它们,就没有现在的前端开发环境。
在现在如果你想要找一份前端的工作的话,那么这三大框架你至少要熟悉一个。
如果你是双非院校(非985、211)的话,那么我个人建议你学习 Vue,因为对于国内大部分的中小企业来说,Vue 的占有率是非常高的。
而如果你是 985、211 学校的话,那么 Vue 或者 React 均可。
对于 Angular ,因为在国内的占有率并不高,所以如果你是以找一份工作为主的话,那么我个人不建议你去专攻 Angular 。
它们中任何一个框架,整体的内容如果展开的话,那么都会非常的多。还是以 Vue 为例,周边知识大体可以分为三个大块:
-
根据渲染模式的不同,我们需要了解两部分:
-
单页应用:SPA
-
基于服务端的渲染:SSR
-
Vue 全家桶知识:
-
路由管理:VueRouter
-
全局状态管理:Vuex
-
脚手架工具:@vue/cli
-
组件库部分:
-
比如:Element-UI
-
比如:Vuetify
-
比如:vant-ui
当然除了这些之外,其他的周边库还有很多,比如 网络请求库:axios 等等,这些都是需要大家去进行掌握的。
对于移动端技术来说,目前主要有两个方向:
-
以 微信小程序 为代表的小程序技术
-
跨平台技术
那么对于移动端技术来说,我们也是以这两个方向来去说。
以 微信小程序 为代表的小程序技术
微信小程序在 2017 年发布,在 2018 年大火,整个的发展速度是非常快的。这也从一方面验证了 每间隔16个月,学习前端的难度会增加一倍 的这句话。整个前端无时无刻不再有新的技术、新的概念被提出,所以我觉得,前端开发工程师应该是站在潮流最前端的一批人。
小程序最初以 原生 的方式进行开发,后来逐渐出现了一批基于小程序的框架,如果你是一个小程序开发为主的前端工程师,那么以下知识点,你是必须要掌握的:
-
小程序原生开发
-
小程序框架开发(比如:wepy、mpvue)
-
小程序 UI 库(比如:WeUI、Vant weapp、iView weapp)
跨平台技术
跨平台技术的提出主要是为了解决 移动端设备碎片化 的问题,什么是 移动端设备碎片化 呢?给大家举个简单的例子:
目前移动端的设备,主要分成两块
1、Android
2、IOS
而对于任何一端来说,又分为 原生应用(APP) 和 网页应用 ,同时还多了一个 小程序(虽然小程序的设计之初也有为了解决 移动端设备碎片化 问题的原因) 。
如果我们为每一种应用方式都开发一个版本的话,那么我们就需要大约 4 个应用的维护。这样的一个成本是任何一家中小型企业都难以接受的。
所以大家一直期望,有一种方式可以开发一个应用,但同时运行在多个设备之中。
基于这种原因,才出现了所谓的跨平台技术。
跨平台技术的出现,旨在解决 一个项目无法同时作用于多种不同设备之上 的问题。所以在刚出现的时候市场上被接受和尝试的声音非常的多(毕竟这对于公司来说,代表省钱)。
不过,虽然这些技术号称可以达到原生应用同样的体验,但是因为不同设备之间的差异化,导致最终开发出来的成果总是无法满足线上项目的需求。
所以在目前跨平台的技术只是在小范围的进行使用。
整个跨平台技术方案中,目前主要流行的有以下 4 种:
-
React Native
-
Flutter
-
Weex
-
uni-app (一套代码编到8个平台)
对于服务端技术的话,有很多的前端工程师都不是特别的清楚。因为在很多前端工程师眼中 服务端的内容应该是属于后台的东西 ,如果你也有这种想法的话,那么 趁早丢弃 。
试想一个场景,身为一个软件开发工程师,假如有一天,你有了一个点子,想要通过技术来实现的时候。突然发现,你只会写前端的内容,对后台服务一无所知。你不得不求助于服务端工程师。这是不是一种悲剧。
所以说 服务端技术 可能在你的初期对你帮助不大,但是当你在技术领域越来越深入的时候,它是必不可少的内容。
目前针对于前端工程师的服务端技术有非常的多,如果你想要学习服务端技术的话,那么可以从以下四个方面来着手:
-
Node.js,大体可以分成两个框架方向:
-
Express
-
KOA
-
数据库知识,目前的数据库同样分成了两块大的方向:
-
SQL 型数据库,推荐:MySql
-
NO SQL 型数据库,推荐:MongoDB,Redis
-
服务器:
-
Apache
-
Nginx (重点推荐),针对于 Nginx 来说,你至少需要掌握两点:
-
单页应用的部署
-
反向代理 / 跨域处理
-
云概念(个人认为:云概念是未来的主要方式),云概念至少需要掌握以下 5 点:
-
云服务器
-
标准 ECS 云服务器
-
应用云服务器
-
云数据库
-
SQL 型
-
NO SQL 型
-
云存储服务
-
OSS:对象存储
-
NAS:文件存储
-
ServerLess:无服务结构(小程序云开发是一个很好的切入点)
-
CDN 服务
如果你想要在工作中获取到更好的评级,那么优化技术是必不可少的。
这里所说的优化技术主要 针对网页访问速度的优化 和 用户误操作规避的优化,这两点的内容应该比好理解。
优化技术这一块如果展开说就非常的大了, 因为它所涉及到的知识点会非常的多,并且根据不同的场景也会有很多定向优化的内容,所以这里我就简单的列举出来几个方向,仅供大家参考:
-
静态资源优化
-
接口访问优化
-
页面渲染速度优化
-
防抖 / 节流方案
具体的内容,大家可以自行百度,这里就不详细说了。
这一块的内容,可能很多两三年左右开发经验的同学很少了解过。先简单的做一个定义。
什么叫做监控技术呢?
当我们的项目上线之后:
到底有多少人来访问?
项目出现过多少次catch?
用户在哪个页面停留的时间比较长?
等等…
获取这些数据的方式我们就称为:数据监控技术,这里简称 监控技术。
看到这里,可能有很多同学会说:“我要这些东西有什么用啊?”。
你如果只作为一个码农角色的话,那么确实没有用。但是如果你站在开发者的角度、或者 项目所有人 的角度来看的话,那么这些数据是非常重要的依据。基于这些数据来完成的 数据可视化平台 ,也是现在非常重要的一个方向。
说了这么多,那么如何实现数据监控呢? 实现数据监控的方式主要可以分成两种:
-
自定义数据监控
-
使用现成的第三方监控平台(前期推荐使用)
如果你对监控技术刚刚接触,或者处于项目前期的话,那么我个人推荐你使用 现成的第三方监控平台,这一类的平台有很多,简单列出三个:
-
百度统计
-
诸葛IO
-
GrowingIO
为什么会这么推荐呢?很简单,两个字 简单 。因为简单,你可以快速上手。因为简单,你可以不用花大量的时间去进行测试、逻辑编写。因为对于监控技术,是一套非常复杂的技术体系。仅对于 埋点 这一块来说,就可以分为:
-
无埋点
-
全埋点
-
自定义埋点
三个大的方面。
所以对于前期,我更推荐大家直接使用现有的第三方平台。当这些平台无法满足你的需求的时候,可以考虑自己实现。
如果你不是 leader 的话,那么工程化技术你接触的可能也会比较少。
什么是工程化呢?
比如说:
你的代码提交到 Git ,那么这个 Git 平台是怎么搭建的?
你的代码提交,如果不合规(死链或者代码格式不合规),如何避免被提交?
代码部署这种重复的工作如何自动化?
新版本上线如何最大程度的减轻 BUG 出现导致大面积崩溃的风险?
如果真的出现了大面的崩溃,如何快速的返回上一个稳定版本?
等等…
这些场景,我们都可以称之为是属于 前端工程化 的一部分
工程化代表的应该是一整套前端从开发到上线的全流程。目前的工程化以自动工程化为主。也就是说你的开发、测试、部署等等,全部都自动化。
这一整套的自动化工程,就可以称为是一套 工程化技术。
在很多的中小公司中,工程化的流程并不规范,存在非常多的问题。这点对大家来说,应该是一个好事情,如果你熟练地掌握了 工程化技术,那么你就会拥有更多的 技术资本 。
工程化技术方面,简单的给大家进行一下列举:
-
代码托管平台搭建
-
Gitlab
-
自动化工具
-
合规检测
-
ESLint 提交检测
-
兼容性检测
-
死链检测
-
自动化测试
-
自动化部署
-
CI:持续集成
-
CD:持续部署
-
产品迭代方面
-
灰度发布
-
A/B 测试
以上这些就是整个前端技术体系的内容,整体来看是非常大的一块内容点。那么这么多的技术点,我们应该从哪一块入手?从哪一块开始学习呢?
这就是我们接下来要说的内容,也就是 前端发展计划 的部分
====================================================================
对于前端发展计划这里,我不打算给大家进行分类。什么叫分类呢?
比如很多人会告诉你:
-
一年(工作经验)以下你应该学习什么?
-
一到三年你应该学习什么?
-
三到五年你应该学习什么?
这种方式就叫做分类,根据你的工作年限,来告诉你你应该学习什么技术了。
我觉得如果按照这种方式来制定发展计划的话,那么是 不准确 的。因为,每个人根据所处环境的不同,那么成长的速度是不一样的,我们不能够简单的通过 工作时长 这样一个 定向 的标准来进行划分。
那么我们应该怎么做呢?
首先:发展计划应该和当 前的技术体系 是息息相关的。比如说: 2016 年的时候,我们只会 jQuery 可能就能找到一份工作,但是现在你至少要会 三大框架中的一种才可以。前端的技术无时无刻不在变化,那么我们的发展计划也会跟随技术体系来对应改变。
其次:发展计划的制定应该以你个人的 当前技术水平 和 下阶段目标 为标准。比如:你当前只会 jQuery , 然后你想要找到一份工作。那么你当前最应该学习的应该是三大框架中的一种,比如 Vue 。
以上的这两点和你的工作年限没有一点关系。
那么发展计划这里,我们怎么去讲呢?
我把整个前端的发展计划分成了 6 个阶段,我们先来看一下:
-
基础知识
-
工作知识
-
进阶知识
-
底层知识
-
新兴知识
-
未来展望
每个阶段后面,又会包含一些具体的知识点(参考顶部脑图)。
每个阶段代表你当前所处的区域,
-
假如:你想要入门前端的话,那么你首先需要掌握的就是 基础知识。
-
假如:你希望找到一份前端工程师的工作的话,那么你就必须要掌握 工作知识 的内容
-
假如:你希望在工作中更近一层,比如担任 高级软件开发工程师,那么你就应该开始学习 进阶知识 或者 底层知识 的内容
-
假如:你希望担任前端 leader ,那么你就必须要实时关心 新兴知识的内容
这个就是我根据大家的 当前技术水平 和 下阶段目标 为标准,来制作的 发展计划,我觉得按照这种方式,应该是最具有逻辑性的。
那么下面我们就分别的来看一下这六个阶段详细的内容。
如果你当前还没有接触过前端,接下来打算学习前端知识点的话,那么你就应该从基础知识入手
基础知识阶段作为我们的第一站,面向的是没有前端开发经验的同学,如果你之前没有接触过前端开发,并且想要通过学习前端来找过一份工作的话,那么你就应该从基础知识来入手。
对于基础知识,你需要掌握的主要有两大部分:
-
HTML + CSS :这是基础中的基础,是必须要掌握的
-
JavaScript: JS 作为前端的核心语言,用来处理所有逻辑相关的问题,是入门前端的一个必备内容
从这两块开始学习,一直到可以熟练掌握,然后在进入下一个阶段。
那么达到什么样的标准,才能够称为基础知识过关了呢?
检验是否过关最好的标准应该是 项目 , 每一个阶段都应该有对应的项目,但是我们这里没有办法给大家去指定项目,大家可以根据自己的情况来去自己指定。
我这里简单的列出一些标准的知识点,如果说你想要验证 基础知识 是否过关,那么可以看一下,以下知识点,你是否可以掌握:
-
HTML + CSS 部分
-
Flex 布局
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)
最后
资料过多,篇幅有限,需要文中全部资料可以点击这里即可获取前端面试资料PDF完整版!
自古成功在尝试。不尝试永远都不会成功。勇敢的尝试是成功的一半。
己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-HLTyTJ5Z-1711683832654)]
[外链图片转存中…(img-TG5SIiDE-1711683832655)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
[外链图片转存中…(img-Xw0tVQT3-1711683832655)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)
最后
[外链图片转存中…(img-f28LCGHb-1711683832656)]
[外链图片转存中…(img-RJvQDX0d-1711683832656)]
资料过多,篇幅有限,需要文中全部资料可以点击这里即可获取前端面试资料PDF完整版!
自古成功在尝试。不尝试永远都不会成功。勇敢的尝试是成功的一半。