JavaScript Workplace Hall of Fame

مع ظهور مكتبات JavaScript التي تم تطويرها من قبل فرق كبيرة ، مثل Angular ، React ، Vue ، غادر الساحة بشكل لا رجعة فيه ، عباقرة مفردة طورت كل أو على الأقل الجزء الرئيسي من المكتبة بمفردها. أقترح استدعاء أسماء هذه المكتبات معًا ، وأخيرًا معرفة أسماء مطوريها.

2005 - Prototype.js


تم إصدار المكتبة عام 2005 كجزء من مشروع روبي أون ريلز. كان سام ستيفنسون أول مطور للمكتبة (انظر 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 "مجموعة نبيل" لجميع المكتبات اللاحقة في ذلك الوقت: الوصول إلى DOM من خلال الوظيفة $ (...) ، طلبات Ajax. ولكن الشيء الرئيسي كان انطلاقة قوية نحو "الوظيفية" من خلال تنفيذ واجهة العد (كل () ، أي () ، جمع () ، كشف () ، كل () ، وما إلى ذلك). في الواقع ، مع انتشار هذه المكتبة بالذات ، اكتسبت برمجة JavaScript أسلوبًا عصريًا. دخلت بعض أفكار Prototype.js معيار اللغة ، وتم تكرارها في المكتبات اللاحقة underscore.js و lodash.js.

تحتوي مكتبة Prorotype.js على عيبين هامين. استند تنفيذ الوظيفة الجديدة إلى خلط الخصائص والأساليب الجديدة في الكائنات الأصلية. على سبيل المثال ، بسبب هذا الخط توقفنا إلى الأبد عن استخدام for ... في حلقة للتكرار عبر عناصر الصفيف:

// Prototype.js v 1.5.0
Object.extend(Array.prototype, Enumerable);

من المشكلات أيضًا تعريف عدد كبير من المتغيرات ذات النطاق العام في مكتبة Prototype.js:

/*  Prototype JavaScript framework, version 1.5.0
 *  (c) 2005-2007 Sam Stephenson
 *
 *  Prototype is freely distributable under the terms of an MIT-style license.
 *  For details, see the Prototype web site: http://prototype.conio.net/
 *
/*--------------------------------------------------------------------------*/

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 - طلب


لا تحتوي الإصدارات الأولى من JavaScript على دعم الوحدة النمطية ، حيث أن المتغيرات والوظائف المحددة في المستوى الأعلى لها نطاق عالمي (وليس محليًا داخل الوحدة النمطية ، الملف) ، ولم تكن هناك آلية لتحميل الوحدات التابعة. في كانون الثاني (يناير) 2009 ، نشر كيفن دانجور منشور مدونة يسمى Blue Sky on Mars ، والذي بدأ مناقشة حول طرق نقل JavaScript إلى الخادم. في مرحلة ما ، ظهرت فكرة wiki.commonjs.org/wiki/Modules/AsynchronousDefinition (AMD) API ، والتي ستسمح بتحميل الوحدات التابعة بشكل غير متزامن ، دون تجاوز جافا سكريبت القياسي (لعام 2009). لم يتم قبول واجهة برمجة التطبيقات هذه لاحقًا للتنفيذ من جانب الخادم ، ولكن سرعان ما انتشرت على نطاق واسع على الواجهة الأمامية ، لأنها كانت تستند إلى جافا سكريبت القياسي.

قامت التطبيقات الأولى لمواصفات AMD بتحميل الوحدات النمطية في شكل نص ، والتي تم تنفيذها بعد ذلك بواسطة الدالة Eval (). كان لهذا النهج عيوب كبيرة من حيث الأداء والأمن ، وكان من الصعب تصحيحه. تم حل هذه المشكلات عن طريق مكتبة Requjs ، التي تقوم بتحميل الوحدات النمطية باستخدام عناصر SCRIPT المبرمجة.

دعونا نحاول معرفة من هو مؤلف هذه الفكرة. في الإصدارات الأولى من المكتبة يوجد رابط إلى مستودع جيمس بورك (الآن المكتبة نفسها ليست في هذا المستودع):

/** vim: et:ts=4:sw=4:sts=4
 * @license RequireJS 0.27.1 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
 * Available via the MIT or new BSD license.
 * see: http://github.com/jrburke/requirejs for details
 */
/*jslint strict: false, plusplus: false, sub: true */
/*global window: false, navigator: false, document: false, importScripts: false,
  jQuery: false, clearInterval: false, setInterval: false, self: false,
  setTimeout: false, opera: false */

يقودنا البحث عن الروابط إلى Twitter عن طريق twitter.com/jrburke ومستودع github.com/jrburke المذكور بالفعل وملف Linkedin www.linkedin.com/in/james-burke-7994a11 . أيضًا ، في المجال العام ، هناك أداء من قبل المؤلف في مؤتمر VanJS 2013 (نعم لم تكن هناك مؤتمرات براقة في السابق):


توصل مطور مكتبة Requjs إلى طريقة مبتكرة لتحميل الوحدات وفقًا لمواصفات AMD ، دون تجاوز جافا سكريبت القياسي في ذلك الوقت ، وهو جدارة لا شك فيها. ولكن كانت هناك أيضًا عيوب. بناء الجملة لاستخدام وحدات AMD معقد إلى حد ما ، والتي رفضت مجموعة CommonJS. يؤدي تحميل عدد كبير من الوحدات الصغيرة إلى إبطاء تحميل صفحة الويب. وسرعان ما ظهرت الروابط ، ونبذت ، وحزمة الويب ، وغيرها ، والتي تبطل فوائد استخدام مكتبة Requjs. بشكل عام ، يمكن للمرء أن يميز هذه المكتبة على أنها أداة تصرف انتباه بعض المطورين ، الذين ظلوا حتى آخرهم إلى vanillajs js ، من التحول إلى معيار JavaScript الجديد.

يتبع

All Articles