ما هو AngularJS؟ Archiالبنية والميزات والمزايا

⚡ ملخص ذكي

يتم هنا شرح مقدمة AngularJS وهيكليتها وميزاتها للمبتدئين، وتغطي تصميم Model-View-Whatever، وربط البيانات ثنائي الاتجاه، والتوجيهات، وتطبيق أولي قابل للتشغيل، ونهاية الدعم طويل الأجل في ديسمبر 2021 والتي يجب على كل فريق معرفتها.

  • 🧩 فريف: AngularJS هو برنامج مفتوح المصدر Javaإطار عمل البرمجة النصية من Google لبناء تطبيقات من صفحة واحدة.
  • ؟؟؟؟ ️ الهندسة المعمارية: يقسم هذا الإطار التطبيق إلى طبقات النموذج والعرض والتحكم، والتي يطلق عليها فريقه اسم Model-View-Whatever.
  • 🔗 ربط البيانات: يحافظ الربط ثنائي الاتجاه على تزامن النموذج والعرض دون الحاجة إلى تحديث يدوي لرمز DOM.
  • 🏷️ توجيهات: تعمل العلامات المخصصة مثل ng-app و ng-model و ng-bind على توسيع HTML العادي بسلوك التطبيق.
  • ⚙️ التطبيق الأول: علامة نصية واحدة بالإضافة إلى ng-app و ng-controller تُنتج صفحة ترحيب تعمل في دقائق.
  • ⚠️ نهاية الحياة: Google انتهى الدعم طويل الأمد في 31 ديسمبر 2021، لذلك لن تصل أي تحديثات أمنية أخرى.
  • 🔄 الهجرة: ينبغي أن تستهدف المشاريع الجديدة Angular الحديثة، بينما تحتاج تطبيقات AngularJS القديمة إلى مسار ترقية مخطط له.

ما هو AngularJS؟

ما هو AngularJS؟

AngularJS هو إطار عمل مفتوح المصدر يعتمد على نموذج العرض والتحكم، مكتوب بلغة Javaسيناريوكان AngularJS أحد أشهر أطر عمل الويب في العقد الثاني من الألفية الثانية، ويُستخدم لتطوير...ping معظمها تطبيقات صفحة واحدة. تم تطوير هذا الإطار بواسطة مجموعة من المطورين من Google نفسها.

بفضل الدعم الكبير من Google وبفضل الأفكار الواردة من منتدى مجتمعي واسع، تم تحديث الإطار باستمرار طوال فترة استخدامه. كما أنه استوعب أبرز اتجاهات التطوير في تلك الفترة، ولهذا السبب لا يزال الكثير من برامج الإنتاج يعمل عليه حتى اليوم.

⚠️ هام: لقد وصل AngularJS إلى نهاية عمره الافتراضي. Google تم وضع AngularJS 1.x في فترة دعم طويلة الأمد مدتها ثلاث سنوات في 1 يوليو 2018، وتم تمديدها لمدة ستة أشهر بسبب جائحة كوفيد-19. وانتهى هذا الدعم في 31 ديسمبر 2021الإصدار 1.8.3 هو الإصدار النهائي، و Google لا توجد أي إصلاحات للأخطاء أو تحديثات أمنية أخرى لهذا الإصدار. تعلّم AngularJS لصيانة الأنظمة الحالية، واختر الإصدارات الحديثة. زاوي لأي شيء جديد.

من المهم توضيح نقطة مصطلحية واحدة مبكراً. يُوصف AngularJS على نطاق واسع بأنه إطار عمل MVC، وهو ما يُعد نقطة انطلاق مفيدة. مع ذلك، فضّل فريق AngularJS نفسه هذا التصنيف. MVW (عرض النموذج - أيًا كان)لأن وقت التشغيل يتصرف بشكل أقرب إلى نمط Model-View-ViewModel منه إلى نمط MVC الكلاسيكي. توثيق AngularJS يُطلق عليه اسم إطار هيكلي لتطبيقات الويب الديناميكية. بعد توضيح ذلك، إليك كيفية ترابط الأجزاء معًا.

AngularJS Architecture

تتبع AngularJS بنية MVC. يظهر مخطط إطار عمل MVC أدناه:

AngularJS Architecture

AngularJS Archiمخطط فني

لكل طبقة من الطبقات الثلاث مهمة واضحة:

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

عمليًا، نادرًا ما يقوم المتحكم بإدخال البيانات إلى العرض يدويًا. يراقب AngularJS النموذج ويُحدّث العرض تلقائيًا، وتعتمد هذه المزامنة التلقائية على مجموعة الميزات الموضحة لاحقًا.

مميزات AngularJS

يتميز AngularJS بالميزات الرئيسية التالية التي تجعله أحد أقوى أطر العمل في السوق:

  1. MVC - الإطار مبني على المفهوم الشهير لـ MVC (وحدة تحكم عرض النموذج). هذا هو نمط التصميم المستخدم في جميع تطبيقات الويب الحديثة. يعتمد هذا النمط على تقسيم طبقة منطق الأعمال وطبقة البيانات وطبقة العرض إلى أقسام منفصلة. يتم التقسيم إلى أقسام مختلفة بحيث يمكن إدارة كل قسم بسهولة أكبر.
  2. ربط نموذج البيانات – لستَ بحاجة لكتابة أكواد خاصة لربط البيانات بعناصر تحكم HTML. يُمكنك فعل ذلك باستخدام AngularJS بمجرد إضافة بضعة أسطر من الأكواد.
  3. كتابة كود أقل – عند إجراء الكثير من عمليات التلاعب بـ DOM Javaسيناريو كان من الضروري كتابة كود برمجي لتصميم أي تطبيق. لكن مع AngularJS، ستندهش من قلة الكود الذي ستحتاج لكتابته لمعالجة DOM.
  4. وحدة الاختبار جاهزون – المصممون في Google لم يقتصر الأمر على تطوير AngularJS فحسب، بل قام أيضًا بتطوير إطار عمل للاختبار يسمى "Karma" والذي يساعد في تصميم اختبارات الوحدة لتطبيقات AngularJS.
  5. تعليمات – علامات مثل ng-app، ng-model و ng-repeat إضافة سلوك إلى عناصر HTML العادية.

يسهل فهم هذه الميزات بمجرد تشغيلها، لذا فإن القسم التالي يبني صفحة عاملة من الصفر.

كيفية إعداد AngularJS وبناء تطبيقك الأول

إنّ قراءة معلومات حول ربط البيانات شيء، ومشاهدتها وهي تعمل شيء آخر. لا يحتاج AngularJS إلى مدير حزم، ولا إلى مُجمِّع، ولا إلى مُصرِّف، لذا فإنّ تطبيقك الأول عبارة عن ملف HTML واحد يعمل مباشرةً من القرص الصلب.

الخطوة 1) أضف مكتبة AngularJS

قم بتحميل المكتبة من شبكة توصيل المحتوى (CDN) باستخدام وسم برمجي واحد. الإصدار 1.8.3 هو الإصدار النهائي من AngularJS، لذا ثبّت صفحتك على هذا الإصدار تحديدًا بدلاً من إصدار متغير.

الخطوة الثانية) حدد جذر التطبيق باستخدام ng-app

يُحدد توجيه ng-app لمُترجم AngularJS الجزء الذي يملكه من الصفحة. يؤدي وضعه على وسم html إلى تسليم المستند بأكمله إلى إطار العمل، والقيمة التي تُحددها له تُشير إلى اسم الوحدة التي ستُنشئها.

الخطوة 3) ربط البيانات باستخدام ng-model وتعبير

يربط توجيه ng-model عنصر إدخال بخاصية في النطاق، ويقوم تعبير بين قوسين مزدوجين بطباعة نفس الخاصية في مكان آخر على الصفحة. ولأن الربط ثنائي الاتجاه، typing يقوم مربع الحوار بتحديث العنوان فورًا، دون الحاجة إلى معالج أحداث خاص بك.

الخطوة الرابعة) أضف وحدة تحكم للمنطق

وحدة التحكم هي سطح مستوٍ Javaدالة برمجية تستقبل كائن $scope وتُعيّن له قيمًا أولية. تسجيلها في الوحدة يجعلها متاحة لتوجيه ng-controller.

<!DOCTYPE html>
<html ng-app="helloApp">
<head>
  <meta charset="UTF-8">
  <title>AngularJS Hello World</title>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.3/angular.min.js"></script>
</head>
<body>

  <div ng-controller="GreetController">
    <input type="text" ng-model="name" placeholder="Enter your name">
    <h3>Hello {{ name }}!</h3>
  </div>

  <script>
    // Step 1: create the module named in ng-app
    angular.module("helloApp", [])
      // Step 2: register a controller on that module
      .controller("GreetController", function ($scope) {
        $scope.name = "World";
      });
  </script>
</body>
</html>

الخطوة 5) شغّل الصفحة وتحقق من النتيجة

احفظ الملف باسم index.html وافتحه في أي متصفح. سيظهر العنوان "Hello World!" في البداية، ثم يُعاد كتابته مع كل ضغطة مفتاح. لا يتطلب الأمر خادم ويب أو عملية بناء.

إذا لم يظهر شيء، فافتح وحدة تحكم المتصفح وتأكد من تحميل سكربت CDN وأن اسم الوحدة داخل ng-app يطابق تمامًا الاسم المُمرر إلى angular.module، لأن عدم التطابق سيؤدي إلى فشل العملية دون تنبيه. تُظهر هذه الصفحة الصغيرة بالفعل المزايا المذكورة لاحقًا.

مزايا AngularJS

فيما يلي مزايا AngularJS:

  • بما أنه إطار عمل مفتوح المصدر، يمكنك توقع أن يكون عدد الأخطاء أو المشكلات ضئيلاً.
  • الربط ثنائي الاتجاه – يحافظ AngularJS على تزامن طبقة البيانات وطبقة العرض. لست بحاجة إلى كتابة أي شيء إضافي Javaاستخدم كود البرمجة النصية للحفاظ على تزامن البيانات في كود HTML وطبقة البيانات. سيقوم AngularJS بذلك تلقائيًا. ما عليك سوى تحديد عنصر التحكم المرتبط بكل جزء من النموذج.
  • التوجيه – يمكن لـ AngularJS إدارة التوجيه، أي الانتقال من صفحة إلى أخرى. هذا هو الأساس الرئيسي لتطبيقات الصفحة الواحدة؛ حيث يمكنك الانتقال إلى وظائف مختلفة في تطبيق الويب الخاص بك بناءً على تفاعل المستخدم، مع البقاء ضمن نفس الصفحة.
  • يدعم AngularJS الاختبار، كلاهما وحدة التجاربو اختبار التكامل.
  • يُوسّع AngularJS لغة HTML من خلال توفير عناصر خاصة به تُسمى التوجيهات. التوجيهات، بشكل عام، عبارة عن علامات على عنصر DOM (مثل سمة، اسم عنصر، تعليق، أو فئة CSS) تُخبر مُصرّف HTML الخاص بـ AngularJS بربط سلوك مُحدد بهذا العنصر. تُساعد هذه التوجيهات في توسيع وظائف عناصر HTML الموجودة، مما يُعطي تطبيق الويب الخاص بك مزيدًا من الإمكانيات.

مزايا AngularJS

مميزات AngularJS

إن النظرة المتوازنة لا تقل أهمية، لذا سيتم توضيح المقايضات لاحقًا.

عيوب وقيود AngularJS

كل إطار عمل يقدم بعض التنازلات، وAngularJS ليس استثناءً. هذه هي القيود الأكثر شيوعًا التي تُبلغ عنها الفرق التي تُدير تطبيقات AngularJS:

  • لا يوجد طبقة أمان خاصة به – لا يوفر AngularJS المصادقة ولا الترخيص، لذلك يجب فرض كليهما على الخادم.
  • الاعتماد الكلي على Javaسيناريو – إذا قام الزائر بتعطيل Javaفي حالة البرمجة النصية، تعود الصفحة إلى ترميزها الأساسي ولا يتم عرضها.
  • أداء دورة الهضم – يتم اكتشاف التغييرات من خلال مقارنة القيم المراقبة بشكل متكرر، لذلك قد تبدو الصفحات التي تحتوي على عدة آلاف من الروابط بطيئة.
  • منحنى التعلم حاد – تتداخل النطاقات والتوجيهات والمصانع والخدمات ومقدمي الخدمات، وغالبًا ما توجد عدة طرق لتحقيق نفس النتيجة.
  • محرك بحث الرؤية – يتم تجميع طرق العرض في المتصفح، لذلك يلزم القيام بعمل إضافي مثل المعالجة المسبقة قبل أن تقوم برامج الزحف بفهرسة الصفحات بشكل موثوق.
  • لا توجد تحديثات أخرى – منذ 31 ديسمبر 2021، لم تعد هناك أي تصحيحات رسمية، لذلك تظل الثغرة الأمنية المكتشفة حديثًا دون إصلاح ما لم يقدم بائع تجاري حلاً لها.

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

AngularJS مقابل Angular: ما الفرق؟

كثيرًا ما يُخلط بين AngularJS وAngular لتشابه اسميهما، لكنهما إطاران عمل منفصلان بلغات وهياكل وإصدارات مختلفة. يشير AngularJS فقط إلى سلسلة الإصدارات 1.x الموضحة في هذه الصفحة. أما Angular فيشير إلى الإصدار 2 وكل إصدار لاحق، وهو إعادة كتابة كاملة صدرت عام 2016 ولا تزال قيد التطوير النشط. Code لا ينتقل بينهما دون عملية هجرة متعمدة.

أساس المقارنة AngularJS (1.x) Angular (2 والإصدارات الأحدث)
اللغة Javaسيناريو TypeScript
حجر البناء وحدات التحكم و$scope المكونات والفئات
معمار MVC / MVW القائم على المكون
دعم المحمول غير مصمم للاستخدام على الأجهزة المحمولة دعم الأجهزة المحمولة مدمج
حقن التبعية يعتمد على السلاسل النصية، وله عدة صيغ نحوية. هرمي، قائم على النوع
أدوات سطر الأوامر لم يتم توفير أي منها الزاوي CLI
حالة الدعم انتهت في 31 ديسمبر 2021 صيانة نشطة

النتيجة العملية لذلك هي أنه لا يمكن ببساطة إضافة وحدة تحكم AngularJS إلى مشروع Angular. تتطلب عملية الترحيل إعادة كتابة كل وحدة تحكم كمكون، لذا خطط لها كعمل هندسي حقيقي وليس مجرد ترقية. باختصار، تعامل مع AngularJS كمهارة صيانة، ومع Angular كمنصة للتطوير الجديد.

الأسئلة الشائعة

Google لا يقدم أي شيء إضافي. يتم بيع خدمات الدعم الممتد التجارية من قبل موردين مثل هيرودفزوهي التي توفر تحديثات أمنية للمؤسسات التي لا تستطيع الانتقال فوراً. أما البقية، فعليهم الاعتماد على حلولهم الخاصة.

نعم، بالنسبة للأجزاء المتكررة. مساعدون مثل مساعد الطيار جيثب قم بتحويل وحدات التحكم إلى مكونات و $scope إلى خصائص الفئة بسرعة. Archiلا تزال قرارات البنية والتوجيه وتصميم الحالة بحاجة إلى مراجع بشري.

تُجرى اختبارات الوحدة عادةً على الكارما مع الياسمين بالنسبة للتأكيدات. تم بناء كليهما جنبًا إلى جنب مع AngularJS، وتوفر وحدة ngMock خدمات وهمية بحيث يمكن اختبار وحدات التحكم بشكل منفصل.

عادةً نعم، لأن AngularJS مُستخدم بكثرة في بيانات التدريب. الخطأ الشائع هو اختلاف الإصدار: غالبًا ما تُجيب النماذج باستخدام صيغة Angular الحديثة. حدد إصدار 1.x صراحةً في موجه الأوامر، وتحقق من كل جزء مُولّد.

AngularJS 1.8.3 هو آخر إصدار تم نشره بواسطة Googleأي شرح يشير إلى الإصدار 1.2 أو 1.6 قديم، لذا ثبّت العمل الجديد على الإصدار 1.8.3 واقرأ الدليل الرسمي. حالة دعم الإصدار .

تلخيص هذه التدوينة بـ: