这篇文章主要概述在我5年工作经验的基础上,我成为优秀JavaScript开发人员所使用的技术和资源。

当前大多数Web开发人员面临着这样一个共同的问题:他们必须在多个不同的领域领先于他人——从数据库到后端架构,到前端用户界面,再到使用良好的CSS知识修正用户界面

 

阅读书籍

首先,也是最重要的一点是,你必须付出努力才能脱颖而出。虽然你也可以在无心中获得点点滴滴的积累,例如,不时地阅读一些博客文章,而且老实说,因为这种方法最初的时间和精力的投入要求低得多,所以更简单。这样的学习模式显然比你专门和刻意的学习过程要花费更多的时间。关于这种窘境的解决方式也很简单:阅读书籍。

书籍是人类进步的阶梯。文字是我们让知识以浓缩的形式代代相传的工具。成为Web技术专家有一个要解决的问题是,你必须学会何时远离网络本身。网络本身就存在着让人混乱和分心的内容,所以我要给出的第一个建议是,要阅读相关主题的书籍。

对于JavaScript中,可以先从以下书籍开始:《JavaScript the Good Parts》就像是JavaScript中的《圣经》。虽然这本书已经有点古老了,但依然是最好的起始点。《JavaScript: the Definitive Guide》也是我们必需的,虽然你可能会将它当作是参考书。 jQuery创始人John Resig的《Secrets of the JavaScript Ninja》也值得关注。此外,你还可以阅读电子书,非常方便,很多在线电子书还是免费的。另外,JavaScript Guide虽然不是书,但深受Mozilla开发人员的信赖和青睐。

脚本库的学习,使用和阅读

接下来最重要的一个步骤是去了解脚本库。书籍教你如何读懂语言,库教你如何应用它。关于脚本库你需要做这两件重要的事情:使用它们,阅读它们的源代码。

对于库的使用,需要了解以下几个重点的库:jQuery,Backbone,underscore以及React、 Angular和Ember之一。这并不是说你必须要使用这些库,但任何像样的JavaScript开发人员至少应该有一定的使用这些库的经验(无论好坏)。

提升JavaScript技能的第二件重要的事情是阅读这些库的源代码。我强烈建议阅读Backbone和underscore的源代码,因为它们写得非常优美。阅读和理解underscore可以提高函数式编程的技巧。另一个值得阅读源代码,也是其他开发人员推荐给我的库是mootols(我个人并不使用mootools,也没有阅读过它的源代码。)

剩下的库,如React和Ember等,理解起来可能很难,但非常值得。此外还应该浏览一下其他库的源代码,看看它们是如何构建代码库的,并尝试探索一些新的模式。其他著名的可使用和阅读其源代码的库包括D3、highcharts和moment.js。

练习与自问问题

要成为一个好的JavaScript开发人员的关键步骤是练习,许许多多的练习。理想的情况是,练习的重点不在于DOM,而在于语言,所以一定要确保有一个可以运行node.js的测试工具。做各种琐碎又大量的node.js练习。研究编码招式,经历使用JavaScript的不同方式:闭包,原型,扩展数组(map、filter)等。在做练习的同时,要开始在脑中形成JavaScript的基本思想。

我的一个朋友,Armagan,一位优秀的JavaScript程序员,也是一个使用《Pro JavaScript Design Patterns》用于讲座的老师,所以这本书值得一阅。

在学习的同时,要试着回答一些问题,例如:原型如何继承工作?闭包的定义?关键字含义如何改变?如何使用apply/bind/map/filter/call?收集一系列JavaScript开发人员需要面临的共同源要点,并试着用自己的话来解释。用书面或口头的形式向另一个人解释这些概念,有利于极大地提高你的技能。在练习的同时,尽量去思考“如果是那种情况,又该如何?”的情景。例如,“如果我使用两次bind,那个这个”this“会是什么意思?jQuery如何确保this关键字指向jQuery对象,而不是全局对象?这个库如何完成一定的功能?”等等,这些都是你应该时常问问自己的常见问题。

学习标准

接下来需要了解的是EcmaScript标准。研读最新的EcmaScript标准副本。同时,还可以试着了解JavaScript中即将推出的功能,如ES6和ES7。近期已经出现了例如promises、modules、generators、comprehensions等新功能,好好阅读标准,也可以阅读专业书籍,如Nicholas Zakas的《Understanding EcmaScript 6》或Axel Rauschmayer博士的《Exploring JS》,或许会有所帮助。从主要源学习标准以及探索新增的语言才是通往专业化道路的途径和方法。

利用网络资源

我前面提到过利用网络来了解网络是危险的,但是现在我要提议的是我们还可以利用网络来获取最好的资源。《Hacker News》就是一个很好的来源,但是持续的跟踪通常会耗费更多的时间,因为真正有用的信息比例是很低的。相反,还不如直接瞄准每周摘要如《JavaScript weekly》呢。随着时间的推移,你自然会领悟到哪些库或技术越来越有吸引力。可以在Twitter上找找有影响力的JavaScript开发人员。 其他的网络资源包括博客如Toptal Blogs、Rebecca Murphey’s blog和Nicholas Zakas’ blog等。

另一个非常重要的网络资源是视频会议和教育视频。说到会议,JSConf系列的品质就很高。至于教育视频,我强烈建议Pluralsight,因为他们有着编写高质量课程经验的开发军团。

简而言之

读书,书中自有信息之精华。

了解基本的库,如jQuery、underscore和Backbone,阅读源代码。

练习,试着用自己的话去解释常见的JavaScript概念,例如继承。就上述主题做演讲和讲座。

通读新版本的标准,使用最新增加的语言。

利用网络资源,查看摘要和博客,以及视频会议和教育视频。

结论

不断重复上述步骤,并参与到大量的项目中去有助于你快速提高你的JavaScript技能。但始终要牢记,只有付出才会有回报,才会有望成为专业人士。我自认为自己是一个很好的JavaScript程序员,但是要想成为专业人士我依然还有很长的路要走,还需要不断地学习和掌握知识和技术。另外这里推荐一下我的前端学习交流qun:四八四,七五七,七六零,里面都是学习前端的,如果你想制作酷炫的网页,想学习编程。自己整理了一份2019最全面前端学习资料,从最基础的HTML+CSS+JS【炫酷特效,游戏,插件封装,设计模式】到移动端HTML5的项目实战的学习资料都有整理,送给每一位前端小伙伴,有想学习web前端的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。

最后祝学习快乐,愿与君共勉!

如何成为一个伟大的 JavaScript 程序员的更多相关文章

  1. 一个优秀windows C++程序员的知识体系

    思考一个优秀windows C++ 程序员该有哪些知识,可最终发现什么知识都不能少, 看下图: 除了上面知识,程序员还要不断学习, 保持对新知识的热情. 转自http://www.cppblog.co ...

  2. 一个优秀windows C++程序员的知识体系[转]

    转自:一个优秀windows C++程序员的知识体系 思考一个优秀windows C++ 程序员该有哪些知识,可最终发现什么知识都不能少, 看下图: 除了上面知识,程序员还要不断学习, 保持对新知识的 ...

  3. 做一个聪明的.net程序员

    最近看了传智播客(http://net.itcast.cn/)的.net培训视频,感受颇深,忍不住要把感受写下来跟网友分享一下. 我从接触.net到现在已经至少过去了三五个年头,用.net也已经做了若 ...

  4. 转:一个优秀windows C++程序员的知识体系

    转自:http://www.cppblog.com/weiym/archive/2012/06/10/178287.html.根据自身的经历,觉得作者总结的很好. 思考一个优秀windows C++ ...

  5. 一个十年java程序员的心得

    展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的1 ...

  6. 转 一个典型的 C++ 程序员成长经历:

    1.  完整的学一遍 C++ 所有语言特性,典型书籍 "The C++ Programming Language" Part1, Part2, "C++ Primer&q ...

  7. 为什么我要称自己为Javascript程序员

    Aaron Griffin写了一篇精彩的牢骚文章,主要是关于各种框架和它们能把程序员从主要业务编程中抽离出来的功能特征.概括一下他的主要论点,当你成为了一个“Rails程序员”,你使用的是一种易于理解 ...

  8. 一个普通底层.NET程序员关于职场瓶颈期的思考,辗转自我提升/跳槽/转行之间

    徒有工龄,没技术没学历没平台没家底,工作几年,无车无房无存款还前景不明. 时常有身边的亲友问怎么学开发怎么转互联网,说起IT行业都说工资高,动辄月薪上万动辄年薪几十万. 再看看自己,我可能是假的程序员 ...

  9. 如何成为一个优秀的java程序员

    Java程序员有许多应遵循的守则或最佳实践方式.本文概述了每个开发者最应该遵循的10条守则或戒律,如果不遵循它们,将会导致灾难性后果. 1. 为代码添加注释(Add comments to your ...

随机推荐

  1. 策略模式+注解 干掉业务代码中冗余的if else...

    前言: 之前写过一个工作中常见升级模式-策略模式 的文章,里面讲了具体是怎样使用策略模式去抽象现实中的业务代码,今天来拿出实际代码来写个demo,这里做个整理来加深自己对策略模式的理解.   一.业务 ...

  2. java生成二维码/java解析二维码

    二维码的优缺点 优点:1. 高密度编码,信息容量大:2.编码范围广:3.容错能力强:4.译码可靠性高:5.可引入加密措施:6.成本低,易制作,持久耐用. 缺点:1.二维码技术成为手机病毒.钓鱼网站传播 ...

  3. 巨杉Tech | Hbase迁移至SequoiaDB 实战

    背景 在传统银行 IT 架构中,联机交易与统计分析系统往往采用不同的技术与物理设备,通过定期执行的 ETL 将联机交易数据向分析系统中迁移.而作为数据服务资源池,同一份数据可能被不同类型的微服务共享访 ...

  4. ios打包时候提示三方文件库错误,整理下解决的思路

    这一短时间一直在打包APP上线,今天突然打包的时候碰到的头文件找不到 一开始我以为是路径的问题,检查了targets---Build settings----search Paths----heade ...

  5. STL中区间最值max_element和min_element的用法

    前面的博客已经讲解了nth_element寻找区间第K大的用法,现在我们来说说这两个找区间最值的用法.两个函数都包含在algorithm库中. 一.函数原型 max_element template& ...

  6. Servlet控制台输出乱码问题

    在如下图的配置页面: 在此行添加编码格式:

  7. 字节输入流InputStream

    import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class FileIn ...

  8. JDBC的批处理学习rewriteBatchedStatements=true

    如果在不添加批处理指令的情况下,mysql默认是不使用批处理操作,如果在url尾部添加rewriteBatchedStatements=true 可以使当前连接 使用批处理操作 创建数据库表结构 cr ...

  9. openssl req(生成证书请求和自建CA)(转)

    openssl req(生成证书请求和自建CA)     伪命令req大致有3个功能:生成证书请求文件.验证证书请求文件和创建根CA.由于openssl req命令选项较多,所以先各举几个例子,再集中 ...

  10. nodeJs环境添加代理

    目的:实现前后端分离,前端减少路径请求的所需的路由文件: 第一步:安装http代理中间件 npm install http-proxy-middleware --save 第二步: express文件 ...