如何学习前端 转载

作者:小不了
链接:https://zhuanlan.zhihu.com/p/23265155
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

鉴于时不时,有同学私信问我(老姚,下同)怎么学前端的问题。这里统一回复一下,如下次再遇到问我此问题同学,就直接把本文链接地址发给你了。

首先说句题外话。关于有人管我叫大神的事情。个人感觉这跟你买东西时,人家管你叫帅哥一样,你答应与否都无妨。

正题开始,“前端怎么学”应该因人而异,别人的方法未必适合自己。就说说我的学习方法吧:我把大部分时间放在学习js上了。因为这个js的学习曲线,先平后陡。项目实践和练习啥的,我不说了,主要说下工作之外的时间利用问题。我是怎么学的呢,看书,分析源码。个人这几天统计了一下,前端书籍目前看了50多本吧,大部分都是js的。市面上的书基本,差不多都看过。

 

第一个问题是,看书有啥好处?

 

好处应该是不言而明的,书看多了,基础会逐渐夯实起来。看多了,自己的判断力,自然就上来了。看别人的文章,就能很快判断出,对方每块儿讲得对不对,哪块儿又是自己不清楚的,模棱两可的。当然也为看源码,分析源码提供了基础。

10本书读2遍的好处,应该大于一本书读20遍10本书的交集,那就是基础知识的核心,而并集那就是所有的知识。好书当然要多读,反复读。但是只读一本是不行的。因为每本书的侧重点都不一样。从不同的侧面,去理解一个知识点,是很有意义的。

所以特别佩服印度人,他跟你讲英文,你一个词语没听懂,他会蹦出n个同一意思的单词,你听懂一个,就ok了。看书也是这样的,某一块讲得不透彻,不用担心,其他书籍可以帮助你来了解。



第二个问题是,书籍推荐。

 

个人觉得不错的,没事可以翻翻的。书籍如下:

>《javascript面向对象编程指南》,风格轻松易懂,比较适合初学者,原型那块儿讲得透彻,12种继承方式呢。

>《js权威指南》、《js高级程序设计》,这两本书经典是经典,但是太厚,适合把其中任意一章都当成一本书来读。洋洋洒洒,很难一口气看完。比较适合当做参考书。

>《你不知道的javascript》狙击js核心细节,闭包、原型、this讲得都还清楚。目前《中册》也出了,还在看。

>《js设计模式与开发实践》js设计模式也是要学的,此书把js的设计模式讲得非常清晰,一点不晦涩,看起来没多少难度。

>《正则指引》,分析源码时,如果正则表达式不懂,没法进行下去的。此书相对来说讲得比较清晰。

>《基于MVC的JavaScript Web富应用开发》,看完后,基本能写出自己的mvc框架了。是本好书。

>《javascript函数式编程》,js是一门函数式语言,此书是函数式编程一个入门,函数是一等公民那是非常重要的。

>《js忍者秘籍》,jq作者写的,没有传说中的那么难读,话说就算你看完并理解所有知识点,也不会达到世界高手级别的。因为你还没有做到随心所欲。

>《javascript框架设计》,如果初看此书,会觉得此书有罗列代码之嫌。在我看来,此书讲究的是框架的全局观。以上书籍是我认为是成就高手之路上必须看的,也需要反复看。

 

css相关的书籍,说实话我看得比较少,总共有六七本吧。有两本必须推荐一下:

>《css权威指南》,css基础知识点那是讲得非常清楚的。什么层叠优先级、line-height啥的。不是随便一本书都敢叫“权威指南”的。

>《css揭秘》,此书我也是不断的看,此书才不屑于全面讲css3各属性呢。css规范文档能讲的,它只会讲你最不在意的。此书解决的47问题,解决思路和解决方案同等重要,很有启发性。以上各书你都可以不买,至少买本此书吧。



第三个问题,怎么看。

 

想必很多同学,都想看书,但是很难看下去。文字部分相对来说还能看看,一遇到代码,头皮就发麻了。此问题一开始时我也遇到的。

说一个学习理论。比如说学英语,有个开水理论。词汇量必须达到6000才行,如果没达到,英文水平不会上去的,这跟烧开水一样,没事烧烧,放着凉凉,从来没烧到100度,那么此水是永远不能喝的。一旦煮沸过,就可以随时喝了。

20本书你看不下去,说明什么呢?任何一本书,你都没看完过熟悉的,永远只是前三章。别笑,我原先也是这样的。

那么现在的问题是,怎么把一本书看完呢?很简单,敲。《基于MVC的JavaScript Web富应用开发》这本书我看时,就是这样,终于有一天,我下定决心要把此书从头到尾敲一遍。文字加代码都敲,然后就一章一章得看完了。代码敲一遍后,你会发现,没之前看起来的那么难。

如果你属于一看书就犯困那种同学。强烈建议你把《javascript面向对象编程指南》此书从头到尾敲一遍。坚持看完一本书后,信心就上来了。先保证看完一本再说,看完3本后,基本应该能做到几天就能看一本了。万事开头难,加油吧。



第四个问题,看书的层次问题。

 

书看完后,要自己总结,要与其他书籍对比看。有同学同时对比着看《权威指南》和《高设》来的。随便拿出个知识点,你都能闭着眼睛说得头头是道,说明水平够了。

下一块就是源码的学习了。看框架源码之前,想说一件事情:dom的api不懂,没问题,你可以百度。

但是正则一定要先研究研究,不然大多数人去尝试分析源码时,遇到的挫折都在于此。

怎么去阅读源码呢?敲,照着敲。

有哪些代码值得去敲呢?优秀框架或者库的源码都值得你去敲。但是拿jq来敲,来入门,那不行的。原因:太他么长了。八九千行呢!!

 

个人觉得underscore.js库是不错的第一个选择。原因都是工具方法,敲完以后自己的水平应该略有小成吧。其实有一些api的实现,你要把它当成getElementById一样,深深的印在脑海里。比如extend方法,必须张口就来。敲完underscore库后,可以考虑去看看《javascript函数式编程》这本书了。

jq的源码不好敲。那么zepto的源码比较少1800多行,敲一天应该敲完了。敲几遍后,把所有不懂的地方,都百度清楚,然后就可以写自己的类jq的库了。然后就可以作为一项技能写进自己的简历里。比如“创建过自己的jquery库”。当然敲的过程,还能帮助自己对jq的api认识。

然后是backbone.js,因为此框架是以类jq和underscore为基础的mvc框架。代码也没多少行。敲吧。spine.js与backbone类似。可以在敲其之前,先看看那本《基于MVC的JavaScript Web富应用开发》。希望你的简历可以添加这么一笔,“创建过自己的mvc框架”。

其他的,我也敲过一些。包括jq.validate.js,包括一些插件。如果你愿意的话,bootstrap你可以去敲敲啊。源码挺多的,可以按插件逐个来敲。分析明白了,轮播、分页、下拉框等等的插件那还不是分分钟随手就写一个了。最起码看看人家api接口是怎么设计的也是极好的。话说个人在阅读其css代码中,也学到了不少东西。说到插件,有两个必须提提,一个是表格插件,一个是树。都敲完,简历里可以这么写上,“创建过自己的UI框架”。

当然了,你也可以敲你喜欢的框架代码,重要的是明白其实现原理,最好理解其为啥那么设计,如果对设计模式比较熟悉的话,会经常发现原来是这么回事。

照着敲只是分析源码的入门,用途也是为了学习,最后能用在自己的项目中,那是才是正道。就算没啥用,也是打发时间的好方式,比看电视剧强多了。我闲着无聊时,就背着敲underscore源码。最后说句,如果你简历上能如期写上那几句话后,必须是大神。加油吧。



后记

写本文的最初目的,正如文章开头说的那样,方便自己回复大家的提问。本站的任何一篇分享学习经验的文章,基本都会引起共鸣,这确实是一个值得讨论的话题。这里再说说几个事情。

 

>有人问我前端工作经验事情。

没几年。三年多。

>初学者或新手(beginner)怎么办?

看书和分析源码是重要的提高方式,但不适合新手。新手需要的是能快速的入门和入行,能快速的上手工作。一种快捷的学习方式就是看视频。正如有的同学说得那样,知道有哪些东西,怎么用就可以了。

看视频是有好处的,首先它是一种被动学习方式。我最开始的入门也是看视频来的,只需要看就行了。一遍没懂,再放一遍,我基本上是1.5倍数去看的。

而读书是一种主动方式,需要自己一页一页翻。需要自己主动的去理解。而很多东西,也许只是视频老师一句话,就能突出的重点,需要我们自己去解读。还有另一件事情是,比如发现自己某个知识点不太清楚,可以单独去百度。比如this,文章很多的。这种学习方式也是快速掌握知识点的好办法。

书籍需要技术评审,那么看文章一定要看看评论。不过视频就不好说了,视频一般都不会讲得太深入,偶尔也有讲错的。当年我也曾被一些视频误导过,建议找不错的视频看看。各大网站培训机构的免费视频挺多的。

 

>看书和分析源码的时机。

但已经工作一年半载时,正是提高的好时候,此时可以去看书了。全面系统的梳理知识点,扫清自己的盲区。如果只是靠项目经验是不够的,通过项目来学习,那肯定是必须的,工作本身就是一个学习的过程。

但是工作三年不看书的话,学又能学到多少呢?更何况每个项目都很类似,一直处在舒适区,那真就是5年经验重复第一年的了。所以我不认同这句话:面试时强调自己的学习能力是工作能力不强的表现。3年经验的水平,完全有可能超过5年的。

 

>没有时间去学习?

如果你还没毕业,就已经天天在本站混了,其实你领先了一大步。都是混过大学的,天天充斥着lol和电视剧的陪伴,我只想说进入社会是要还的。最可怕的是什么呢?该还、还不还(这几个字别念错了)。时间是有的,就看你愿意付出不。下班后学习,周末学习,节假日别人玩的时候,在家敲代码,这样才能领先别人。

 

>兴趣问题?

兴趣和擅长是一个良性迭代循环。你擅长某件事情,就会越喜欢它,越喜欢,就越愿意花时间,进而越擅长。此道理都懂,只是缺乏一个trigger。

如果你喜欢玩游戏的话,其实你可能非常适合做前端。玩游戏就是一个反馈机制,前端工作的反馈,相对其他工作来说也是非常及时的。代码一改,网页一刷,就看到效果了。擅长、优越感、成就感通常都是连在一起的。每看完一本书,我都觉得很有成就感。每敲完一个库,也有成就感。

 

以上纯属一家之言,每个人的学习习惯、方式、态度都不一样。先端正态度、找到自己的学习方法,进而养成坚持下去的习惯。最后说一句,你我共勉:只要你走在正确的道路上,不管、走得多慢,都是前进!

本文完。

 

不好意思,不小心打开了前置摄像头!

文章来源:统一回复《怎么学JavaScript?》作者:前端网老姚(转载已获得作者许可)

在学习过程如果有任何疑问,请来极乐网提问!

 

转载于:https://www.cnblogs.com/eat-too-much/p/6019760.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tcp前4字节消息长度_网络基础篇之TCP

​网络分层什么是 TCP TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。- 面向连接:通过三次握手建立一对一的连接( UDP 协议 可以一个主机同时向多个主机发送消息,即一对多);- 可靠的:通过序号、校…

使用Servlet实现用户注册

1、用户注册页面代码 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&q…

年轻人的第一篇V语言笔记

V语言极限学习 我听说V语言看文档半小时就能完全掌握&#xff1f;&#xff1f;&#xff1f;&#xff1f;以我的智商一小时掌握不了我就给各位科普一下广告法&#xff1f;&#xff1f;&#xff1f; 宇宙惯例hello world // first v code fn main(){printIn("hello world…

android studio运行手机时出错怎么解决_小程序 android ios h5解决方案

你现在开发android,ios,小程序用什么工具&#xff0c;怎么开发的&#xff1f;还在单个端的开发吗&#xff1f;今天我们主要讨论的是一次开发多端使用的技术&#xff0c;也是这两年比较流行的开发方向。现在的终端太多了&#xff0c;app两个端android和ios,小程序有微信&#xf…

Android SDK上手指南:应用程序数据

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/52996965 在本系列教程当中&#xff0c;我们将学习如何从零开始进行Android SDK开发。我们已经熟悉了Android应用程序的结构与基本组成元素&#xff0c;…

设计微服务架构需要解决的问题

问题&#xff1a; 划分服务的原则是什么服务之间选择何种轻量级的通信协议如何做到服务的独立部署如何确定使用何种编程语言?控制多语言带来的复杂度如何做到服务的去中心化如何解决大量微服务引入的运维成本转载于:https://www.cnblogs.com/fight-tao/p/5641286.html

Django Model设计详解

Django Model 设计 Django Model设计是Django五项基础核心设计之一&#xff08;Model设计&#xff0c;URL配置&#xff0c;View编写&#xff0c;Template设计&#xff0c;From使用&#xff09;&#xff0c;也是MVC模式中重要的环节。 如果图片无法访问&#xff0c;大家可以移…

python设置全局变量失败_Python全局变量与global关键字常见错误解决方案

在Python的变量使用中&#xff0c;经常会遇到这样的错误:local variable a referenced before assignment它的意思是&#xff1a;局部变量“a”在赋值前就被引用了。比如运行下面的代码就会出现这样的问题&#xff1a;a 3def Fuc():print (a)a a 1Fuc()​ 但是如果把 a a …

Atititi tesseract使用总结

Atititi tesseract使用总结 消除bug&#xff0c;优化&#xff0c;重新发布。当前版本为3.02 项目下载地址为&#xff1a;http://code.google.com/p/tesseract-ocr。 Windows cmd命令行使用Tesseract-OCR引擎识别验证码: 1、下载安装Tesseract-OCR引擎(3.0版本才支持中文识别) t…

Javascipt数组去重的几种方式

方法一 function unique(arr) {var retArr [];for (var i 0; i < arr.length; i) {(retArr.indexOf(arr[i]) -1) && retArr.push(arr[i]);}return retArr; } 方法二 function unique(arr) {return arr.filter(function(item, index, array) {return array.indexO…

01_JS语法

JS语法 严格区分大小写以;结尾&#xff0c;不写浏览器会自动加&#xff0c;但不准确&#xff0c;且会占用浏览器资源自动忽略多个空格和换行 写在哪 所有JS代码都必须依托网页运行 内嵌 写在html的script标签中 <script>// JS代码 </script>事件 写在某个ht…

pythonwhile循环love_python基础之while循环及编码

while 条件&#xff1a;循环体死循环&#xff1a;没有终止条件(修改方法&#xff1a;1.改变条件2.使用break)break 终止当前循环contiune&#xff1a;跳出本次循环&#xff0c;继续下次循环break和contione必须在循环体里while 条件&#xff1a;循环体else&#xff1a;结果当wh…

css页面布局

居中布局 水平居中 父元素和子元素的宽度都未知 inline-block text-ailgn .child{display:inline-block;} .parent{text-align:center;} 优点&#xff1a;兼容性好 缺点&#xff1a;子元素文本继承了text-align属性&#xff0c;子元素要额外加text-align:left; table ma…

02_JS变量

JS变量 字面量 常量&#xff0c;不可变量 变量 变量用 var 变量名声明 命名 变量命名以数字字母下划线和$组成&#xff0c;不能以数字开头&#xff0c;还可以是utf-8的任意字符&#xff0c;包括中文&#xff0c;一般采用驼峰命名法 常用的几个函数 alert():浏览器弹窗d…

Rotate String

Given a string and an offset, rotate string by offset. (rotate from left to right) Example Given "abcdefg". offset0 > "abcdefg" offset1 > "gabcdef" offset2 > "fgabcde" offset3 > "efgabcd"分析&am…

音视频播放、录音、拍照

音频 在iOS中音频播放从形式上可以分为音效播放和音乐播放。前者主要指的是一些短音频播放&#xff0c;通常作为点缀音频&#xff0c;对于这类音频不需要进行进度、循环等控制。后者指的是一些较长的音频&#xff0c;通常是主音频&#xff0c;对于这些音频的播放通常需要进行精…

python 递归函数与循环的区别_提升Python效率之使用循环机制代替递归函数

斐波那契数列当年&#xff0c;典型的递归题目&#xff0c;斐波那契数列还记得吗&#xff1f;def fib(n):if n1 or n2:return 1else:return fib(n-1)fib(n-2)当然, 为了程序健壮性&#xff0c;加上try...except...def fib(n):if isinstance(n, int):print(兄弟,输入正整数哈)ret…

03_JS数据类型

JS数据类型 基本数据类型 String 字符串类型&#xff0c;申明时用单引号或双引号引起来&#xff0c;两种引号不可嵌套&#xff0c;不可混用 Number 数值型&#xff0c;有两个特殊的数字 Infint:无穷大NaN&#xff1a;非数值型数字&#xff0c;不与任何类型相等 Boolean …

7.5

姓名 崔巍 时间 2016年7月5日 学习内容 最后一次确定同步控制力度等实现细节。 学习了Visual Studio C#软件测试方面的工具。巩固了等价类黑盒测试方法的相关理论&#xff0c;并且学习了集成测试、回归测试的相关内容&#xff0c;并进行了测试。 集成测试&#xff0c;…

python scratch ev3_如何在scratch上连接乐高ev3?

乐高教育的官网有关于EV3使用Python的详细介绍https://education.lego.com/zh-cn/support/mindstorms-ev3/python-for-ev3​education.lego.com来自网易有道Scratch是现在小朋友们最热的编程工具&#xff0c;也是各学校和培训机构对小学生编程的入门首选。网易有道Kada平台是一…