1. ما هي الوحدة النمطية؟
العديد من التطبيقات لها طريقة رئيسية للتهيئة ، والتحميل (هل معنى الأسلاك؟) وإطلاق التطبيقات. التطبيق الزاوي لا يتطلب الطريقة الرئيسية. بدلاً من ذلك ، توفر الوحدة النمطية نموذجًا تعريفيًا لغرض محدد ، وصف وصفي لكيفية بدء التطبيق. هناك العديد من المزايا للقيام بذلك:
2. الأساسيات
نحن حريصون على معرفة كيفية عمل وحدة Hello World Module. فيما يلي بعض الأشياء الرئيسية التي يجب الانتباه إلى:
وحدة API (http://code.angularjs.org/1.0.2/docs/api/angular.module)
لاحظ وحدة MyApp المذكورة في <html ng-app = "myapp"> ، والتي تتيح للمشغل بدء تشغيل وحدة myApp التي حددناها.
<! doctype html> <html lang = "zh-cn" ng-app = "myapp"> <head> <meta charset = "utf-8"> <title> أساسيات </title> <style type = "text/css"> .ng-cloak {display: none ؛ } </style> </head> <body> <viv> {{'Kitty' | GREET}} </div> <script src = "../ Angular 1.0.1.js" type = "text/javaScript"> </script> <script type = "text/javaScript"> var simplemodule = Angular.Module ("myapp" ، []) ؛ SimpleModule.filter ("Greet" ، function () {return function (name) {return "hello" + name + "!3. (الإعداد الموصى به) الإعداد الموصى به
على الرغم من أن المثال أعلاه بسيط ، إلا أنه ليس تطبيقًا واسع النطاق. نوصي بتقسيم التطبيق الخاص بك إلى وحدات متعددة على النحو التالي:
سبب هذا التقسيم هو أنه عندما نختبر ، نحتاج غالبًا إلى تجاهل رمز التهيئة الذي يجعل الاختبار صعبًا. من خلال تقسيم الكود إلى وحدات منفصلة ، من السهل تجاهل هذا الكود في الاختبارات. وبهذه الطريقة ، يمكننا التركيز أكثر على تحميل الوحدة النمطية المقابلة للاختبار.
ما سبق هو مجرد اقتراح ، يمكنك القيام به كما تريد.
4. تحميل الوحدة النمطية وتبعيات (تحميل الوحدة النمطية والتبعيات)
الوحدة النمطية عبارة عن مجموعة من التكوينات التي تنفذ الكتل المطبقة في عملية بدء التطبيق. في أبسط أشكاله ، يتكون من نوعين من الكتل:
1. كتل التكوين: تنفذ أثناء عملية تسجيل الموفر والتكوين. يمكن حقن مزود الثابت (الثابت؟) فقط في كتل التكوين. هذا لتجنب الحادث الذي يتم تنفيذ الخدمة قبل تكوين الخدمة.
2. تشغيل الكتل: تنفيذ بعد إنشاء الحاقن واستخدامه لبدء التطبيق. يمكن حقن الحالات والثوابت فقط في كتلة التشغيل. هذا لتجنب مزيد من تنفيذ تكوين النظام أثناء تشغيل البرنامج.
angular.module ('mymodule' ، []). config (function (enjectables) {// Provider injector // هنا مثال على كتلة التكوين // يمكننا الحصول على أشياء مثل هذه الأشياء // يمكننا حقن مقدمي الخدمات (وليس الحالات ، وليس الحالات) في كتلة التكوين}). Run (function (enjectables) {// estance injector // هنا مثال على كتلة التشغيل // يمكننا الحصول على مثل هذه الأشياء حسب الحاجة // يمكننا فقط حقن مثيلات (مثيلات) (وليس مقدمي الخدمات) في كتلة التشغيل}) ؛أ) كتل التكوين
هناك طريقة مريحة للقيام بذلك في الوحدة النمطية ، والتي تعادل كتلة التكوين. على سبيل المثال:
angular.module ('mymodule' ، []). القيمة ('a' ، 123). المصنع ('a' ، function () {return 123 ؛}). التوجيه ('Direcivename' ، ...). Filter ('filtername' ، ...) ؛ // مكافئة لـ Angular.module ('mymodule' ، []). config (function ($ proved ، $ compileProvider ، $ filterProvider) {$ provel.value ('a' ، 123) $ suver.factory ('a' ، function () {return 123 ؛}) $ compileprovider.directive ('direcivename' ، ...). $ filterpidider.register ('filtername' ، ...) ؛يتوافق الترتيب الذي يتم به تطبيق كتل التكوين مع الترتيب الذي يتم تسجيله به. بالنسبة للتعريفات الثابتة ، فهي حالة إضافية ، أي التعريف الثابت الموضوعة في بداية كتل التكوين.
ب) تشغيل الكتل (كتلة التطبيق)
تشغيل الكتلة هو الأقرب إلى الطريقة الرئيسية في الزاوي. كتلة التشغيل هي الرمز الذي يجب تنفيذه لبدء الطلب. سيتم تنفيذها بعد جميع تكوينات الخدمة وإنشاء الحقن. عادةً ما تحتوي الكتل على رمز يصعب على اختبار الوحدة. لهذا السبب ، يجب تعريف هذه الرموز في وحدة منفصلة بحيث يمكن تجاهلها في اختبارات الوحدة.
ج) التبعيات (التبعيات)
يمكن للوحدة أن تدرج الوحدات الأخرى التي تعتمد عليها. يعني الاعتماد على الوحدة النمطية أنه يجب تحميل الوحدة المطلوبة (موثوقة) قبل طلب الوحدة النمطية (الوحدة التي تحتاج إلى الاعتماد على الوحدات الأخرى ، الطالب) يتم تحميلها. بمعنى آخر ، سيتم تنفيذ كتلة التكوين للوحدة المطلوبة قبل كتل التكوين أو الوحدة المطلوبة ، وكيفية شرح أو هنا؟). وينطبق الشيء نفسه على كتلة التشغيل. لا يمكن تحميل كل وحدة إلا مرة واحدة ، حتى لو كانت هناك عدة وحدات أخرى تتطلب ذلك.
د) التحميل غير المتزامن (التحميل غير المتزامن)
الوحدة النمطية هي إحدى الطرق لإدارة تكوين $ enjuctor ، دون القيام بأي شيء من خلال تحميل البرامج النصية إلى VM. هناك الآن مشاريع جاهزة مصممة خصيصًا لتحميل النصوص ، ويمكن استخدامها أيضًا في Angular. نظرًا لأن الوحدات النمطية لا تفعل شيئًا أثناء التحميل ، يمكن تحميلها في VM بأي ترتيب. يمكن لوادر النصوص استخدام هذه الميزة لإجراء تحميل متوازي.
5. اختبار الوحدة
في أبسط أشكال اختبار الوحدة ، يتمثل أحدهما في إنشاء مجموعة فرعية من التطبيق في الاختبار ثم تشغيله. الأهم من ذلك ، نحن بحاجة إلى إدراك أنه لكل حاقن ، لن يتم تحميل كل وحدة إلا مرة واحدة. عادة ، يكون للتطبيق حاقن واحد فقط. ولكن في الاختبارات ، تحتوي كل حالة اختبار على حاقنها ، مما يعني أنه في كل VM ، سيتم تحميل الوحدة النمطية عدة مرات. سيساعد بناء الوحدة النمطية بشكل صحيح في اختبار الوحدة ، كما في المثال التالي:
في هذا المثال ، نستعد لافتراض أن الوحدة التالية محددة:
Angular.Module ('GreetMod' ، []). المصنع ('Alert' ، function ($ window) {return function (text) {$ window.alert (text) ؛} ؛}). value ('saltatteration' ، 'hello'). factory ('Greet' ، function (تنبيه ، تحية)دعونا نكتب بعض حالات الاختبار:
وصف ('myapp' ، function () {// تحميل الوحدة النمطية لاستجابة التطبيق ، ثم قم بتحميل وحدة الاختبار المحددة التي تعيد كتابة نافذة $ إلى إصدار mock. تتمثل في استبدال النافذة $ التالية. نافذة $) {Greet ('World') ؛ $ proced.value ("التنبيه" ، التنبيهات) ؛