昨天在一个前端群里发生了一件很有意思的事情,群成员A在群里提了一个关于行内元素排列间隙处理的问题,群成员B帮A解决了,两个人就聊了起来,发现两个人都是自学的前端,学历都是普通二本。但A的月薪是10K,B的月薪只有6K。今天就借着这件事跟大家聊一下,为什么同样是自学前端,有的人第一份工作能拿10K,有的人只能拿6K。
在聊这个话题之前,我们先把学历、天赋这些无法改变的因素排除在外,就说作为一个普通人该怎么做,才能让第一份工作拿到更高的薪资。
- 选择一座好城市
城市的发展有良性循环和恶性循环。大城市基础设施完善,工作岗位多,就会吸引更多的人才涌入,人口越多消费能力越强,就会吸引更多的资本投资,资本投资会产生更多的高薪工作机会,从而形成良性循环。而小城市则会形成人口和资本外流的恶性循环。
所以。做前端开发的,挑选一座好城市真的非常重要,大城市起薪都高,并且成长速度也快。拿我的两个朋友举例,两个人都是湖南人,都是一毕业就去了深圳,一个待了一年,觉得一线城市太累,工作压力大,于是就回了长沙,另一个在深圳呆了5年,去年才回去。现在他们两个在长沙的薪资,一个是18K,一个是25K。从事前端开发,我一直都是建议能去一线城市就去一线城市,不想去一线城市,最起码也要在省会城市。
2.找一份好的教程
网上的教程很多,有些教程讲的会比较深入,有些教程讲的比较浅,学的程度不一样,自然薪资就不一样。举个例子,普通教程ajax前后端交互会在学完js后直接讲XMLHttp的API方法和使用, 跨域和封装也都是只限于前端代码部分的讲解和库的使用,而一份好的教程则会在这基础上拓展HTTP理论、交互通信原理、服务端http服务器搭建、MIME、报文端口、监听抓包、网络业务模型、代理缓存、cookie session 鉴权认证、安全加密、Token、JWT、oauth、session管理、RESTful接口设计、协商合约、资源标识等原理规则性知识,能够让你真正清楚整个交互的来龙去脉 而不只是单纯的抄方法 跟着教程写代码而已。所以,一份好的教程,也是你能否找到一份好的工作的关键点。
因为很多初学者对于这个行业完全不了解,也无法区分教程的优劣。所以我整理了一套最系统的优质前端教程,可以加入我的学习裙,前面三位484,中间三位757,后面三位760,我免费分享给大家。群里面也有很多工作多年的大佬,平时遇见有问题可以在里面问。我希望把这个群打造成一个好的前端圈子,之后有好的工作机会可以互相内推。
3.目标薪资与议价能力
大多数初学者对于这个行业并不了解,并不知道自己的水平能够拿多少薪资。可以在招聘网站上搜集一些能拿到10K的工作岗位,招聘需求上面需要会的东西,自己都有一定了解,那就可以投。面试前多刷刷面试题,面试后复盘总结,发现有不足的地方就补上,然后进行下一场面试。很多公司都是面试造火箭,工作拧螺丝。6k的前端和10K的前端,平常干的活差不了太多。面试问题回答得都不错,问你期望薪资是多少,自信点,直接要10K或者是说11K就好(多报1k当做议价空间),不要说什么8-10K,这么说那就是8K了。
4.找个有经验的大佬带你
初学者对于这个行业不了解,不知道自己学怎么样,基础是否扎实,心里没有一个底。有时候一个问题卡好几个小时都无法解决,也会打击到学习的信心。所以,一定要找个能指导你的人。这里不是说叫你参加培训,很多机构表面上看老师都很厉害,但事实是你接触不到这些厉害的老师,这些厉害的老师都只是录制一个课程,课程的答疑都是助教。助教大多都是在这些机构学完找不到工作的,遇到问题也就是这个助教替你去百度,对你的帮助并不大。真正对你有帮助的一定是有个大佬带你, 能够根据你的情况把问题给你讲解得很透彻,帮你弄清楚为什么会出现这个问题、该怎么解决这个问题。可以看看身边有没有从事前端开发工作的朋友,有的话可以让他带带你。
如果身边没有朋友是做这方面的,那就借助“网友”的力量。可以加入我们这个WEB前端开发群,里面有很多工作很多年的前端大佬,问一个问题很快就能得到答案,并且会告诉你目前欠缺哪些知识,给你分享他们的经验,感兴趣可以加入我们的学习裙,前面三位484,中间三位757,后面三位760。
最后给大家一份系统全面的学习路线,上面的知识点只要能掌握大部分,找一份15K以上的工作就很简单,能够全部掌握,就能去参加大厂面试了。
HTML/CSS3 以及工具部分:
vscode开发工具使用、markdown文档工具使用、浏览器平台环境、标签基础、DTD与META
语义化、选择器、权重与优先级、匹配规则、浮动与清除、BFC、类名组合规则、SEO前端技巧、定位、叠加技巧、
伪类、伪元素、盒子模型、代码规范、性能优化、渲染原理、CSS Sprites 、 iconfont字体图标、布局思路、布局定式
css3动画、 css3选择器、 css3过渡、flex布局、背景渐变、css3实用动效、3D模块、css3变量、em/rem/vw
学完这些可以完成一个企业内部多页面项目实战(非仿站)有完整PSD与切图
然后就是JavaScript 部分,你需要掌握以下知识点:
JavaScript概念、基础认知、发展历史、应用范围、优缺点。
ECMAScript
语言概览、语句语法、数据类型、运算符、隐式转换、运算规则、控制流程、作用域、作用域链、作用域解析、js解释引擎、字符串属性方法、for of/for in
数组属性方法、对象、广义对象概念、对象特性、存储机制、深拷贝、对象实际应用、工厂模式、构造函数、原型、原型链、原型指向、封装
多种继承、包装对象、this、this指向、js数据处理、垃圾GC、闭包原理与应用、debug方法论、浏览器控制台工具应用、面向对象开发、函数式开发
纯函数、递归函数、回调函数、组合函数、缓存函数、柯里化函数、偏函数、函数防抖与节流、高级函数、IIFE函数、模块化
数学对象、高级数组方法(reduce、filter、map、every、some、forEach、find、findIndex、include)等
高级对象方法(entires、defineProperty、freeze、fromEntries、assign、keys、create、hasOwnProperty)等
this通过bind、call、apply指向偏移、同步与异步、闭包模块化、数据形变处理、性能处理
DOM/BOM
DOM对象与方法、节点与遍历树、DOM选择器、DOM节点增删改查、DOM样式操作、DOM位置获取与偏移、DOM对象与标签区别、DOM虚拟化、DOM事件、
Event对象、定时器与监听器、事件委托、事件代理、事件分流、事件冒泡、默认行为、事件捕获、防抖、节流、滚动、键盘行为、事件降频、行为锁机制、
拖拽模组、碰撞检测、距离判断、三角函数、方向判断、运动框架、弹性运动、重力加速度、DOM树、CSSOM树、渲染解析、加载、回流、重绘、浏览器线程与阻塞。
BOM深入、window对象、navigator、history、screen、location、spa概念、本地传参、日期对象使用、日期格式化封装、随机封装、DOM分片容器
JS业务应用扩展
JSON对象、数据解析、JSON方法、模板渲染、缓存懒加载、正则表达式RegExp、元字符、修饰符、正向预查、贪婪模式、replace方法、分组与不分组、test、match与exec
正则库封装、表单校验、图片预存懒加载、自定义封装滚动组件、多重轮播(循环、视差、旋转木马)、选项卡切换、楼梯导航、吸顶导航、拖拽导航 、
JavaScript编码风格指南、console应用技巧
ECMAScript5 --- ECMAScript9扩展
版本解读、应用环境、let、const、解构赋值、箭头函数、对象解构、reset参数解构、class、set、get、extends、super、static、private实现、symbol、promise、proxy代理拦截、async/await
对象新增API、数组新增API、字符串新增API、原型属性、对象修饰、代理拦截、链式询问、空值合并运算符、泡泡龙面向对象游戏开发
HTML5 / 移动端开发 部分
HTML5标签与API
HTML5概念、定义、新增特性、DTD对比、新增H5标签、新增语义化H5标签、H5表单
H5拖拽事件 video、audio、fullScreen、FileReader文件流、Blob对象、sessionStorage、localStorage、
网络状态、页面生命周期、网页状态监听、地理信息与定位、canvas画布、worker多线程、Notifications桌面通知
播放器开发 canvas交互特效开发
移动端适配/事件
移动端适配概念、尺寸与分辨率原理、PPI与DPI计算、DIP与DPR设备像素概念、视口viewport概念、布局视口、视觉视口、理想视口
视口适配方案(Meta viewport)缩放设置 、screen窗口大小API、媒体查询@media、rem适配、vw vh适配
移动端适配方案、flexible rem方案、 vh vw方案 、复合方案、高清适配方案、移动端字体缩放解决、1px边框问题解决、半像素线
图片高清适配、image-set、srcset、js拼接URL技巧、IPhonex刘海屏适配、安全区域、fit与env
Meta权限管理、兼容优化、IOS头部底部闪屏回退输入框问题、输入法空格问题、默认首字母大写问题、滑动卡顿问题等
终端样式美化与访问判断
Touch事件组封装、click延迟处理、FastClick使用、禁用缩放设置理想视口
常用类库/工具
jquery: 元素选择、增删改差、事件处理、位置获取、动画过渡、高级方法、特效应用
zepto:移动端的jquery、DOM操作、移动端事件、click延迟处理、touch事件组
基础UI库: layerUI 、easyUI、bootStrap、UI模块化、UI库使用技巧、文档解读、案例调试、表单系统
iScroll、touchjs等移动端事件库使用
swiper:移动端网站触摸滑动、轮播图插件、模块化应用、源码解读
art-template: 模板引擎 模板语法、渲染方法、原生模板引擎实现
CSS预处理:sass、less使用 stylus深入学习 、预处理语法、css编程、 Minxin 、预处理函数、继承、嵌套
vscode高级插件与配置 liveserver sass
模板化应用 、预处理应用
date-picker移动端原生组件开发
需求分析、业务规则、技术栈选型、文件输出规则、技术分析
MVC模型概念与设计、业务逻辑分类
view层适配方案 原型布局搭建 模板化生成
工具函数开发、面向对象式业务设计 功能类日期对象开发
交互业务封装 模块对接 优化设计 面向对象高级程序设计
Nodejs与工程化开发 部分
Node原生基础
Node基础概念、NPM命令、V8引擎概念、JavaScript模块化 CMD AMD UMD、EventLoop事件循环、同步异步、 阻塞非阻塞 、任务队列、宏任务、微任务、
原生Node模块、核心模块与require、module、触发器events与path模块、fs模块、Buffer对象、URL模块、HTTP模块 、stream流
Node原生封装HTTP与文件服务器
Node框架
express框架使用、中间件、核心对象、路由配置、模板引擎、数据脚本、Router核心、CORS配置、错误处理、校验封装、PM2管理、nodemoon管理
MORGAN日志处理、查询正则捕获、中间件开发、bodyParse等第三方中间件使用 、文件流上传下载、文件流切分
webpack工程化构建
工程化概念、工程化工具介绍、webpack基础知识、webpack配置与运行、plugin插件、loader使用、入口出口配置、模块modules、依赖处理、dev Server
target 、文件切分、build打包、热处理、package管理、性能优化、测试处理 、第三方插件使用、babel等
前后端数据交互
HTTP通信交互原理、请求响应、MIME、URI地址、报文解析、端口、报文流、测试监听抓包、TCP/IP握手机制、网络业务模型
代理、缓存、网关、隧道等概念、method与请求头分类
基础XMLHTTPRequest对象方法属性、方法、ajax异步交互 、同源策略原理
原生js封装ajax交互、 jquery的ajax封装交互、jsonp跨域处理、cors跨域处理、携带cookie与跨域处理、代理服务器跨域处理、
cookie验证与通信 、axios库的使用 代理、封装、拦截、合并、二次封装
通信加密策略、数据对称加密、数据非对称加密、RSA加密实践、MD5加密实践
登录注册与鉴权机制、Authenticity认证、Token认证、JWT认证、session状态管理、 oauth认证
RESTful接口设计
RESTful设计原则、状态码设计与规范、服务器响应规则与格式、前后端接口协议制定、传统RESTful改进
API设计规范、 资源定位、JSON模式、合约说明、资源标识符、缓存友好API、HTTP头管理、文档定义、松耦合原则、一致性、重用、稳定性原则
数据库存储
MongoDB基础概念、NoSQL与SQL、CAP定理、RDBMS、MongoDB语法、指令、监控与GUI、MongoDb驱动、Mongoose应用
数据库创建、集合增删改查、文档增删改查、数据库查询、高级查询操作、通道查询、多条件查询、反向筛选、索引处理、aggregate聚合管道、
validation验证、population联表、middleware中间件处理、查询ERROR类二次封装
博客后台项目实战
数据库设计、服务端路由搭建、接口设计与API管理、通信交互管道封装、注册登录、路由导航、前端路由管理、权限管理、用户管理、分类管理、标签管理
、文章管理、模块化功能封装、校验库封装、promise链式行为封装、
异步模块处理、SPA单页面应用初级实现、原生集中行为控制器、模板化+模块化+预处理+工程化实现前端页面
组件化封装
组件化基础概念、组件设计原则、组件封装、组件耦合与解耦、工程化+模板化+模块化实现原生组件化功能、
vue框架部分
vue基础
vue开发准备、工具与插件、mvc mvp mvvm设计理念、原生js实现MVVM核心框架、vue设计模式、生命周期、命令与属性、组件化
数据驱动与双向绑定、虚拟DOM概念原理、模板语法、条件与列表、数组监测、计算属性、事件处理、修饰与表单、监听器、过滤器、
methods watch computed filter对比、组件化开发、动态组件、组件通信、高级组件通信、插槽、vue动画 、实例对象、set、get、nextTick、vue插件
vue工程化
Babel、webpack配置vue、vue单文件组件、vue-cli、工程平台处理、postCss、animate、core、socket、lodash工具、vue-cli插件、preset、静态资源处理、
环境变量与膜还是切换、工程化部署、工程构建
vue Router
vue路由概念、嵌套路由、路由视图、动态路由、路由匹配、编程式导航、history、hash模式管理、命名视图、重定向与别名、导航守卫、路由元信息、滚动与懒加载
导航故障处理
vuex
vuex核心概念、EventBus对比、状态管理模式、Store、state、getter、mutation、action、moudule
vuex辅助函数与API功能、vuex环境选择、vuex模块化处理规则与技巧、对象风格提交方式、模块重用等
vue项目实战
vue博客项目实战 PC + 移动端、 elementUI、vantUI、websocket聊天室、虚拟人偶、vueScroll、store、qs、nprogress、editor、
文章分类、词云效果、spa单页面应用、移动PC无缝切换、完整注册登录、vue加密鉴权、http封装管理、错误处理封装、vuex核心状态管理、本地存储状态更新、令牌处理、
文章富文本编辑、点赞、收藏、访问、评论、组件封装、组件复用、组件混合、高级组件开发、复合性组件通信、vue中处理原生DOM行为、vue常见错误处理、
重置vue数据响应、个人信息修改、头像上传、通知组件封装、postcss应用、项目打包优化.