paint-brush
كيف تشعر عندما تتعلم JavaScript في عام 2016بواسطة@jjperezaguinaga
729,131 قراءة٪ s
729,131 قراءة٪ s

كيف تشعر عندما تتعلم JavaScript في عام 2016

بواسطة Jose Aguinaga11m2016/10/03
Read on Terminal Reader
Read this story w/o Javascript

طويل جدا؛ ليقرأ

<em>لم</em> يتم إنشاء أي إطار عمل <a href="https://hackernoon.com/tagged/javascript" target="_blank"><em>JavaScript</em></a> <em>أثناء كتابة هذه المقالة.</em>

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - كيف تشعر عندما تتعلم JavaScript في عام 2016
Jose Aguinaga HackerNoon profile picture

لم يتم إنشاء أي إطار عمل JavaScript أثناء كتابة هذه المقالة.

ما يلي مستوحى من مقال "إنه المستقبل" من Circle CI. يمكنك قراءة الأصل هنا . هذه القطعة مجرد رأي، ومثل أي إطار عمل JavaScript، لا ينبغي أن تؤخذ على محمل الجد.

مرحبًا، لقد حصلت على مشروع ويب جديد، ولكن لأكون صادقًا، لم أقم ببرمجة الكثير من الويب منذ بضع سنوات وسمعت أن المشهد تغير قليلاً. أنت أحدث مطور ويب هنا، أليس كذلك؟

- المصطلح الحقيقي هو مهندس واجهة المستخدم الأمامية، ولكن نعم، أنا الشخص المناسب. أعمل في مجال الويب منذ عام 2016. التصورات، ومشغلات الموسيقى، والطائرات بدون طيار التي تلعب كرة القدم، وما إلى ذلك. لقد عدت للتو من مؤتمر JsConf وReactConf، لذا فأنا أعرف أحدث التقنيات لإنشاء تطبيقات الويب.

رائع. أحتاج إلى إنشاء صفحة تعرض أحدث الأنشطة من المستخدمين، لذا فأنا بحاجة فقط إلى الحصول على البيانات من نقطة نهاية REST وعرضها في نوع من الجدول القابل للتصفية، وتحديثها إذا تغير أي شيء في الخادم. كنت أفكر ربما في استخدام jQuery لجلب البيانات وعرضها؟

- يا إلهي، لا أحد يستخدم jQuery بعد الآن. يجب أن تحاول تعلم React، فنحن في عام 2016.

أوه، حسنًا، ما هو React؟

-إنها مكتبة رائعة للغاية تم إنشاؤها بواسطة بعض الأشخاص في Facebook، وهي توفر بالفعل التحكم والأداء لتطبيقك، من خلال السماح لك بالتعامل مع أي تغييرات في العرض بسهولة بالغة.

يبدو هذا رائعًا. هل يمكنني استخدام React لعرض البيانات من الخادم؟

-نعم، ولكن عليك أولاً إضافة React وReact DOM كمكتبة في صفحتك على الويب.

انتظر، لماذا مكتبتين؟

-إذن واحدة هي المكتبة الفعلية والثانية هي للتلاعب بـ DOM، والتي يمكنك الآن وصفها في JSX.

JSX؟ ما هو JSX؟

-JSX هو مجرد امتداد لقواعد لغة JavaScript يشبه XML إلى حد كبير. إنه نوع من الطرق الأخرى لوصف DOM، فكر فيه باعتباره HTML أفضل.

ما هو الخطأ في HTML؟

-إنه عام 2016. لم يعد أحد يقوم ببرمجة HTML بشكل مباشر.

حسنًا، على أية حال، إذا أضفت هاتين المكتبتين، فهل يمكنني استخدام React؟

- ليس تمامًا. تحتاج إلى إضافة Babel، وبعد ذلك ستتمكن من استخدام React.

مكتبة أخرى؟ ما هو بابل؟

- أوه، Babel هو برنامج تحويل يسمح لك باستهداف إصدارات معينة من JavaScript، بينما تقوم بالترميز بأي إصدار من JavaScript. لست مضطرًا إلى تضمين Babel لاستخدام ReactJS، ولكن ما لم تقم بذلك، فسوف تضطر إلى استخدام ES5، ولنكن واقعيين، نحن في عام 2016، ويجب عليك الترميز في ES2016+ مثل بقية الأطفال الرائعين.

ES5؟ ES2016+؟ لقد ضللت طريقي هنا. ما هو ES5 وES2016+؟

-ES5 تعني ECMAScript 5. إنها النسخة التي يستهدفها معظم الأشخاص حيث تم تنفيذها بواسطة معظم المتصفحات في الوقت الحاضر.

ECMAScript؟

-نعم، كما تعلم، كان معيار البرمجة النصية JavaScript يعتمد عليه في عام 1999 بعد إصداره الأولي في عام 1995، عندما كان JavaScript يُسمى Livescript وكان يعمل فقط في متصفح Netscape Navigator. كان الأمر فوضويًا للغاية في ذلك الوقت، ولكن لحسن الحظ أصبحت الأمور واضحة للغاية الآن ولدينا ما يقرب من 7 إصدارات من هذا التنفيذ.

7 إصدارات. حقًا. وما هي إصدارات ES5 وES2016+؟

-الطبعة الخامسة والسابعة على التوالي.

انتظر، ماذا حدث مع السادس؟

-هل تقصد ES6؟ نعم، أعني أن كل إصدار هو عبارة عن مجموعة فرعية من الإصدار السابق، لذا إذا كنت تستخدم ES2016+، فأنت تستخدم جميع ميزات الإصدارات السابقة.

حسنًا. ولماذا نستخدم ES2016+ بدلًا من ES6 إذن؟

- حسنًا، يمكنك استخدام ES6، ولكن لاستخدام ميزات رائعة مثل async وawait، تحتاج إلى استخدام ES2016+. وإلا فستضطر إلى استخدام مولدات ES6 مع روتينات مشتركة لحظر المكالمات غير المتزامنة لضمان تدفق التحكم المناسب.

ليس لدي أي فكرة عما قلته للتو، وكل هذه الأسماء مربكة. انظر، أنا فقط أقوم بتحميل مجموعة من البيانات من خادم، كنت أتمكن من تضمين jQuery من شبكة CDN والحصول على البيانات فقط باستخدام مكالمات AJAX، لماذا لا يمكنني القيام بذلك؟

- لقد أصبحنا في عام 2016، ولم يعد أحد يستخدم jQuery، بل أصبح ينتهي به الأمر إلى مجموعة من أكواد السباغيتي. الجميع يعلم ذلك.

حسنًا. لذا فإن البديل بالنسبة لي هو تحميل ثلاث مكتبات لجلب البيانات وعرض جدول HTML.

-حسنًا، يمكنك تضمين هذه المكتبات الثلاث ولكن تجميعها مع مدير وحدات لتحميل ملف واحد فقط.

أرى ذلك. وما هو مدير الوحدة؟

-يعتمد التعريف على البيئة، ولكن في الويب عادةً ما نعني أي شيء يدعم وحدات AMD أو CommonJS.

حسنًا. وAMD وCommonJS هما...؟

- التعاريف. هناك طرق لوصف كيفية تفاعل مكتبات وفئات JavaScript المتعددة. هل تعلم، الصادرات والمتطلبات؟ يمكنك كتابة ملفات JavaScript متعددة تحدد واجهة برمجة تطبيقات AMD أو CommonJS ويمكنك استخدام شيء مثل Browserify لتجميعها.

حسنًا، هذا منطقي... أعتقد ذلك. ما هو Browserify؟

- إنها أداة تسمح لك بتجميع التبعيات الموصوفة في CommonJS في ملفات يمكن تشغيلها في المتصفح. تم إنشاؤها لأن معظم الأشخاص ينشرون هذه التبعيات في سجل npm.

سجل npm؟

-إنه مستودع عام كبير جدًا حيث يضع الأشخاص الأذكياء الكود والتبعيات كوحدات نمطية.

مثل شبكة CDN؟

- ليس حقًا. إنه أشبه بقاعدة بيانات مركزية حيث يمكن لأي شخص نشر المكتبات وتنزيلها، وبالتالي يمكنك استخدامها محليًا للتطوير ثم تحميلها إلى شبكة توصيل المحتوى إذا أردت ذلك.

أوه، مثل باور!

-نعم، ولكننا في عام 2016 الآن، ولم يعد أحد يستخدم Bower بعد الآن.

أوه، أرى... لذا أحتاج إلى تنزيل المكتبات من npm إذن؟

-نعم. على سبيل المثال، إذا كنت تريد استخدام React، يمكنك تنزيل وحدة React واستيرادها في الكود الخاص بك. يمكنك القيام بذلك بالنسبة إلى كل مكتبة JavaScript شائعة تقريبًا.

أوه، مثل Angular!

-Angular هو برنامج من عام 2015. ولكن نعم. سيكون Angular موجودًا إلى جانب VueJS أو RxJS وغيرها من المكتبات الرائعة لعام 2016. هل تريد التعرف على هذه المكتبات؟

دعنا نستمر في استخدام React، فأنا أتعلم الكثير من الأشياء الآن. لذا، إذا كنت بحاجة إلى استخدام React، فهل أحصل عليه من npm ثم أستخدم أداة Browserify؟

-نعم.

يبدو الأمر معقدًا للغاية بحيث لا يمكنك سوى جمع مجموعة من التبعيات وربطها معًا.

-هذا هو السبب الذي يجعلك تستخدم مدير مهام مثل Grunt أو Gulp أو Broccoli لتشغيل Browserify تلقائيًا. بل ويمكنك حتى استخدام Mimosa.

خرخرة؟ بلع؟ بروكلي؟ ميموزا؟ ما الذي نتحدث عنه الآن؟

-مديرو المهام. لكنهم لم يعودوا رائعين بعد الآن. لقد استخدمناهم في عام 2015، ثم استخدمنا ملفات Makefiles، ولكن الآن نقوم بتغليف كل شيء باستخدام Webpack.

ملفات Makefiles؟ اعتقدت أنها تُستخدم في الغالب في مشاريع C أو C++.

-نعم، ولكن من الواضح أننا في الويب نحب جعل الأمور معقدة ثم نعود إلى الأساسيات. نفعل ذلك كل عام أو نحو ذلك، فقط انتظر، سنبدأ التجميع على الويب في غضون عام أو عامين.

آه، هل ذكرت شيئًا يسمى Webpack؟

-إنه مدير وحدات آخر للمتصفح، كما أنه يعمل بمثابة مشغل مهام أيضًا. إنه يشبه إصدارًا أفضل من Browserify.

أوه، حسنًا، لماذا هو أفضل؟

- حسنًا، ربما لا يكون هذا أفضل، بل إنه أكثر ميلاً إلى إبداء رأي حول كيفية ربط التبعيات. يتيح لك Webpack استخدام مديري وحدات مختلفين، وليس فقط مديري CommonJS، على سبيل المثال، وحدات ES6 الأصلية المدعومة.

أنا مرتبك للغاية بشأن هذا الأمر بأكمله المتعلق بـ CommonJS/ES6.

-الجميع كذلك، ولكن لا ينبغي أن تهتم بعد الآن بـ SystemJS.

يسوع المسيح، اسم آخر-JS. حسنًا، ما هو هذا SystemJS؟

-حسنًا، على عكس Browserify وWebpack 1.x، يعد SystemJS محمل وحدات ديناميكيًا يسمح لك بربط وحدات متعددة في ملفات متعددة بدلاً من تجميعها في ملف كبير واحد.

انتظر، لكنني اعتقدت أننا أردنا بناء مكتباتنا في ملف كبير واحد وتحميل ذلك!

-نعم، ولكن نظرًا لأن HTTP/2 أصبح متاحًا الآن فإن طلبات HTTP المتعددة أصبحت أفضل بالفعل.

انتظر، هل لا يمكننا فقط إضافة المكتبات الأصلية الثلاث لـ React؟؟

- ليس حقًا. أعني أنه يمكنك إضافتها كبرامج نصية خارجية من شبكة CDN، ولكنك ستظل بحاجة إلى تضمين Babel في هذه الحالة.

آه، وهذا أمر سيئ، أليس كذلك؟

- نعم، سوف تقوم بتضمين كامل نواة babel، ولن يكون ذلك فعالاً للإنتاج. في الإنتاج، تحتاج إلى تنفيذ سلسلة من المهام المسبقة لتجهيز مشروعك بحيث تجعل طقوس استدعاء الشيطان تبدو وكأنها وصفة لبيض مسلوق. تحتاج إلى تصغير الأصول، وتشويهها، ودمج CSS أعلى الطية، وتأجيل البرامج النصية، بالإضافة إلى-

لقد فهمت، لقد فهمت. لذا، إذا لم تقم بتضمين المكتبات مباشرةً في شبكة CDN، فكيف ستفعل ذلك؟

- سأقوم بنقله من Typescript باستخدام مجموعة Webpack + SystemJS + Babel.

TypeScript؟ كنت أعتقد أننا نقوم بالبرمجة باستخدام JavaScript!

-Typescript هي لغة JavaScript، أو بالأحرى، مجموعة فرعية من JavaScript، وتحديدًا JavaScript في الإصدار ES6. هل تعلم، الإصدار السادس الذي تحدثنا عنه من قبل؟

اعتقدت أن ES2016+ كان بالفعل مجموعة فرعية من ES6! لماذا نحتاج الآن إلى هذا الشيء المسمى Typescript؟

-أوه، لأنه يسمح لنا باستخدام JavaScript كلغة مكتوبة، وتقليل أخطاء وقت التشغيل. نحن في عام 2016، ويجب عليك إضافة بعض الأنواع إلى كود JavaScript الخاص بك.

ومن الواضح أن TypeScript يقوم بذلك.

-التدفق أيضًا، على الرغم من أنه يتحقق فقط من الكتابة بينما Typescript هو مجموعة فرعية من JavaScript والتي تحتاج إلى التجميع.

آه... والتدفق هو؟

- إنه برنامج فحص النوع الثابت الذي ابتكره بعض الأشخاص في Facebook. لقد قاموا ببرمجته بلغة OCaml، لأن البرمجة الوظيفية رائعة.

OCaml؟ البرمجة الوظيفية؟

-هذا ما يستخدمه الشباب الرائعون هذه الأيام، كما تعلمون، في عام 2016؟ البرمجة الوظيفية؟ الدوال عالية الترتيب؟ الكاري؟ الدوال البحتة؟

ليس لدي أي فكرة عما قلته للتو.

-لا أحد يفعل ذلك في البداية. انظر، ما عليك سوى معرفة أن البرمجة الوظيفية أفضل من البرمجة الكائنية التوجه، وهذا ما يجب أن نستخدمه في عام 2016.

انتظر، لقد تعلمت OOP في الكلية، اعتقدت أن هذا كان جيدًا؟

- كانت لغة جافا كذلك قبل أن تشتريها شركة أوراكل. أعني أن البرمجة الشيئية كانت جيدة في الماضي، ولا تزال لها استخداماتها حتى اليوم، ولكن الآن أدرك الجميع أن تعديل الحالات يعادل ركل الأطفال، لذا فإن الجميع يتجهون الآن إلى الكائنات الثابتة والبرمجة الوظيفية. كان خبراء هاسكل يستخدمونها لسنوات، -ولا تجعلني أبدأ بخبراء إلم- ولكن لحسن الحظ لدينا الآن على شبكة الإنترنت مكتبات مثل رامدا التي تسمح لنا باستخدام البرمجة الوظيفية في جافا سكريبت العادي.

هل تذكر الأسماء فقط من أجل المتعة؟ ما هو رامندا؟

-لا. رامدا. مثل لامدا. هل تعلم، مكتبة ديفيد تشامبرز؟

ديفيد من؟

- ديفيد تشامبرز. رجل رائع. يلعب لعبة Coup الرائعة. أحد المساهمين في Ramda. يجب عليك أيضًا مراجعة Erik Meijer إذا كنت جادًا بشأن تعلم البرمجة الوظيفية.

وإيريك ماير هو...؟

- رجل برمجة وظيفية أيضًا. رجل رائع. لديه مجموعة من العروض التقديمية التي ينتقد فيها Agile أثناء استخدام هذا القميص ذي اللون الغريب. يجب عليك أيضًا التحقق من بعض الأشياء من Tj وJash Kenas وSindre Sorhus وPaul Irish وAddy Osmani-

حسنًا، سأوقفك عند هذا الحد. كل هذا جيد وجميل، لكنني أعتقد أن كل هذا معقد للغاية وغير ضروري لمجرد جلب البيانات وعرضها. أنا متأكد تمامًا من أنني لست بحاجة إلى معرفة هؤلاء الأشخاص أو تعلم كل هذه الأشياء لإنشاء جدول ببيانات ديناميكية. دعنا نعود إلى React. كيف يمكنني جلب البيانات من الخادم باستخدام React؟

-حسنًا، في الواقع لا تقوم بجلب البيانات باستخدام React، بل تقوم فقط بعرض البيانات باستخدام React.

يا إلهي، ما الذي تستخدمه إذن لجلب البيانات؟

-تستخدم Fetch لجلب البيانات من الخادم.

أنا آسف؟ هل تستخدم Fetch لجلب البيانات؟ من يقوم بتسمية هذه الأشياء يحتاج إلى قاموس المرادفات.

-أعلم ذلك، أليس كذلك؟ Fetch هو اسم التنفيذ الأصلي لأداء XMLHttpRequests على الخادم.

أوه، لذلك AJAX.

-AJAX هو مجرد استخدام لـ XMLHttpRequests. ولكن بالتأكيد. يسمح لك Fetch بتنفيذ AJAX بناءً على الوعود، والتي يمكنك حلها بعد ذلك لتجنب جحيم الاستدعاء.

استدعاء الجحيم؟

-نعم. في كل مرة تقوم فيها بتنفيذ طلب غير متزامن على الخادم، يتعين عليك انتظار استجابته، مما يجعلك بعد ذلك تضيف دالة داخل دالة، وهو ما يسمى هرم الاستدعاء من الجحيم.

أوه، حسنًا. وهذا الوعد يحل المشكلة؟

-بالفعل. من خلال معالجة عمليات الاسترجاع الخاصة بك من خلال الوعود، يمكنك كتابة أكواد أسهل للفهم، ومحاكاة هذه الأكواد واختبارها، فضلاً عن تنفيذ طلبات متزامنة في وقت واحد والانتظار حتى يتم تحميلها جميعًا.

ويمكن أن يتم ذلك باستخدام Fetch؟

-نعم، ولكن فقط إذا كان المستخدم يستخدم متصفحًا دائمًا، وإلا فسوف تحتاج إلى تضمين Fetch polyfill أو استخدام Request أو Bluebird أو Axios.

كم عدد المكتبات التي يجب أن أعرفها بحق الله؟ كم عددهم؟

- إنه JavaScript. لابد أن يكون هناك آلاف المكتبات التي تقوم جميعها بنفس الشيء. نحن نعرف المكتبات، بل إننا نمتلك أفضل المكتبات. مكتباتنا ضخمة، وأحيانًا ندرج فيها صورًا لـ Guy Fieri.

هل قلت للتو Guy Fieri؟ دعنا ننهي هذا الأمر. ماذا تفعل مكتبات Bluebird وRequest وAxios هذه؟

-إنها مكتبات لأداء XMLHttpRequests التي تقوم بإرجاع الوعود.

ألم تبدأ طريقة AJAX الخاصة بـ jQuery في إرجاع الوعود أيضًا؟

- لم نعد نستخدم كلمة "J" في عام 2016. ما عليك سوى استخدام Fetch، ثم استخدام polyfill عندما لا تكون موجودة في المتصفح أو استخدام Bluebird أو Request أو Axios بدلاً من ذلك. ثم إدارة الوعد باستخدام await داخل دالة غير متزامنة، وبهذا يكون لديك تدفق تحكم مناسب.

هذه هي المرة الثالثة التي تذكر فيها الانتظار ولكن ليس لدي أي فكرة عما هو.

-Await يسمح لك بحظر مكالمة غير متزامنة، مما يتيح لك التحكم بشكل أفضل في وقت جلب البيانات وزيادة قابلية قراءة التعليمات البرمجية بشكل عام. إنه أمر رائع، ما عليك سوى التأكد من إضافة الإعداد المسبق للمرحلة 3 في Babel، أو استخدام syntax-async-functions وtransform-async-to-generator plugin.

هذا جنون.

-لا، الأمر الجنونى هو أنك تحتاج إلى تجميع كود TypeScript مسبقًا ثم تحويله إلى صيغة الترجمة باستخدام Babel لاستخدام await.

ماذا؟ إنه غير متضمن في TypeScript؟

-يفعل ذلك في الإصدار التالي، ولكن اعتبارًا من الإصدار 1.7 فإنه يستهدف ES6 فقط، لذلك إذا كنت تريد استخدام await في المتصفح، فأنت بحاجة أولاً إلى تجميع كود Typescript الخاص بك الذي يستهدف ES6 ثم Babel الذي يستهدف ES5.

في هذه المرحلة لا أعرف ماذا أقول.

- انظر، الأمر سهل. قم بكتابة كل شيء في Typescript. كل الوحدات النمطية التي تستخدم Fetch تقوم بتجميعها لاستهداف ES6، ثم تقوم بترجمتها باستخدام Babel على إعداد مسبق للمرحلة 3، ثم تقوم بتحميلها باستخدام SystemJS. إذا لم يكن لديك Fetch، فقم بملء الفراغات به، أو استخدم Bluebird أو Request أو Axios، وقم بمعالجة كل وعودك باستخدام await.

لدينا تعريفات مختلفة جدًا لكلمة "سهل". لذا، باستخدام هذه الطقوس، تمكنت أخيرًا من جلب البيانات والآن يمكنني عرضها باستخدام React، أليس كذلك؟

-هل سيتمكن تطبيقك من التعامل مع أي تغييرات في الحالة؟

آه، لا أعتقد ذلك. كل ما أحتاجه هو عرض البيانات فقط.

- أوه، الحمد لله. وإلا كنت سأضطر إلى شرح Flux لك، وتطبيقات مثل Flummox وAlt وFluxible. ولكن بصراحة، يجب عليك استخدام Redux.

سأقوم بالتحليق فوق تلك الأسماء. مرة أخرى، كل ما أحتاجه هو عرض البيانات.

-أوه، إذا كنت تقوم فقط بعرض البيانات، فلن تحتاج إلى React في البداية. كان من الممكن أن يكون الأمر على ما يرام مع محرك القوالب.

هل أنت تمزح معي؟ هل تعتقد أن هذا مضحك؟ هل هذه هي الطريقة التي تعامل بها أحبائك؟

-كنت فقط أشرح ما يمكنك استخدامه.

توقف، توقف فقط.

-أعني، حتى لو كان الأمر مجرد استخدام محرك قالب، كنت سأستخدم مزيج Typescript + SystemJS + Babel إذا كنت مكانك.

أحتاج إلى عرض البيانات على صفحة، وليس تنفيذ عملية MK fatality الأصلية لـ Sub Zero. فقط أخبرني بمحرك القوالب الذي يجب استخدامه وسأتولى الأمر من هناك.

-هناك الكثير، أي واحد أنت على دراية به؟

آه، لا أستطيع تذكر الاسم. لقد حدث ذلك منذ زمن طويل.

-jTemplates؟ jQote؟ PURE؟

آه، لا يوجد شيء يذكر. واحد آخر؟

-الشفافية؟ JSRender؟ MarkupJS؟ KnockoutJS؟ كان هذا يحتوي على ربط ثنائي الاتجاه.

واحد اخر؟

-PlatesJS؟ jQuery-tmpl؟ Handlebars؟ لا يزال بعض الأشخاص يستخدمونه.

ربما. هل هناك شيء مشابه لذلك الأخير؟

- شارب، خط سفلي؟ أعتقد أن لوداش لديه واحد الآن لأكون صادقًا، لكن هذا هو عام 2014.

اممم.. ربما كان أحدث.

-جيد؟ DustJS؟

لا.

-DotJS؟ EJS؟

لا.

-نونجوكس؟ إلخ؟

لا.

-ممم، لا أحد يحب قواعد اللغة في Coffeescript على أي حال. جاد؟

لا، لقد قلت بالفعل جاد.

-أقصد بوج. أقصد جاد. أعني أن جاد أصبحت الآن بوج.

آه. لا. لا أستطيع التذكر. أيهما ستستخدم؟

-ربما مجرد سلاسل قالب ES6 الأصلية.

دعني أخمن. وهذا يتطلب ES6.

-صحيح.

وهذا يعتمد على المتصفح الذي أستخدمه، فهو يحتاج إلى Babel.

-صحيح.

والذي إذا أردت تضمينه دون إضافة المكتبة الأساسية بأكملها، فيتعين عليّ تحميلها كنموذج من npm.

-صحيح.

وهو ما يتطلب Browserify، أو Wepback، أو على الأرجح الشيء الآخر المسمى SystemJS.

-صحيح.

والذي، ما لم يكن Webpack، فمن الأفضل إدارته بواسطة مشغل المهام.

-صحيح.

ولكن، بما أنني يجب أن أستخدم البرمجة الوظيفية واللغات المكتوبة، فأنا بحاجة أولاً إلى التجميع المسبق لـ Typescript أو إضافة هذا الشيء Flow.

-صحيح.

وبعد ذلك أرسل ذلك إلى Babel إذا كنت أرغب في استخدام await.

-صحيح.

حتى أتمكن بعد ذلك من استخدام Fetch، والوعود، والتحكم في التدفق وكل هذا السحر.

- فقط لا تنسى ملء ميزة Fetch إذا لم تكن مدعومة، فلا يزال Safari غير قادر على التعامل معها.

هل تعلم ماذا؟ أعتقد أننا انتهينا هنا. في الواقع، أعتقد أنني انتهيت. لقد انتهيت من الويب، وانتهيت من JavaScript تمامًا.

-حسنًا، في غضون بضع سنوات سوف نكون جميعًا قادرين على البرمجة باستخدام Elm أو WebAssembly.

سأعود إلى الواجهة الخلفية. لا يمكنني التعامل مع هذه التغييرات والإصدارات والطبعات والمترجمات والمترجمات. إن مجتمع JavaScript مجنون إذا كان يعتقد أن أي شخص يمكنه مواكبة هذا.

-أسمعك. يجب عليك تجربة مجتمع Python.

لماذا؟

-هل سبق وأن سمعت عن بايثون 3؟

التحديث: شكرًا لك على الإشارة إلى الأخطاء المطبعية والأخطاء، وسأقوم بتحديث المقال كما هو مذكور. مناقشة في HackerNews و Reddit .