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

逝者如斯夫,不舍昼夜。

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

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

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

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

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

抛开行业知识不谈,我们来谈谈专业。框架对于找到工作非常重要,但是对于职业的长久发展,框架倒是次要的。当你成为了一个框架的大师时,还怕不能快速成为另外一个框架的大师么?那么,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那几个动画的属性,可以通过这些属性来写一些常见的动画。至于如何组合使用,以后可以慢慢学,相信我,动画是一个水很深的地方,不是动画专业的设计师,很难还原一个动画的思路,想想双十一出来的那个超炫的动画,没有专业的动画设计师来设计动画,分解思路,正儿八经的开发是很难做的出来(当然,如果你非常热爱动画的实现算法和思路分解,也一定能实现出来)。如果你想学习前端可以来这个群,首先是291,中间是851,最后是189,里面可以学习和交流,也有资料可以下载。

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

  • 编译构建配置
  • 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),经验越丰富,越能少走歪路。

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

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

时间: 2024-08-02 18:13:26

观点 | 2017年前端初学者的生存指南的相关文章

数据科学家公司生存指南TOP30秘诀

文章讲的是 数据科学家公司生存指南TOP30秘诀,数据科学家老司机的30个经验之谈,教你如何在公司内获得认同,带你绕过他们曾经踩过的坑.作为一名数据科学家,即便你技术再牛逼,不懂职场社交也会成为你晋升之路上的天花板. 为此,我们创建了一份能够确保数据科学团队获得成功的秘诀top 30榜单.不管你的数据科学团队是新组建的,还是经验丰富的,这份榜单都很适用.作为数据科学家,我们希望把更多的时间用在分析问题上,而花更少的时间处理公司政治的问题. 在管理层与数据科学团队之间常有不和的情况下,我们该如何处

【好书试读】前端函数式攻城指南

开始试读:https://yqfile.alicdn.com/5b9a3f747101a427f4c501288f8cd20e.pdf 天猫购买链接:前端函数式攻城指南 函数式编程可以说是非常古老的编程方式,但是近年来函数式编程越来越受到人们的关注.不管是 Google 力推的 Go.学术派的 Scala 与 Haskell,还是 Lisp 的新 方言 Clojure,这些新的函数式编程语言都越来越受到人们的关注. 当然不仅是后端函数式编程语言层出不穷,前端也不甘示弱.虽然前端浏览器只支持一门语

Ubuntu桌面生存指南 (1) --- 选择 Linux

缘起 我大概是从2010年4月份开始把自己的桌面开发环境从 Windows XP 迁移到 Ubuntu 10.04 的,说起来也已经有两年半的 Ubuntu 使用经验.那次迁移的原因大致是因为某个阶段特别迷恋如何高效的操作电脑,当时把 Windows 整的很伏贴,但是说到高效的使用电脑,不可能对 Linux 系统视而不见.其次就是瞥到一个同事在捣鼓 Ubuntu, 加上毕竟 Windows 环境生存了十几年时间,再多的新鲜感也用尽了,当时很想试试在 Linux 下是不是可以完成在 Windows

首席安全官的2015年移动安全生存指南

本文讲的是 : 首席安全官的2015年移动安全生存指南 ,  [IT168 评论]安全风险和数据泄露事故在不断增长,而计算设备的形式在减少-因为现在大部分企业数据创建和使用在移动设备.这清楚地解释了为什么移动安全一直是大多数企业最关注的安全问题. 目前,企业部署的移动安全措施主要是移动设备管理(MDM)工具,这种工具提供的功能包括设备资产管理.安全浏览.应用程序白名单.数据丢失防护.移动VPN.应用程序水平的VPN等.虽然大多数首席信息安全官.首席信息官和安全分析师都认为,虽然MDM并不是最好的

《软技能:代码之外的生存指南》导读

前言 软技能:代码之外的生存指南也许我可以给你演绎一个玄幻故事,说说我是如何开始写这本书的.我可以跟你说,当我在沙漠中打坐的时候,一只老鹰飞了下来,落在了我的肩上,小声在我耳旁说:"你必须为软件开发人员写一本关于软技能的书."我还可以告诉你,这本书是在梦中来到我身旁的--夜半时分,我被这本书的构想惊醒了,于是开始奋笔疾书,写下每一章,试图捕捉我在梦中看到的一切. 但是,真相其实就是--我写这本书,是因为我觉得我必须写这本书. 作为一个软件开发人员,在我的生活中,我经历过许多不同的旅程.

《软技能:代码之外的生存指南》一一第21章 创建大获成功的博客

第21章 创建大获成功的博客 软技能:代码之外的生存指南作为一名软件开发人员,可以用来推销自己的最佳媒介之一就是博客.我坚信每一个在乎自己职业生涯的软件开发人员都应该投资创建一个博客. 使用面对面的直接交往方式,你只能遇到有限的人,所以你需要另一种方式来推销自己,拓展自己的社交圈子.想想自己在过去的一年里认识了多少技术行业的专才.这一数字可能接近几百甚至上千,然而一个成功的博客能让数十万人认识你. 博客是推销自己的一种既廉价又简单的方式,对于让自己声名鹊起极具价值.成功的博客每天能够吸引数百甚至

《软技能:代码之外的生存指南》一一第35章 发现自己的知识短板

第35章 发现自己的知识短板 软技能:代码之外的生存指南专注于自身强项,这没什么不妥,但有时候,如果弱点得不到解决,通常会成为你的职业或生活的桎梏.我们每个人都有弱点.我们的知识也有使我们不能高效工作的短板.我们能发现并消除的知识短板越多,长久来看我们从中受益越多. 本章的内容都是关于发现妨碍你发挥自身全部潜能的知识短板的.我们将研究这些短板为何会存在,如何找到它们,以及最终如何填补它们,从而让你不受自己所不知的限制.

《软技能:代码之外的生存指南》一一第11章 赢得自由——如何辞职

第11章 赢得自由--如何辞职 软技能:代码之外的生存指南在很长的一段时间里我都梦想着有一天能够辞掉我的工作,为自己工作.我感到自己被困在公司里工作,我知道,如果我能自己离开会做得更好.问题是:"怎么离开?" 那时,我并不认识任何一位成功逃出牢笼的人,所以我不知道自己需要做什么.我只知道,为别人工作我完全不快乐. 现在,你可能还不想为自己工作,你可能想继续享受作为一个员工的好处--这没有什么错.但是,如果你像我一样,一直梦想着为自己工作,成为自己的老板,那么请继续读下去.

.NET初学者架构设计指南(四)Model-View-Controller

Model-View-Controller简称为MVC,这是图形界面(GUI)应用程序的一种架构形式.Model是业务领 域层,比如我们在前面两篇里面提到的Account.Entry.Bill.Invoice之类的对象,这些类构成了一个 电信账务系统的业务领域层:View就是用户界面:Controller是指用户界面和业务对象之间的控制器, 控制器的作用是从业务对象中获取数据显示到用户界面上,并且从界面上收集用户的输入和动作,然后 调用业务对象完成业务功能. 大部分软件系统的工作可以总结成下面这