这是与来自德克萨斯州奥斯汀市的开放网络传播者Kyle Simpson的会议的部分笔录,他对JavaScript充满热情。 他是作家,讲习班培训师,技术发言人和OSS贡献者/负责人。
谢谢大家有我。 我是Kyle Simpson,在Twitter , GitHub以及其他所有重要的地方都被称为“在线获取”。 上个周末,我在罗切斯特(Rochester)的一个思想库(Thought @ Work)会议上讲习班,我想我会坚持在New Media Interactive Development程序中检查一些JavaScript(JS)和Node类,所以谢谢您我。
我一直在写一本关于JavaScript的丛书,名为You You't Know JS 。 整个系列都在GitHub上在线公开编写,以供免费阅读。 他们还正在通过O'Reilly进行专业编辑和发布 。 该系列计划有五种书名:其中两本已经出版,第三本已经完成,正在最后编辑中,第四本几乎已经完成,第五本即将开始。
- 范围和闭包 :主要涵盖闭包,这是最重要的基础主题之一。 所有JS程序都使用闭包,但是大多数开发人员都不知道他们在使用闭包,如何称呼它,或者只是如何使用它。
- this&Object Prototypes :涵盖了
this
关键字如何工作的奥秘,然后解决了JS具有类的误解,这是不正确的! 取而代之的是,JavaScript具有原型委托,我们应该接受这种委托,而不是尝试伪造类定向。 - 类型和语法 :深入强制,大多数人认为在JS中这种机制是有害的。 我鼓励您深入学习它,因为强制不仅不像您所知道的那样糟糕或怪异,而且如果您学习如何正确使用它,它实际上可以帮助改善您的代码!
- 异步和性能 (进行中):解释为什么异步编程的回调不足,然后深入探讨了Promise和Generator作为更好的异步模式。 还介绍了优化和基准测试JS性能。
- ES6&Beyond (计划中):涵盖ES6中对JS的所有更改,以及展望即将到来的ES6以外的发展。
要理解本系列的精神,请将其与Douglas Crockford的JavaScript:The Good Parts进行比较。 他的书对我们社区既有好处,也有坏处。 它几乎是一手负责将许多开发人员带入(或返回!)该语言并给予认真的关注。 我们为此欠了很多钱。 但是它也告诉开发人员,您只需要学习一小部分语言。 而且由于您只需要学习一点点,这就是大多数开发人员所学的所有内容。 即使具有5或10年JS经验的开发人员也很少了解该语言。
我的书则相反。 他们是反“好零件”。 这并不意味着它们是坏部件,而是意味着它们是所有部件。 我鼓励您朝着“困难的部分”学习,而不是像一个人说的那样避免使用大多数语言,而不是逃避困难的部分。 当您在JS中看到不理解或令人困惑的内容时,不要指责该语言的设计不当,而应将注意力转移到您自己的缺乏理解上,并努力增加理解。
这在JS开发人员中有些独特,他们期望一种语言应该如此简单和直观,以至于只看一眼就足以理解它,如果他们不理解,那是该语言的失败。 期望完全自解释的语法和规则对任何其他语言(如Java或C ++)都不合理。 如果您对代码感到困惑,就不会怪这些语言的设计者。 您会责怪您自己的理解,或者至少是编写代码的人的理解。 无论哪种方式,更好地学习语言都是解决这种缺乏理解的最佳解决方案。 很多时候,当开发人员讨厌JS时,事实证明这是因为他们对JS的理解不够。 当我解释它的工作原理时,很多时候他们从讨厌它到欣赏它-顺便说一句,欣赏并不意味着喜欢,而是意味着尊重。
我相信JavaScript需要花费一些时间来正确,完整地学习,并且如果您打算编写它,那么您应该投入大量精力。 您应该了解为什么您编写的代码按其工作方式起作用。 您不必总是说“它起作用,但我不在乎它如何”,而您始终可以问到的最重要的问题是:“它如何起作用,为什么?” 我是一个开放的网络传播者,他以JavaScript为生。 我一直与那些不完全和不正确地学习JS的开发人员一起工作,他们不得不与谷歌作斗争以重新学习它。 这就是为什么我很高兴看到你在大学学习JS的原因。 通过适当这里在学校学习JS,你可以毕业,并提出对进入产业作为新一代的已经理解和欣赏为整个网络平台的标准JS的重要性开发商。
JS将成为我们其余职业的网络平台基础。 我们不妨更好地了解它!
我将为您提供这一点:我坚信,在大学里您可以学到的最重要的东西-当然,您正在学习很多很棒的东西-但是最重要的是如何学习,如何去爱和喜欢学习。 您将永远找不到自己喜欢的“一件事”,并且在您的整个职业生涯中都不会这样做。 行业每两年重塑一次。 如果没有别的,那就只是苹果公司那样做。 您必须精通学习和掌握新事物。 无论您感兴趣什么,这都是您事业上成功的道路。
问答环节
问:五本书,应该按特定顺序阅读吗?
答: 范围和关闭需求最多,按时间顺序发布当然可以。 前三个是关于JavaScript的核心。 第四和第五将在前三个基础上构建,但是主要处理从ES6开始出现的新事物。
问:免费和开源软件在您的工作中有多重要?
答:关于我的职业的一切都是开源的。 我坚信开源的力量及其在我们行业未来成功中的地位。 如果您研究技术的历史,则它们是封闭的/专有的,并通过采用和演进而受到关注,最终最终成为开放的。 最终,开放永远是胜利。 但是越来越多,我相信打开应该是默认模式。 许多人说:“我不想把自己的东西扔出去,他们会取笑我糟糕的代码……”而当我编写代码时,人们说:“你只是更有信心,因为好。” 但是,如果您看一下我的旧代码,那里会有一些可怕的东西。 当我在“您不懂JS”中说“您”时,这是一个统称。 我也不知道
每次我开始为项目编写代码时,都会从GitHub上的一个空文件开始。 我尽力而为,并且不断发展。 但是我不只是使用GitHub作为营销我自己的代码和想法的平台,我还认为我编写的每一行代码都是最糟糕的 ,而要变得更好的唯一方法是在他人的帮助下。 开源集体使最好的软件比任何人都能做的更好。
这是一种您应该为个人和专业而奋斗的文化。 我坚信,“开放”是所有这一切都存在的原因,并且为什么我们现在正在做的事情将在10年后仍然存在。
问:我在那个阵营里,我不敢公开编码。 我从哪说起呢?
答:我的观点(并且有不同的答案)是寻找他人的项目。 FOSS的许多贡献与代码无关。 文档通常留在项目的最后,并被忽略,但是至关重要的是它们必须是最新的。 如果你可以看到别人的代码,并添加细节,例子,或测试,这是你可以做一个超级重要的贡献。 FOSS中的许多“摇滚明星”都是通过参与文档/测试而到达那里的。 一些项目需要付出更多的努力,并找出“低垂的果实”或已知具有简单解决方案的错误。 它是一个很好的起点,您可以了解该项目的工作方式。 甚至提供错误报告也是您无需编写第一行代码即可做出贡献的一种方式。 但是,即使只有一行代码也很重要。 您可以从中学习。
问:在哪里?
答: GitHub是事实上的标准。 当然,任何社区都很好,我不会说“选择这个项目”。 你应该挑选有趣的是, 你的项目。 如果您想进行数据可视化,请进入D3 。 找到您热衷的东西。 如果这样做,您将快速建立信心,这将创建一个使人员和代码都变得更好的良性循环。
问:您说过您认为JS将成为我们职业的“唯一网络语言”吗? 我不一定是Dart或其他类似语言的支持者,但是您不希望这些成功吗?
答:这是一个很好的问题,并已加载,但是... Dart不能成功取代JavaScript,这不是因为它的设计不好或设计不当,而是因为Google的发展趋势。 他们超越了他们在网站上所说的,将其定位为与JS竞争,希望取代它,而不是成为一种尝试通过有意地告知和影响JS未来的语言。 从最初的“泄漏备忘录”那里,全世界都从“无法修复的[JavaScript中的基本缺陷]方面了解Dart”,到他们正在Chrome中与JS一起建立的Dartium VM,再到Dart2JS编译器-消息传递尚不清楚,并且闻起来不仅是“更好地编译JS lang”,而且还有更多尝试是希望如果开发人员可以直接在Web上编写Dart,则JS会失败。 我可以肯定地说: Mozilla绝不会在Firefox中实现Dart。 除非有一个我不敢想象的Firefox不存在的未来,否则Dart不会取代JS。
从更大的意义上讲,您可以将数百种语言编译成JS。 您想在网络上运行代码,因此可以将其“转换”为JS。 我个人不喜欢其中的大多数语言,但是它们都非常重要! 源代码,不适用于计算机! 有无数种方法可以编写代码以产生1和0。 源代码适用于开发人员,您需要找到最适合您的语言。 此外,我们还需要更多的实验,以及更多的Compil-to-JS语言,例如CoffeeScript ,它影响了ES6中添加到JS的许多功能。 我认为,将来可能会因CoffeeScript本身而受到限制,但这没关系,因为向前发展JS非常重要。 就Typescript而言 ,我不喜欢类,但Eich表示,在JS的未来可能会出现类似类型注释的事情。
首先学习JS,但是在您的职业生涯中,您会发现其他适合某些问题或团队的语言。 许多人这样做是因为他们不想学习JS,但这是错误的方法。 一旦您真正了解了JS,然后找到其他您喜欢的将JS用作其编译目标的语言就可以了。 这对于Web平台的未来非常重要。
翻译自: https://opensource.com/life/14/11/talk-kyle-simpson-javascript-expert