2017前端现状

众所周知,前端近几年闹了一场革命。前端在编程领域也掀起了学习潮。至少在中国,从2013年下半年至今,在搜索指数上,有着爆炸式的增长。可以看下数据:百度指数Google指数
2017百度前端指数

一边是日新月异的新知识不断的冲击着前端,一边是各种新人疯狂涌入前端领域。这两股新流冲击下,倒是火了很多技术社区、问答网站,如:SegmentFault

打开SegmentFault,首页问答流上,前端相关的题目(包括Node),不说占十之八九,那也是半壁江山。即使是在老牌问答网站StackOverflow上,javascript相关的问答也是最多的。

我是很喜欢回答各种问题的人,一直逛着SegmentFault。几个月下来,我看到的出现最频繁的前端问题如下:

  1. Vue、React哪里哪里报错了,求看(React相关的少很多,angular更少)。
  2. 框架相关的一些UI、插件,如ElementUI什么什么组件怎么用、vue-router哪里哪里有问题。
  3. javascript this指向的问题、闭包的问题、数组循环相关问题等。
  4. webpack、npm等工程化相关配置问题。

那这些问题的本身有什么问题呢?

90%的问题,都可以通过文档查询到。而且大多不是文档偏僻、篇幅少的角落,更多的是诸如vue的父子组件通信这类文档长篇幅说明的问题。

而如this指向、闭包这类问题,以及其他语法上的问题,都是基础知识,而且大多都被网上各种博客讲烂了。想要理解它,闭着眼睛都能搜到。

还有很多问题都是重复式的问题,只要自己网上搜搜,就能找到答案。

这些问题反应了什么现象?

  1. 确实前端很火,引来了一批批新人。
  2. 前端小白们如火如荼的学习着现在前端流行的新技术栈。
  3. 但大多忽视了基础知识的学习。
  4. 而且不知道提问题的正确姿势。
  5. 甚至有些过分的伸手党。

为什么会这样?

我猜测是如下原因:

  1. 很多人学前端并非是对前端感兴趣,而是觉得前端门槛低,市场火爆,于是学了前端。没了兴趣就少了耐心,少了耐心就不太想看文档、书籍。
  2. 还有些新人并非科班出生,导致完全不明白编程学习的流程,以为就是靠问。
  3. 培训班也有锅。标榜着几周就能精通前端、搞定大公司。在教学上轻基础、重工具,导致前端学习者急功近利,以为熟练操作vue了就是精通前端了。
  4. 前端新人本身对新知识非常渴望,因为培训班或者自学一段时间后,发现没掌握的知识太多太多,在市场并没有竞争力。所以也会显得比较着急。

如果同学你正好符合我上述所说的,要注意了,你已经误入歧途了。前端门槛是低,但学习曲线不短。想找到一份好工作,也不是会用vue就够的。

我曾经听一个学弟说,自己的目标就是把Vue掌握了写溜了,我表示非常不赞同。

可能很多新人也是这个想法,但是我知道,大多数人所说的掌握,写溜,并非是真正的掌握。其实就是把文档背熟了,熟悉了语法糖,了解了生命周期过程。学习vue是非常好的,但真正的学习它不是就学习它怎么用,而是要深入学习它的设计理念、实现方式、阅读理解源码。

可惜的是,你可能根本看不懂它的源码。为什么?因为基础就没掌握。所以你的目标走偏了,目标应该是要先掌握好Javascript本身。在此之上,你才有可能说自己掌握了Vue。

那什么是正确的学习姿势?

首先打基础,html,css,js->es6,这些已经够吃一壶。怎么学?读书、看它们的参考文档,掌握基础用法。

在此同时,可以用vue这些框架去做一些工程化的项目实践,遇到不懂的地方,不必过分深究,会浪费很多时间。等你基础掌握到一定阶段,蓦然回首时,会顿时大悟。

基础掌握后,工具也能熟练运用了,甚至能快速的掌握它。之后再怎么深入学习,这里就不探讨了。

另外,当我们学习一个工具的时候,我们最基础的应该要知道人家到底是个什么?比如学习Vue,首先会介绍它是MVVM框架,你要是连MVVM都不知道,又怎么去学Vue呢?

我偶尔会看到一些问题:问在vue中如何去获取dom页面上的数据。原来是用着vue,然后以Jquery操作dom的方式去开发。这就是因为自己都不知道自己用的是什么。

我知道,前端知识实在是太多了,比如说node。又够大家吃一壶,难免会遇到问题,解决不了。但又确实需要解决它才能进行项目实践。不可避免的得提问题。

那什么是正确的提问题姿势?

  1. 遇到出错,首先应该想到的是查阅文档。很多时候我们遇到的问题,是因为自己用的姿势不对,到底怎么用,文档上可能已经写的一清二楚。比如我要在vue2.x的子组件中去修改父组件的传值,我一修改就报错,该怎么办?怎么办?查下文档就一清二楚。
  2. 文档查不到该怎么办?确实有时候,一些问题是文档中没暴露的,或者说没描述清楚的。这时候我们应该先在网上搜索该问题。哪儿搜?Google,项目本身的Issue,百度虽然大家都不喜欢,但真的去搜百度也无可厚非。
  3. 别人也没遇到怎么办?如果是工具本身的问题,首先想到的应该是看源码,源码实在看不懂或者理解不了,再去提问。
  4. 其他一些业务上的实现问题,自己确实没能力实现,可以去提问。
  5. 但提问题不仅仅是为了解决当下问题,更重要的是提高自己解决问题的能力。

第五点,我再单独说一下。有时候我会看到一些问题的最佳答案,并非是真正的最佳答案。很多题主,就想着能直接帮他解决当下问题就好。而有的答案虽然没有直接给出代码,却给了非常好的思路或解释,亦或者给了其他更好的设计方案,亦或者是给了某些相关的文档链接。

本来是授人以鱼不如授人以渔,但有些人却只要现成的鱼。