随着Angular,React,Vue等大型团队开发的JavaScript库的出现,不可逆转地离开了舞台,只有天才独自开发了整个库,或至少开发了库的主要部分。我建议一起回顾这些库的名称,最后找出它们的开发人员的名称。2005年-Prototype.js
该库于2005年作为Ruby-on-Rails项目的一部分发布。该库的第一个开发人员是Sam Stephenson(请参阅www.sergiopereira.com/articles/prototype.js.html)。 Prototype.js许可证(请参阅prototypejs.org/license.html)具有指向他的个人页面sstephenson.us的链接,该页面反过来发布了作者的电子邮件:sstephenson@gmail.com。进一步的电子邮件搜索导致其活动存储库github.com/sstephenson和twitter.com/sstephenson(非公开Twitter)。您还可以了解他在Basecamp担任程序员的情况,并观看RubyConf 2016会议的视频报告。Prototype.js库第一次形成了当时所有后续库的“绅士集合”:Ajax请求通过$(...)函数访问DOM。但是最主要的是,通过实现Enumerable接口(所有(),任何(),收集(),检测(),每个()等),向“功能主义”进行了有力的突破。实际上,随着这一特定库的普及,JavaScript编程已获得了现代风格。 Prototype.js的一些想法进入了该语言的标准,并在后来的库underscore.js和lodash.js中重复了。Prorotype.js库有两个明显的缺点。新功能的实现基于将新属性和方法混合到本地对象中。例如,正是由于这一行,我们永远停止使用for ... in循环遍历数组元素:
Object.extend(Array.prototype, Enumerable);
还有一个问题是Prototype.js库中具有全局范围的大量变量的定义:
var Prototype = {
Version: '1.5.0',
BrowserFeatures: {
XPath: !!document.evaluate
},
ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
emptyFunction: function() {},
K: function(x) { return x }
}
var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}
...
为了纠正这两个错误的计算,我们定位了jquery库,我们可能会返回该库。2010-requirejs
JavaScript的第一个版本不支持模块,因为在顶层定义的变量和函数具有全局作用域(而不是模块,文件内的局部变量),并且没有用于加载依赖模块的机制。 2009年1月,Kevin Dangoor在火星上发表了一篇名为Blue Sky的博客文章,该文章开始了有关将JavaScript移植到服务器的方法的讨论。在某个时候,出现了wiki.commonjs.org/wiki/Modules/AsynchronousDefinition(AMD)API的想法,这将允许异步加载依赖的模块,而不会超出标准(针对2009)JavaScript。此API随后未被接受用于服务器端的实现,但由于它基于标准JavaScript,因此很快在前端广泛传播。AMD规范的第一个实现以文本形式加载模块,然后由eval()函数执行。这种方法在性能,安全性方面存在重大缺陷,并且难以调试。这些问题由requirejs库解决,该库使用程序生成的SCRIPT元素加载模块。让我们尝试找出谁是这个想法的作者。在该库的第一个版本中,有一个指向James Burke存储库的链接(现在该库本身不在此存储库中):
搜索链接将通过twitter.com/jrburke,已经提到的github.com/jrburke存储库和Linkedin个人资料www.linkedin.com/in/james-burke-7994a11将我们引到Twitter 。此外,在公共领域,作者在VanJS 2013会议上有表演(是的,以前没有迷人的会议):requirejs库的开发人员提出了一种巧妙的方式来根据AMD规范加载模块,而不会超出当时的标准JavaScript,这无疑是其优点。但是也有缺点。使用AMD模块的语法非常复杂,CommonJS小组对此表示拒绝。加载大量小模块会减慢网页的加载速度。很快,链接器发出咕unt声,吞咽,webpack和其他链接,从而抵消了使用requirejs库的好处。通常,可以将这个库描述为一种工具,它分散了一些开发人员的注意力,这些开发人员直到最后一次坚持使用vanillajs js,从过渡到新的JavaScript标准。未完待续