نظرة على مستقبل JavaScript
نشرت: 2022-03-11كل سوق محكوم بمفاهيم مشتركة معينة ، وتطوير JavaScript ليس استثناءً.
دورة حياة المنتج عبارة عن مفهوم يمكنك تطبيقه على عدة بيئات مختلفة لفهم سلوكهم والتنبؤ به. إنه مفهوم عمل يساعدنا على فهم المراحل التي يمر بها المنتج خلال حياته ، موضحًا تأثير هذه المراحل على مقياس شعبيته - في معظم الحالات ، المبيعات. إذا لاحظنا أنماط سلوك السوق ، فيمكننا تقدير المرحلة الحالية للمنتج وبالتالي عمل بعض التنبؤات حول شعبيته.
هناك أربع مراحل: المقدمة ، والنمو ، والنضج ، والانحدار ، وفي الرسم البياني أعلاه ، يمكنك رؤية التأثير على مبيعات المنتج المتوقعة لكل مرحلة. على سبيل المثال ، لم تنمو مبيعات الهواتف الذكية كما كانت قبل خمس سنوات - في الواقع ، العكس هو الصحيح تمامًا - لذلك يمكننا القول بإنصاف أن الهواتف الذكية تدخل مرحلة النضج.
في السنوات القليلة الماضية ، شهدنا إدخال الكثير من التقنيات الجديدة في JavaScript ، لكننا احتجنا إلى الوقت لنرى كيف كان السوق سيتبنى هذه التقنيات. لا أحد يريد أن يكون متخصصًا في تقنية واعدة أخرى تنتهي بتبني الصفر. الآن ، حان الوقت لإلقاء نظرة أخرى. في هذه المقالة ، سألقي نظرة على مدى انتشار JavaScript والعوامل التي ربما أثرت على هذه الشعبية ، وسأحاول التنبؤ بما سيبدو عليه مستقبل JavaScript.
مستقبل ميزات لغة JavaScript
منذ أن أنشأت الرابطة الأوروبية لمصنعي الكمبيوتر (ECMA) دورة الإصدار على أساس السنة لـ ECMAScript ، وهي مواصفات قياسية لجافا سكريبت ، لم نشهد الكثير من الميزات الجديدة التي تأتي إلى اللغة — فقط عدد قليل كل عام. قد يكون هذا أحد الأسباب التي رأيناها زيادة في تبني اللغات التي يتم تجميعها إلى ES5 مثل TypeScript أو ReasonML ، وكلاهما يجلب ميزات إلى اللغة التي يطلبها المجتمع بشدة. هذا ليس جديدًا - خضع JavaScript لهذه العملية من قبل (CoffeeScript) ، وفي النهاية ، انتهى الأمر بدمج هذه الميزات في معيار اللغة نفسه ، وربما يكون هذا هو المستقبل الذي يمكن أن نتوقعه لهذه الميزات المكتوبة الجديدة أيضًا.
ولكننا بدأنا الآن في رؤية تغيير قواعد اللعبة في سوق التحويل البرمجي إلى js مع زيادة توفر WebAssembly في المتصفحات. الآن ، يمكننا استخدام أي لغة تقريبًا وتجميعها للتشغيل بالسرعة الأصلية تقريبًا في المستعرض ، والأهم من ذلك ، أننا بدأنا نرى دعمًا لميزات إثبات المستقبل مثل دعم الخيوط التي ستتيح لنا الاستفادة من الميزات المتعددة -معالج معماري يمثل المستقبل الحتمي لجميع الأجهزة.
ستساعدك سلسلة الأدوات الرسمية لـ WebAssembly في ترجمة C / C ++ ، ولكن هناك الكثير من المجمعين المقدمين من المجتمع للغات مختلفة ، مثل Rust و Python و Java و Blazor (C #).
على وجه الخصوص ، مجتمع Rust نشط للغاية وبدأنا في رؤية أطر أمامية كاملة مثل Yew و Dodrio.
يوفر هذا الكثير من الاحتمالات الجديدة للتطبيقات المستندة إلى المستعرض ، وتحتاج فقط إلى اختبار بعض التطبيقات الرائعة التي تم إنشاؤها باستخدام WebAssembly لمعرفة أن التطبيقات شبه الأصلية المستندة إلى المستعرض أصبحت حقيقة واقعة الآن ، على سبيل المثال ، Sketchup أو Magnum.
يعد اعتماد اللغات المكتوبة التي يتم تجميعها إلى ES5 ناضجًا بدرجة كافية ، واللاعبون راسخون ، ولن يختفوا (أو يتم دمجهم مع ES) في المستقبل القريب ، لكننا سنرى تحولًا بطيئًا لصالح اللغات المكتوبة باستخدام WebAssembly.
الويب
الأطر الأمامية
في كل عام ، نشهد معركة كبيرة في سوق الإطارات الأمامية للويب ، وكان React هو الفائز بلا منازع على مدار السنوات القليلة الماضية - منذ تقديم تقنية مغير قواعد اللعبة ، وهي Virtual DOM ، رأينا تقريبًا التبني الإلزامي من نظرائهم من أجل البقاء ذات الصلة في المعركة.
منذ بضع سنوات ، شهدنا إدخال نهج جديد جذري لتطوير تطبيقات الويب باستخدام Svelte ، "إطار عمل المترجم" الذي يختفي في وقت الترجمة تاركًا شفرة JavaScript صغيرة وعالية الكفاءة. ومع ذلك ، لم تكن هذه الميزة كافية لإقناع المجتمع بالانتقال إلى Svelte ، ولكن مع الإطلاق الأخير لـ Svelte 3.0 ، قاموا بتقديم برمجة تفاعلية حقيقية في إطار العمل وكان المجتمع سعيدًا ، لذلك ربما نشهد الشيء الكبير التالي في المقدمة -نهاية الأطر.
مستوحى من عامل القدر:
var a = 10; var b <= a + 1; a = 20; Assert.AreEqual(21, b);
يجلب Svelte تفاعلًا إلى JavaScript عن طريق التحميل الزائد على استخدام عبارات التسمية مع التفاعل في وقت الترجمة عن طريق توجيه التعليمات البرمجية ليتم تنفيذها بترتيب طوبولوجي:
var a = 10; $: b = a + 1; a = 20; Assert.AreEqual(21, b);
هذه فكرة جديدة جذرية قد تساعد في سياقات مختلفة ، لذلك يعمل منشئ Svelte أيضًا على svelte-gl ، وهو إطار عمل مترجم سينشئ تعليمات WebGL منخفضة المستوى مباشرة من رسم بياني ثلاثي الأبعاد للمشهد معلن في HTMLx.
لا داعي للقول إن React و Angular و Vue.js لن تختفي بين عشية وضحاها ، فمجتمعاتهم ضخمة وستظل ذات صلة لعدة سنوات قادمة - لسنا متأكدين حتى مما إذا كانت Svelte ستكون الوريث الفعلي ، لكننا يمكنك التأكد من شيء ما: سنستخدم شيئًا مختلفًا عاجلاً أم آجلاً.
WebXR ومستقبل الويب الغامر
ظل الواقع الافتراضي يكافح طوال الستين عامًا الماضية للعثور على مكان في التيار الرئيسي ، لكن التكنولوجيا لم تكن جاهزة بعد. قبل أقل من عشر سنوات ، عندما انضم جون كارماك إلى Oculus VR (الآن جزء من Facebook Technologies، LLC) ، بدأت موجة جديدة من VR في الارتفاع ، ومنذ ذلك الحين ، رأينا الكثير من الأجهزة الجديدة التي تدعم أنواعًا مختلفة من VR و بالطبع انتشار التطبيقات التي تدعم الواقع الافتراضي.
لم يرغب بائعو المتصفحات في فقدان هذه الفرصة ، لذا انضموا إلى مواصفات WebVR التي تسمح بإنشاء عوالم افتراضية في JavaScript باستخدام WebGL والمكتبات الراسخة مثل three.js. ومع ذلك ، كانت الحصة السوقية للمستخدمين الذين لديهم أجهزة 6dof لا تزال غير مهمة لعمليات النشر الضخمة على الويب ، لكن ويب المحمول كان لا يزال قادرًا على توفير تجربة ثلاثية الأبعاد مع واجهة برمجة التطبيقات لتوجيه الجهاز ، لذلك رأينا مجموعة من التجارب والكثير من مقاطع فيديو 360 لـ فترة.
في عام 2017 ، مع إدخال ARKit و ARCore ، تم توفير إمكانات جديدة للأجهزة المحمولة وجميع أنواع التطبيقات مع تجارب AR و MR.

ومع ذلك ، لا يزال من غير الطبيعي تنزيل تطبيق واحد محدد لتجربة AR واحدة محددة عندما تستكشف عالمك من حولك. إذا كان لدينا تطبيق واحد فقط لاستكشاف تجارب مختلفة ... يبدو هذا مألوفًا. لقد حللنا هذه المشكلة في الماضي باستخدام المتصفح ، فلماذا لا نعطيها فرصة أخرى؟
في العام الماضي ، قدمت Mozilla مواصفات واجهة برمجة تطبيقات جهاز WebXR (والتي كانت آخر مسودتها ، في وقت كتابة هذا التقرير ، من أسبوعين) لجلب إمكانيات AR و VR و MR (ergo XR) إلى المتصفح.
اتبع عدد قليل من بائعي المستعرضات الأكثر أهمية في تنفيذها ، مع استثناء مهم: Safari mobile ، لإثبات وجهة نظرهم ، أصدرت Mozilla متصفحًا قادرًا على WebXR ضمن نظام iOS الأساسي WebXR Viewer.
الآن ، هذه خطوة مهمة لأن الجمع بين AR و VR يجلب 6dof إلى الأجهزة المحمولة والسماعات القائمة على الأجهزة المحمولة مثل Google Cardboard أو Samsung Gear VR ، كما ترون في هذا المثال ، زيادة الحصة السوقية لأجهزة 6dof عن طريق بهامش كبير وتمكين إمكانية نشر الويب على نطاق واسع.
في الوقت نفسه ، كان الرجال في Mozilla يعملون على إطار عمل ويب جديد لتسهيل إنشاء عوالم ثلاثية الأبعاد وتطبيقات تسمى A-Frame ، وهو إطار تعريفي قائم على المكونات مع بناء جملة HTML يعتمد على three.js و WebGL ، فقط شيء واحد في الاعتبار - لاستعادة المتعة وسهولة الاستخدام لبرمجة الويب.
هذا جزء من حملتهم الصليبية على الويب الغامر ، وهي مجموعة جديدة من الأفكار حول الشكل الذي يجب أن يبدو عليه الويب في المستقبل. لحسن الحظ بالنسبة لنا ، فهم ليسوا وحدهم ، وسنبدأ في رؤية المزيد والمزيد من التجارب الغامرة على الويب.
إذا كنت ترغب في تجربته ، فابدأ بتنزيل WebXR Viewer وقم بزيارة هذا الموقع لمعرفة إمكانيات الويب الغامرة.
مرة أخرى ، لن تتلاشى التطبيقات القياسية المستندة إلى المتصفح في غضون عام أو عامين - فربما نوفرها دائمًا. لكن التطبيقات ثلاثية الأبعاد وتجارب XR آخذة في النمو والسوق جاهز ومتشوق للحصول عليها.
دعم أصلي لـ ES6
تم إنشاء كل تقنية تقريبًا في JavaScript في العقد الماضي لحل المشكلات الناتجة عن التنفيذ الأساسي للمتصفحات ، ولكن النظام الأساسي نفسه قد نضج كثيرًا خلال السنوات القليلة الماضية ، واختفت معظم هذه المشكلات ، كما نرى مع Lodash ، التي سادت معايير الأداء ذات مرة.
يحدث الشيء نفسه مع DOM ، الذي كانت مشاكله ذات يوم مصدر الإلهام الفعلي لإنشاء أطر عمل تطبيقات الويب. الآن ، إنها واجهة برمجة تطبيقات ناضجة يمكنك استخدامها بدون أطر لإنشاء تطبيقات - في الواقع ، هذا ما هي مكونات الويب. إنها "إطار عمل" النظام الأساسي لإنشاء تطبيقات قائمة على المكونات.
جزء آخر مثير للاهتمام من تطور النظام الأساسي هو اللغة نفسها. لقد استخدمنا Babel.js خلال السنوات القليلة الماضية لنكون قادرين على استخدام أحدث ميزات ECMAScript ، ولكن منذ أن بدأ المعيار نفسه في الركود قليلاً في السنوات القليلة الماضية ، كان ذلك وقتًا كافيًا للسماح لبائعي المستعرضات لتنفيذ معظم ميزاتها ، بما في ذلك الدعم الأصلي لبيان الاستيراد الثابت. حتى الآن ، يمكننا البدء في التفكير في إنشاء تطبيقات بدون Babel.js أو برامج التحويل البرمجي الأخرى نظرًا لأن لدينا (مرة أخرى) دعم ميزات اللغة في النظام الأساسي نفسه ، وبما أن Node.js يستخدم نفس V8 VM مثل Google Chrome ، بدأنا نرى دعمًا أقوى لـ ES6 في Node.js ، حتى مع بيان الاستيراد الثابت تحت علامة الوحدات التجريبية.
هذا لا يعني أننا سنتوقف عن رؤية التطبيقات يتم تجميعها على مستوى احترافي ، ولكن هذا يعني أن البدء بتطبيق قائم على المتصفح سيكون سهلاً وممتعًا كما كان من قبل.
جافا سكريبت من جانب الخادم
على الرغم من أن JavaScript بدأ من جانب الخادم في عام 1995 مع Netscape Enterprise Server ، إلا أنه لم يكن حتى عرض Ryan's Dahl التقديمي في عام 2009 حيث بدأ النظر بجدية في JavaScript للتطبيقات من جانب الخادم. حدثت الكثير من الأشياء في العقد الماضي لـ Node.js. لقد تطورت ونضجت كثيرًا ، مما خلق مرة أخرى فرصة للاضطراب والتقنيات الجديدة.
في هذه الحالة ، يأتي من يد مبتكره الخاص ، Ryan Dahl ، الذي كان يعمل على منظور جديد للتطبيقات المؤمنة من جانب الخادم مع Deno ، وهو نظام أساسي يدعم أصلاً أحدث ميزات اللغة مثل غير المتزامن / الانتظار ، و أيضًا أكثر لغات التحويل البرمجي إلى js شيوعًا ، والتي تستهدف أفضل أداء بفضل تنفيذها في Rust واستخدام Tokio ، ولكن الأهم من ذلك مع فلسفة أمان جديدة تميزها عن معظم الأنظمة الأساسية من جانب الخادم مثل Python ، روبي أو جافا). مستوحى من نموذج أمان المتصفح ، سيتيح لك Deno استخدام موارد المضيف فقط بعد أن يمنح المستخدم أذونات صريحة للعملية ، والتي قد تبدو مملة بعض الشيء في البداية ، ولكنها قد تؤدي إلى الكثير من الآثار من خلال السماح علينا تشغيل تعليمات برمجية غير آمنة في بيئة آمنة بمجرد الوثوق بالمنصة.
سيظل Node.js موجودًا في المستقبل ولكن قد نبدأ في رؤية خدمات بدون خادم مثل AWS Lambda و Azure Functions لتوفير وظيفة Deno كبديل لتوفير تنفيذ التعليمات البرمجية من جانب الخادم غير الآمن على أنظمتها.
خاتمة
هذه أوقات مثيرة في عالم JavaScript - لقد نضجت الكثير من التقنيات بما يكفي لتترك مساحة للابتكار ، ولم يتوقف المجتمع النشط أبدًا عن إدهاشنا بأفكارهم الرائعة والرائعة ، ونتوقع الكثير من البدائل الجديدة للأدوات الراسخة منذ مراحل النضج تصل بسرعة ؛ لن نتوقف عن استخدامها لأن الكثير منها جيد حقًا وهناك الكثير من الأدلة في ساحة المعركة ، ولكن ستبدأ أسواق جديدة ومثيرة في الظهور ، ومن الأفضل أن تكون مستعدًا.
البقاء على اطلاع بأحدث المستجدات في عالم JavaScript ليس بالأمر السهل ، بسبب وتيرة التطوير ، ولكن هناك بعض المصادر التي يمكن أن تساعد حقًا. أولاً ، أهم مصدر إخباري ، في رأيي ، هو Echo JS ، حيث يمكنك الحصول على كمية هائلة من المحتوى الجديد كل ساعة. ومع ذلك ، إذا لم يكن لديك الوقت ، فإن النشرة الإخبارية لجافا سكريبت الأسبوعية هي ملخص ممتاز للأسبوع في JS. إلى جانب ذلك ، من المهم أيضًا مراقبة المؤتمرات حول العالم ، وقنوات YouTube مثل JSConf و React Conf و Google Chrome Developers مفيدة بشكل رائع.
على العكس من ذلك ، إذا كنت مهتمًا برؤية بعض النقد البناء للمكان الذي تتجه إليه JavaScript ، فإنني أوصي بقراءة بصفتي مطور JS ، This Is What Keeps Me Up at Night بواسطة زميل مطور JavaScript جاستن روبرتسون.
مزيد من القراءة على مدونة Toptal Engineering:
- TypeScript مقابل JavaScript: دليل Go-to الخاص بك