观点 | 2017年前端初学者的生存指南

逝者如斯夫,不舍昼夜。

历史在向前发展,前端的“摩尔定律”是每隔18个月难度会上升一次,过去的2016年我们不再回顾,展望2017年,对于初学者想要生存下来,该怎么办?如果你有这个疑问,那么你就得好好阅读一下,我这篇文章了。

数据不准,2017年2月19日搜索,来自拉勾网(吐槽:万年不匹配)和智联招聘。

PS:(请原谅我截图了一Angularjs的JD)

看起来行业需求的重点都在各种框架的使用上,其实不然。做为初学者,一定要对前端行业有足够的信心与耐心,你才可能走下去。前端是一个承上启下的职业,上接产品,下接服务,还有一大帮的“艺术家”,在产品的前端实现上与视觉还原上,操心的事情会比较多,没有耐心,很可能发生不愉快的事情。这也是我这样的过来人,给予的小小建议。
(web前端学习交流群:328058344 禁止闲聊,非喜勿进!)

经过前几年移动和技术的发展,现在的前端可谓百花齐放了,在行业知识上,一定要选择一个可能和你的专业比较接近的,不然行业知识的学习也是非常头疼的事情。比如,现在的直播大火,如果你具备视频专业的知识,在前端上处理编码,视频流,可能就会很得心应手,反之,你就要多多努力了。像数据可视化这一块也是如此,真正的想做一款优秀的产品,行业知识和你的专业知识相结合起来,才能比较棒。

抛开行业知识不谈,我们来谈谈专业。框架对于找到工作非常重要,但是对于职业的长久发展,框架倒是次要的。当你成为了一个框架的大师时,还怕不能快速成为另外一个框架的大师么?那么,2017年,我们该如何从基础知识开始?首先,我认为,你一定要给自己一个良好的定位,PC端的工作就不要再去面试了(相信我,很多业务都在维护期,去了对于自己的职业发展没有任何好处,除非你去的是BAT这样的大厂或者比如团队协作这样的企业级市场应用)当然,如果是利用electron(https://github.com/electron/electron)来开发桌面应用,倒也可以考虑。不过,起点瞄向移动端,我认为是比较合适的。

如果有钱,一定要选择Mac平台,不说为什么,有机会去看看池老湿的文章就明白了,这玩意是生产力啊。在工具上,一定要选择一个好用的IDE比如WebStorm或者编辑器Sublime Text,Atom,不要再搞Dreamweaver了。一个好用的编辑器,当你习惯之后,对于编码会有质的飞跃。下载一个Chrome浏览器吧,虽然Devtools使用很简单,有机会也多看一看这方面的资料,很多调试的小技巧,在定位问题时,对你会有很大的帮助。如果你真的选择了Mac,请一定要配置好你的终端,对于后面将要开展的工作,也会有较大的提升。

CSS上除了常见的基础,盒模型,设置颜色,字体大小之外,布局应该可以从Flex布局开始学习。。很多布局的方式,可以多从移动的角度来考虑,比如适配等等。(淘宝之前提出的rem方案,我认为是一个很不错的实践,适配的入门可以从此开始)另外,也要考虑一下预处理器方案,随便选择一个来入门吧,相信在第一天上班时,你的Leader就会告诉你,我们的CSS是基于什么预处理器来构建的。不要问为什么,工具在进步,把前端的门槛抬高了一些,我觉得CSS方面,初学者可以从这些来入门。

至于HTML,很多input标签的属性,新的标签,是你一开始就要学习的了,不过一般很少有公司会考察这些,适当的了解一下就好,不用太专注这方面的知识(后期再慢慢补全)。

动画倒是一个很有趣的事情(说实话太炫酷的,我也做不出来),不过,你一定要了解一下CSS3那几个动画的属性,可以通过这些属性来写一些常见的动画。至于如何组合使用,以后可以慢慢学,相信我,动画是一个水很深的地方,不是动画专业的设计师,很难还原一个动画的思路,想想双十一出来的那个超炫的动画,没有专业的动画设计师来设计动画,分解思路,正儿八经的开发是很难做的出来(当然,如果你非常热爱动画的实现算法和思路分解,也一定能实现出来)。

接下来可能是我们要重点关注的一部分,这个部分又分为三个小部分。

  • 编译构建配置

  • ES5 ES6

  • 选择一个入门的框架

对于编译构建,没有什么好选择的了,深入的可以不用了解,但一定要了解Node.js是怎么玩的。目前来看(包括未来)前端的构建工具,必然都是基于Node.js的生态来玩。两个东西,一是package.json的配置,二是如何运行Node.js。对于package.json,其实也有三个地方,知道一下即可。一是dependencies和devDependencies的区别。二是scripts的配置,比如pre前置之类的。三是知道如何在package.json里配置必要的meta元数据。至于在两个平台不同的运行规则(可能会有错误),Mac平台上大部分是没有运行sudo权限,而Windows平台则要根据具体的问题去Google了。当你遇到这些问题时,一定不要被大段的栈错误信息给吓着了,找到一些必要的错误信息,利用Google搜索一下,相信,都能搜索出来。

目前大量的构建都是基于webpack,你可以不用学习如何写loader或plugin,但是一定要知道它是如何配置的,一个entry,一个output,一个loader,一个plugin。

前端开发使用的脚本语言是JavaScript,而浏览器厂商基于此语言帮我们实现了很多具体的接口,比如DOM,HTML5的新API等。这门语言,目前发展到了ES 2015,也就是大家常常说的ES6。而ES5的实现,也是你需要去学习了。语言语法上,我认为JavaScript是一门很简单的语言,入门是次要的,你可以到后期再来学习一些其他的高级特性。首先,基于浏览器的前端开发,说白了很多都是在用JavaScript脚本来调用浏览器厂商帮我们实现好的DOM API,以前大家都用document.getElementById来获取一个元素,而现在我们有了更好的选择:document.querySelector,即可以选择class元素,也可以选择id元素,DOM是你绕不过去的一道坎。其次,你要了解一下比较常见的HMLT5 API实现,比如Element.classList,localStorage,Web Sockets,requestAnimationFrame,XMLHttpRequest Level 2等等。如果你参与的面试项目跟绘图有关系,可能你还需要学习一下Canvas,WebGL等。这些在应用过程中已经有了大量的实践,相信每一个面试都会讲到这些。

对于语法的升级版ES6也是你不可能绕过的一道坎,Safari 10已经全部支持了ES6语法,Node.js就更不用说了。当然现在具体的产品,应该还是会使用Bable这样的工具来转义(看看,是不是又跟编译构建有关了)。不过,在业务上,初学者并不需要一开始全部都学习,一定要挑几个重点,比如Class类,继承,对象的解构,模块的导入与导出,尖头函数,常量与let等,其他的都可以在后期慢慢学习。语言语法上,我们不多说,这些都是你必须要面对的。

然后是一门框架的选择,2016年里社区中经常拿来比较的应该是Vue和React了,这两门框架代表了不同的生产方向,至于对比,我建议大家可以在知乎上搜一搜,相信可以能找到满意的答案。重点是,你必须挑一门出来,在“使用”的层面上,能达到一定的预期和结果。

我们来说一说React吧,对于它本身的库而言,你可能要明白的东西不多,三个概念就能完成业务逻辑:

  • 生命周期(那几个方法名都是固定的,用心记一下)

  • state 更新 与 props传递

  • 如何注册事件

大部分情况下,如果你写一个组件,很可能只需要实现这三个方面的东西。不过,你想搭建起一个完整的应用,也不难,加上react-router,redux,Promise和axios就好。react-router也是一个配置起来非常简单的路由库,其实redux也非常简单,一开始,我建议大家不要去搞什么服务端渲染,深度优化之类的,初学者贪多很容易打击自信心,这玩意熄灭之后,是非常老火的。

最后关于专业,我想说一说关于HTTP,前端实现的Ajax这样的解决方案。我们知道前端除了还原视觉之外,最重要的是根据业务数据来渲染页面,然后根据业务数据来实现特定的业务逻辑。这一方面是和HTTP打交道的交互过程,Ajax已经谈了这么多年,相信大家对于它应该不陌生了,至于跨域就更不用说了,JSONP,跨域头报文(Access-Control-Allow-Origin)。HTTP是这些解决方案非常重要的一个基础,有机会一定要好好了解一下,什么是报文,这些请求到底是如何握手交互的。

大厂的面试经:

不管是校招还是社招,都没法避免两种问题,一是:数据结构与算法,二是横向扩展,(比如Hybrid开发,Node.js开发,桌面应用开发等),具备的职业经历越多,技术栈经验越丰富,才更能有机会脱颖而出。抛出来一个具体的问题:Hybrid的离线包机制,这玩意在技术点上可能不是很复杂,但是在业务实现上牵扯到了方方面面,既要有规范的制定,又要有通盘的权衡(前端,服务端,Native),经验越丰富,越能少走歪路。

沟通也是非常重要的一个因素,如果在交流的过程中,一些问题你很难组织起语言,那么就说慢一点吧,说清楚一些,让面试官听明白,你要表达的意思,不然的话,词不达意,就非常有意思了。

路漫漫其修远兮,吾将上下而求索,大家努力吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容