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

(الرجل العنكبوت الرائع)
الجواب هو في الواقع بسيط ومباشر. لقد نمت شبكة الويب بالفعل وأصبحت أكثر تعقيدًا ، والآن ليس من غير المألوف العثور على تطبيق وسائط متعددة مكتوب بالكامل لتقنية الويب أو لعبة ثلاثية الأبعاد في متصفح ، وهو أمر لم يكن من الممكن التفكير فيه قبل 10 سنوات. لكن المشكلة الرئيسية هي أننا غالبًا ما نريد من الويب أنه ليس جاهزًا حتى الآن لإعطائنا - أحدث التقنيات والمعايير والقوالب المعمارية التجريبية ، كل شيء هو الأحدث والأحدث وبالطبع يجب أن يعمل في كل مكان ومن أجل الجميع ، ويرجى بسرعة . ثم تظهر عصابة برية بقيادة Webpack على المشهد وتبدأ في تصحيح الكرة. والآن أنت بالفعل معلقة مع تكوينات معقدة ومشروعك حوالي دقيقة ونصف ويزن خمسين ميغا بايت. Finito la comedia. يبدأ الصراع مع التكوين في محاولة للضغط على المزيد من الأداء وتقليل الحجم. ثم أي نوع من التنمية وتنفيذ الأفكار يمكن مناقشته بعد ذلك ، إذا قضينا حصة الأسد من الوقت في إعدادات خط التجميع. هل تعترف بخبير فريقك في Webpack؟

نحن لسنا معتادين على ذلك ، ولكننا توصلنا إلى أن هذا أمر طبيعي ، ولكن كيف؟ لقد تم تعليقنا مع الأنواع والأطر ، الشركات ، الأمن - لا يمكنك حتى التشاجر. ولكن أين سهلت هذه التجربة وبساطتها ، والتي تم تصور هذه اللغة الديناميكية المكتوبة بشكل ضعيف؟ وكل شيء ، ليس لها ، اختفى تحت جبال الحزم والمشاريع. ولكن حقا لا يمكن فعل شيء؟
يجدر التوقف والتفكير ، ولكن ماذا نفعل ولماذا؟ بعد كل شيء ، إذا استخدمنا Webpack ، التراكمي ، الطرود (التسطير حسب الضرورة) وقمنا بإنشاء كل هذه الحزم غير القابلة للقراءة التي من المستحيل تصحيحها حتى مع خرائط المصدر ، فمن المؤكد أن شخصًا ما يحتاج إلى ذلك ، أليس كذلك؟ نعم ، كل شيء على ما يرام ، للحصول على إنتاج سريع وفعال من الحزم لا يمكنك الوصول إلى أي مكان ، وحتى HTTP2 ذي الأناقة الجديدة لم تجعل المهمة أسهل كثيرًا. هذا هو السبب في أن المطورين يحزمون في المكتب في أمسيات الخريف الطويلة ، ويبقون لفترة أطول في العمل ويحرقون مئات الآلاف من كيلووات الطاقة ، ويجمعون في الأقسام ، ويجمعون في الشركات ، ويحزمون في جميع أنحاء العالم ينقلون التحول مع حركة الشمس. لقد حدث ذلك ، وهذا هو القانون. Dura lex، sed lex. لذا فإن السؤال الحقيقي لشكسبير هو إلقاء اللوم أو عدم إلقاء اللوم - فهو يموت دون حتى الوقت الكافي لكسر شفاه هاملت الصغيرة التي فتحت الاستوديو المرئي من أجل تكديس تحفة أخرى.

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

Meet
hq - خادم متخصص لتطوير تطبيقات الويب. hq هو خادم ثابت على المنشطات يفهم كل شيء لا يمكن لخادم عادي التعامل معه. هل تريد أحدث ميزة من معيار جافا سكريبت ، ولكن متصفحك لا يدعمها بعد؟ - من فضلك! تستخدم مكتبتك تنسيق Commonjs - لا توجد مشكلة! مع الأدوات المتنوعة التي تم شحذها للعمل مع كل إطار عمل محدد ، يدعمها hq جميعًا ، فور إخراجها من العلبة. hq رائع لدرجة أنه لا يتطلب أي تكوين ، فهو يعمل فقط ويقوم بعمله. لا يوجد طرد ، كل شيء مختلف عنك ، hq حقا لا يتطلب أي تكوين ، ببساطة غير موجود ، لذلك ليس هناك مكان للذهاب إليه. قم بتثبيته مرة واحدة
npm install -g @hqjs/hq
ثم تشغيل بأمر واحد في جذر المشروع لبدء التجربة على الفور
hq
حسنًا ، كما تقول ، قدمت لنا العصابة القديمة نفس الشيء ، حسنًا ، ربما أكثر قليلاً من التكوين ، وأقل بساطة قليلاً ، لكن كل شيء مشابه جدًا ، فلماذا نحتاج إلى تشاك نوريس الجديد في عالم العذارى؟ ثم سأجيبك بشعار جديد للمنزل Greyjoy - "نحن لسنا قطاع طرق!". نعم ، في الحقيقة ، نحن لسنا عصابات!

(House Greyjoy. نحن لا نزرع Bundlem)
مرحبًا ، لقد شاركت في تطوير الويب منذ أن كان عمري 13 عامًا وبدأت في الضرب عندما كان عمري 19 عامًا. سألت ماذا تفعل؟ وقال أن هذا شيء جديد ، إنه الآن عصري للغاية ورائع ويجب أن أحاول بالتأكيد. في البداية قمت فقط بلصق الملفات ، ثم جربت حزمة صغيرة مع مترجم الإغلاق ثم لم أستطع التوقف. gulp ، Browsify ، ثم webpack ... حزمتي أصبحت أكثر صعوبة. لم أكن أعرف كيف أتوقف ، لقد وقعت في دورة لم تسمح لي بالمغادرة. في كل مرة أذهب فيها إلى مشروع جديد ، كان هناك شخص ما يندفع هناك بالفعل وكان من المستحيل رفضه. لا قطاع طرق لم يكن مرموقا! رفض أشخاص من المهنة وحتى الأصدقاء المقربون التواصل ولم يتصلوا بي عندما اكتشفوا أنني أريد التوقف. لذا لم يكن هناك مكان نذهب إليه. ولكن الآن أنا نظيف! لم أعد قاطع الطريق أثناء التطوير! توقف أصدقائي ومعارفي عن الخفقان معي ، والآن هذا غير مقبول في شركتنا. وهل تعرف ماذا؟ لم اشعر ابدا على ما يرام! بدأ العالم أخيراً في اللعب بألوان جديدة وبدأ الوقت في العمل والأسرة.
على محمل الجد ، فإن نقص الحزم يبسط الحياة بشكل كبير. تذكر المواقف التي لا تطاق عندما يكون من المستحيل وضع نقطة فاصل ليس فقط على التعبير ، ولكن حتى على الخط المطلوب! أو هذه الأسماء المتغيرة التي تم إنشاؤها بواسطة webpack __webpack __ @ #٪ ^ $ !!! عندما تقرأهم ، ليس من المستغرب أن تتصل بالشيطان ، لكنك لا تريد أن تكتبهم إلى وحدة التحكم والعدو ، وأكثر ما يختبئون فيه خلف الأسماء العادية والبشرية ، لذا فكر في أي شيء آخر. بشكل عام ، غالبًا ما يتحول التصحيح إلى جحيم ، حتى مع خرائط المصدر الكاملة. كم مرة في اليوم تقسم فيها الكود داخل عقدة؟ كم عدد اللعنات التي تقع على رأس المطورين المؤسسين والزاويين لأنه من المستحيل فهم رسالة الخطأ وأين يحدث هذا الخطأ؟ بعد أن انتقلنا إلى المقر الرئيسي ، نسينا كل هذا على أنه كابوس. هناك بالفعل المزيد من الوقت ، الآن ليس عليك أن تحير لماذا لن تعمل أو بصمت لا تعمل وأين حصلنا على هذه المكتبة مع عشرة ميغا بايت في البناء ، الآن يمكنك أن ترى بوضوح أين! كان هناك معاناة أقل ، وأصبح العمل أسهل ، واتضح أنه يجعله متعة.

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

كيف يعمل كل هذا؟ قد يعطي هذا الانطباع بأن hq هو وحش ضخم نسجه الدكتور فرانكنشتاين من مجموعة متنوعة من الأجزاء المختلفة وغير المتجانسة مع القليل من السحر الأسود. لكن في الواقع ، كل شيء متناغم وموحد تمامًا. يقوم hq بتوزيع كل ملف على حدة عند الطلب ، تمامًا كما يفعل الخادم الثابت العادي. هذا لا يمنحنا سوى فرصة محدودة للتخلص من التعليمات البرمجية غير المستخدمة ، دون اهتزاز الشجرة الكاملة ، ولكنه يوفر الكثير من الوقت الذي تم إنفاقه على تحليل التبعية. تحدث جميع التحولات على الفور وعلى الطاير. علاوة على ذلك ، يتم تحويل الحد الأدنى الضروري فقط. إذا كنت تستخدم متصفحًا حديثًا وتلتزم بمعايير الويب ، فمن غير المحتمل أن يتم تغيير التعليمات البرمجية الخاصة بك على الإطلاق. بينما يمكنك الاعتماد على المعايير ، ليس هناك ما يضمن أن المكتبات التي اعتدت عليها أن تفعل الشيء نفسه. من المحتمل أن يتم تسليم معظمها بتنسيق Commonjs ، مما لا يسمح لها بالعمل في المتصفح كما هو. يهتم hq بهذا ويحول وحدات كوموندجس إلى تنسيق ESM ، والعمليات ليست قياسية ، بل عمليات الاستيراد الشائعة (مثل css أو json) وتدمر الكائنات المستوردة عند الضرورة. يعمل hq جنبًا إلى جنب مع متصفح الويب ، باستخدام نظام التخزين المؤقت الخاص به لتسريع تسليم الأصول ونقل الملفات التي تم تغييرها فقط. ستتم إعادة تحميل الصفحة تلقائيًا عند تغيير الرمز الخاص بك حتى تتمكن من تقييم نتيجة التغييرات على الفور. يمكن أن يعمل hq مع العديد من الأطر ، ولكنه لا يعتمد على الكود الخاص بهم. بدلاً من ذلك ، يقوم hq بإجراء سلسلة من تحويلات AST باستخدام مكونات babel الإضافية التي تم إنشاؤها خصيصًا لـ hq حتى يتمكن من فهم وتحويل مجموعة متنوعة من التقنيات والأساليب المستخدمة في التطوير إلى معيار واحد يدعمه المتصفح.
وبالتالي ، على الرغم من كل الصعوبات والتحديات التي تقدمها شبكة الإنترنت الحديثة ، يمكن أن يظل تطوير المشروع بسيطًا وبديهيًا ، تمامًا كما كان في فجر تقنية الويب. جرب
المقر الرئيسي الآن لتحسين تجربة التطوير في مشروع قديم ، أو استخدمه لإنشاء مشروع جديد مثير!
npm install -g @hqjs/hq