أسباب انتقالي من Angular إلي Nuxt

الحمد لله الذي علَّم بالقلم، علَّم الإنسان ما لم يعلم، والصلاة والسلام على خير معلِّم الناس الخير سيدنا محمد - صلَّى الله عليه وسلم … أما بعد ،،
بداية ليس الهدف من هذا المقال المقارنة والمفاضلة بين كلا الأداتين، فكل منهما له نقاط قوته ومجالات تفوقه على غيره، ولعل الفيصل هو مدى ملائمة كل أداة لطبيعة تطبيق الويب المراد تنفيذه، لكن هدفي من هذا المقال هو مشاركة تجربتي مع كلا الأداتين، وانطباعي الشخصي تجاه كل منهما بناء على تجربتى الشخصية.
بداية تعرفي بالأنجلير (Angular) كانت عام 2017 عندما درست أحد الكورسات التعليمية بعنوان (MEAN stack) وهى عبارة عن مجموعة أدوات تساعدك - مجتمعة مع بعضها - أن تنفذ تطبيقات متكاملة بما يشمل تطوير الواجهة الأمامية (Front-end development) و برمجة الخادم (Back-end development) وأيضا قواعد البيانات (databases).
ولمن لا يعرف "الأنجلير" فهي إحدى إطارات العمل المبنية على جافا سكريبت (Javascript) والتي تساعد المبرمجين في بناء تطبيقات ومواقع إنترنت تفاعلية وقوية، ولعل أهم ما يميزها هو أنها مدعومة رسميا من شركة جوجل (Google)، بالإضافة إلى دعم مجتمع مبرمجين كبير ومتطور، كما أنها تساعد على بناء تطبيقات أكثر تنظيما من حيث هيكلية التطبيق.
لكن بالرغم من قوة "الإنجليز" إلا أنها كانت تفتقد ميزة قوية -في رأيي- وهي دعم استدعاء الصفحات من الخادم (SSR - Server Side Render) وتعني ببساطة أن يتم استدعاء جزء من صفحة الموقع على الخادم عند زيارتها لأول مرة، وهو أمر مفيد جدا لفهرسة الموقع ضمن نتائج محركات البحث، وايضا عند ارسال ومشاركة رابط الموقع على المواقع والتطبيقات الإجتماعية، حيث يظهر عرض مصغر مع الرابط للعنوان وصورة - إن وجدت، مما يحسن كثيرا من تجربة الإستخدام، وتعريف الزائر بمحتوى الرابط قبل الضغط عليه وزيارته فعليا.
لعل افتقادى لهذه الميزة تحديدا في "أنجلير" هو ما دفعنى للبحث عن بدائل أخرى، إلى أن وجدت نوكست (Nuxt)، فهي وإن كانت هى الأخرى مبنية على "جافا سكريبت" إلا أنها تتميز بالعديد من المزايا الإضافية، أذكر أهمها فيما يلى:
مبنية على إطار العمل فيو (Vue js)
ولمن لا يعرف "فيو" فهي إحدى إطارات العمل المنافسة بقوة "للأنجلير" في مجال بناء الواجهات الأمامية (Front-End)، وتتميز بالبساطة وسهولة تعلمها مقارنة "بالأنجلير"، كما أن لديها أيضا مجمع قوى من المبرمجين في أنحاء العالم، بالتالى "فالنوكست" لم تبنى من الصفر لكنها أضافت نقاط قوتها على أداة قوية بالفعل مثل "الفيو".
دعم تجربة استخدام أفضل للمبرمجين (DX)
ربما قد تكون سمعت عن مصطلح تجربة الاستخدام للمستخدم (User Experience)، والذى يعنى تقديم تجربة استخدام أسهل وأفضل لمستخدمي التطبيقات ومواقع الانترنت من خلال تنفيذ واجهات مريحة وأسهل في الاستخدام، لكني مع "نوكست" لأول مرة تعرفت على مصطلح تجربة الاستخدام للمبرمجين (Developer Experience) فهي تسعى لتبسيط مهام المبرمج أثناء عمله على التطبيق، مما يساعده على أداء عمله بأقل وقت ومجهود، على سبيل المثال لا تحتاج عمل أدراج (Import) المُكوِّنات (Components) التي تستخدمها في الصفحة، فأى "مُكوِّن" تُنشئه في التطبيق يتم التعرف عليه بشكل عام (Global) في باقي صفحات الموقع بصورة تلقائية.
دعم برمجة الخادم (Back-end Development)
على خلاف "الأنجلير" كأحد إطارات العمل على الواجهة الأمامية تتميز "نوكست" بداية من الإصدار الثالث بدعم برمجة الخادم، حيث يمكنك حرفيا إنشاء مجلدات على الخادم، وعمل اتصال مع قاعدة البيانات، وإنشاء نقاط وصول (APIs - Application Programming Interfaces).
هذه الإمكانيات تساعد المبرمج على تنفيذ التطبيق بشكل كامل، بما يشمل برمجة الواجهة الأمامية وبرمجة الخادم والاتصال بقاعدة البيانات، جميع ما سبق من خلال نفس المستودع البرمجي للتطبيق (Git repository) بما يحقق أقصى تكامل بين جوانب التطبيق.
جميع المزايا السابقة وغيرها الكثير هو ما شجعني على جعل "نوكست" هى اختيارى الأول عند بدء العمل على أي تطبيق، والجدير بالذكر أن موقعي الخاص الذي تقرأ منه حاليا هذا المقال قد تم تنفيذه بالكامل - بفضل الله - باستخدام "نوكست".
على الجانب الآخر لا يعني اختياري "لنوكست" أن أعتزل "الأنجلير" بشكل كامل، فالشركة التي أعمل بها لديها مشروعات وتطبيقات تم تنفيذها "بالأنجلير"، بالتالى لا غنى عن استمرار متابعتي لجديد "الأنجلير" وتطبيق ما تعلمته أولا بأول.
ولا أنكر أيضا أن من أسباب سرعة تعلمي "للنوسكت" - بعد توفيق الله عز وجل - هو خبرتي السابقة في تعلم واستخدام "الأنجلير" في تنفيذ التطبيقات المطلوبة مني.
بقيت نقطة واحدة أحب أضافتها لهذا المقال، وهى بخصوص الأداة رياكت (React js) للأسف لم يتح لي فرصة استخدامها أو تجربتها، لذا لا يمكنني إضافتها لهذه المقارنة، فطالما أن "النوكست" و"الأنجلير" تساعدانى على انجاز العمل المطلوب لم أشعر أنى في حاجة لتعلم أو إضافة أداة جديدة.
وختاما أتمنى أن يكون هذا المقال قد حاز على إعجابك، كما أرجو ألا تبخل عليَّ بأيه نصائح أو ملاحظات تراها مناسبة أن تشاركها معى.
وفقنى الله وإياك إلى كل خير ،،