1. Code
  2. JavaScript
  3. Angular

 كيفية بناء واجهة مستخدم تسجيل الدخول باستخدام التصميم الزاوي والمادي

هذا البرنامج التعليمي سوف نظهر لك كيفية بناء سجيل دخول جميل وتسجيل واجهة المستخدم مع مواد زاويية.  سننظر في مكونات تصميم المواد المختلفة وكيف يمكن استخدامها لتحقيق تطبيق ذا مظهر احترافي. يمكن العثور على الرمز الكامل لهذا البرنامج التعليمي في الريبو GitHub خاصتنا.
Scroll to top

Arabic (العربية/عربي) translation by osamagaradh (you can also view the original English article)

هذا البرنامج التعليمي سوف نظهر لك كيفية بناء سجيل دخول جميل وتسجيل واجهة المستخدم مع مواد زاويية.  سننظر في مكونات تصميم المواد المختلفة وكيف يمكن استخدامها لتحقيق تطبيق ذا مظهر احترافي. يمكن العثور على الرمز الكامل لهذا البرنامج التعليمي في الريبو GitHub خاصتنا.

الشروع في العمل

وسوف نبدأ بإنشاء تطبيق زاويي. ونأمل أن لديك بالفعل Node.js ومؤشرها الزاويي مثبتة في بيئة العمل الخاصة بك.

استخدم الأمر التالي لإنشاء تطبيق زاوي جديد.

1
# create a new Angular project under the name responsive-angular-material

2
ng new registration-login-angular-material

ينشئ هذا الأمر كافة الملفات المطلوبة لتطبيق زاوي bootstrap. سوف تكون الخطوة التالية لإضافة "المواد الزاوي" في التطبيق الخاص بك.

1
cd responsive-angular-material/
2
3
#install angular material 
4
ng add @angular/material

إنشاء مكونات باستخدام CLI الزاوي

 المكونات في Angular هي لبنات البناء للتطبيق. على الرغم من إمكانية إنشاء المكونات يدويًا ، إلا أن Angular CLI يجعل من السهل جدًا إنشاء مكونات تحتوي على كل شفرة البدء الضرورية تلقائيًا. لإنشاء عنصر في CLI الزاوي، يمكنك ببساطة تشغيل الأمر التالي:

1
# MyComponent is the name of your component

2
ng g component MyComponent

وسيكون للتطبيق لدينا العناصر التالية:

  • مكون التسجيل
  • عنصر تسجيل الدخول

دعونا نولد تلك المكونات الآن.

1
#registration component

2
ng g component RegistrationComponent
3
4
#login component

5
ng g component LoginComponent

إضافة موضوع

تكمن جمال Angular Material في أنها تأتي مع مظاهر مدمجة مسبقًا ، بحيث يمكنك بسهولة إضفاء مظهر وشكل التطبيق بسهولة عن طريق توصيل بعض مقتطفات الشفرة البسيطة إلى تطبيقك. لإضافة مظهر ، ما عليك سوى استيراده إلى style.css.

1
/*style.css*/
2
@import "~@angular/material/prebuilt-themes/indigo-pink.css";

بناء واجهة المستخدم

نريد أن تحتوي واجهة المستخدم لدينا على شريط تنقل مع روابط للتسجيل وتسجيل الدخول. لذلك سننشئ شريط تنقل به زرين يرتبطان بمكونات التطبيق

لإنشاء شريط الأدوات والأزرار، يمكنك استخدام <mat-toolbar>و <mat-button>المكونات على التوالي.</mat-button> </mat-toolbar>

قم بالمضي قدما وإضافة التعليمات البرمجية ل HTML لواجهة المستخدم في src/app/app.component.html. لاحظ أننا أضفنا أيضا وصلات للطرق.

1
<!--The content below is only a placeholder and can be replaced.-->
2
<mat-toolbar color="primary">
3
   <mat-toolbar-row>
4
     <!--  <span>HOME</span> -->
5
      <span><a href="/">HOME</a></span>
6
      <span class="spacer"></span>
7
      <a mat-button routerLink="/register">Register</a>
8
      <a mat-button routerLink="/login">Login</a>
9
   </mat-toolbar-row>
10
</mat-toolbar>

التالي،سوف نضيف بعض التصميم لواجهة المستخدم لدينا. قم بفتح app.component.css وبإضافة أنماط CSS التالية.

1
.spacer {
2
  flex: 1 1 auto;
3
}

استيراد مكونات مادية زاويية

 تحتاج أيضًا إلى استيراد الوحدات النمطية من @ الزاوية / المادة. يمكنك اختيار استيرادها من الوحدة النمطية الرئيسية أو إنشاء وحدة منفصلة تحتوي على جميع وحدات التصميم المادية.  وبما أننا سنعمل مع العديد من هذه الوحدات عند إنشاء بقية واجهة المستخدم ، فسوف نقوم بإنشاء وحدة منفصلة لكل المكونات. امضي قدما في إنشاء ملف جديد src / app / material.module.ts.

أضف الوحدات النمطية لمكونات <mat-toolbar> و </ mat-toolbar-row> و <mat-button> في الملف كما هو موضح أدناه.

1
import { NgModule } from  '@angular/core';
2
3
import {MatButtonModule,MatToolbarModule} from  '@angular/material';
4
5
6
@NgModule({
7
imports: [MatButtonModule,MatToolbarModule],
8
exports: [MatButtonModule,MatToolbarModule],
9
10
})
11
12
export  class  MyMaterialModule { }

بعد ذلك ، بدءًا من المكونات الأخرى في الشفرة ، نحتاج فقط إلى تضمين الوحدة التي أنشأناها للتو — app / app.module.ts — كما هو موضح أدناه.

1
// app/app.module.ts

2
import { MyMaterialModule } from  './material.module';
3
4
@NgModule({
5
  imports: [
6
    BrowserModule,
7
    BrowserAnimationsModule,
8
    MyMaterialModule,
9
10
  ],
11
})

 قم بإصدار الأمر ng serve لاختبار طلبك ، ويجب أن تشاهد منطقة ملاحة لطيفة مع روابط تسجيل وتسجيل الدخول.

navigation area with Register and Login linksnavigation area with Register and Login linksnavigation area with Register and Login links

تمكين التوجيه

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

1
import { RouterModule, Routes } from '@angular/router';
2
3
imports: [
4
    BrowserModule,
5
    BrowserAnimationsModule,
6
    MyMaterialModule,
7
    RouterModule.forRoot([
8
      { path: '', redirectTo: '/', pathMatch: 'full' },
9
      { path: 'register', component: RegistrationComponentComponent },
10
      { path: 'login', component: LoginComponentComponent },
11
      
12
    
13
    ]),
14
15
  ],

ستكون الخطوة التالية هي إضافة عنصر <router-outlet> </ router-outlet> يمكّن جهاز التوجيه الزاوي من معرفة مكان وضع المكونات الموجهة. من المفترض أن يبدو الملف app.component.html كما يلي: 

1
<!--The content below is only a placeholder and can be replaced.-->
2
<mat-toolbar color="primary">
3
   <mat-toolbar-row>
4
     <!--  <span>HOME</span> -->
5
      <span><a href="/">HOME</a></span>
6
      <span class="spacer"></span>
7
      <a  mat-button  routerLink="/register">Register</a>
8
      <a  mat-button  routerLink="/login">Login</a>
9
   </mat-toolbar-row>
10
</mat-toolbar>
11
<router-outlet></router-outlet>

لقد وضعنا منفذ جهاز التوجيه بحيث سيتم تقديم المكونات أسفل شريط التنقل.

تسجيل واجهة المستخدم

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

  •  مكون البطاقة (<mat-card>) - حاوية محتوى للنص والصور والإجراءات في سياق موضوع واحد
  • عنصر التسمية (<mat-label>) – يستخدم لتحديد تسمية لحقل النموذج
  • (عنصر الإدخال<input matinput>) – يقم بتحديد حقل إدخال
  • مكون حقل النموذج (<mat-form-field>) – يلتف بالعديد من مكونات الزاوي لصنع حقل نموذج
  • مكونخانة الاختيار(<mat-checkbox>) – خانة اختيار أصلي مع تصميم مواد معزز
  • مكون منتقي التاريخ (<mat-datepicker>) – منتقي تاريخ معزز

ولكن أولاً، دعونا استيرادها في src/app/material.ts.

1
import { NgModule } from  '@angular/core';
2
import {MatNativeDateModule,MatDatepickerModule,MatIconModule,MatButtonModule,MatCheckboxModule, MatToolbarModule, MatCardModule,MatFormFieldModule,MatInputModule,MatRadioModule,MatListModule,} from  '@angular/material';
3
import {MatDatepickerModule} from  '@angular/material/datepicker';
4
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
6
@NgModule({
7
imports: [MatNativeDateModule,MatDatepickerModule,MatIconModule,MatButtonModule,MatCheckboxModule, MatToolbarModule,FormsModule, MatCardModule,MatFormFieldModule,MatInputModule,MatListModule,MatRadioModule,],
8
9
exports: [MatNativeDateModule,FormsModule,
10
MatDatepickerModule,MatIconModule,MatButtonModule,MatCheckboxModule, MatToolbarModule, MatCardModule,MatFormFieldModule,MatInputModule,MatListModule,MatRadioModule,],
11
12
})
13
14
export  class  MyMaterialModule { }

 سنبدأ بـ <mat-card> ، الذي سيحتوي على كل المحتوى في واجهة مستخدم التسجيل. افتح registration-component.component.html وأضف الشفرة التالية.

1
<mat-toolbar>
2
   <span>Registration</span>
3
</mat-toolbar>
4
<mat-card class="my-card">
5
   <mat-card-content>
6
       
7
     <!-- CONTENT HERE -->
8
       
9
   </mat-card-content>
10
   <mat-card-actions>
11
     <!-- REGISTER BUTTON -->
12
   </mat-card-actions>
13
</mat-card>

بعد ذلك ، سنقوم بإضافة نموذج HTML داخل قسم المحتوى الذي سيحتوي على جميع حقول النماذج لدينا.

1
 <mat-toolbar>
2
  <span>Registration</span>
3
</mat-toolbar>
4
<mat-card class="my-card">
5
   <mat-card-content>
6
      <form class="my-form">
7
        <!--FORM FIELDS HERE-->
8
      </form>
9
   </mat-card-content>
10
   <mat-card-actions>
11
      <!--REGISTER BUTTON HERE-->
12
   </mat-card-actions>
13
</mat-card>

 بعد ذلك ، سنقوم بإضافة حقول نموذج للاسم الأول واسم العائلة والعنوان والبريد الإلكتروني وكلمة المرور. سنستخدم <mat-label> لإنشاء تسميات و <input matInput /> لإنشاء حقول الإدخال.

1
<mat-card-content>
2
  <form class="my-form">
3
     <mat-form-field class="full-width">
4
            <mat-label>First Name</mat-label>
5
            <input  matInput  placeholder="First name"  name="fname"  required>
6
         </mat-form-field>
7
         <mat-form-field class="full-width">
8
            <mat-label>Last Name</mat-label>
9
            <input  matInput  placeholder="Last Name" name="lname"  required>
10
         </mat-form-field>
11
         <mat-form-field class="full-width">
12
            <mat-label>Address</mat-label>
13
            <input  matInput  placeholder="Address" name="address"  required>
14
         </mat-form-field>
15
         <mat-form-field class="full-width">
16
            <mat-label>Email</mat-label>
17
            <input  matInput  placeholder="Email" name="email">
18
         </mat-form-field>
19
         <mat-form-field class="full-width">
20
            <mat-label>Password</mat-label>
21
            <input  matInput  placeholder="Password"  name="password">
22
         </mat-form-field>
23
  </form>
24
</mat-card-content>

 بعد ذلك ، سنضيف مربع اختيار للجنس ومنتقي التاريخ لتاريخ الميلاد. سوف نستخدم <mat-checkbox> و <mat-datepicker> التي قامت بتحسين تصميم المواد والتصاميم المتحركة.

1
 <section class="example-section">
2
      <label class="example-margin">Gender:</label>
3
      <mat-radio-group [(ngModel)]="gender">
4
        <mat-radio-button class="example-margin" value="after">Male</mat-radio-button>
5
        <mat-radio-button class="example-margin" value="before">Female</mat-radio-button>
6
        <mat-radio-button class="example-margin" value="before">Other</mat-radio-button>
7
      </mat-radio-group>
8
    </section>
9
10
    <mat-form-field>
11
      <mat-label>Date of Birth</mat-label>
12
  <input matInput [matDatepicker]="picker" placeholder="Choose a date">
13
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
14
  <mat-datepicker #picker></mat-datepicker>
15
</mat-form-field>

ستكون آخر بت زر بعد </ mat-card-content> لإرسال معلومات المستخدم.

1
<mat-card-content>
2
  <form class="my-form">
3
     <!--FORM FIELDS--> 
4
  </form>
5
</mat-card-content>
6
<mat-card-actions>
7
  <button mat-raised-button (click)="register()" color="primary">REGISTER</button>
8
</mat-card-actions>

تصميم النموذج

دعونا نضع بعض التصميم على أشكالنا لجعلها أكثر جاذبية. افتح create-account.component.css وأضف أنماط CSS التالية.

1
.my-form{
2
  min-width: 150px;
3
  max-width: 500px;
4
  width: 100%;
5
}
6
7
.full-width {
8
  width: 100%;
9
}

ستبدو واجهة مستخدم التسجيل كما يلي

Registration UI layoutRegistration UI layoutRegistration UI layout

بناء واجهة المستخدم لمكون الدخول

ستحتوي واجهة مستخدم تسجيل الدخول على المكونات التالية

  • مكون البطاقة (<mat-card>) - حاوية محتوى للنص والصور والإجراءات في سياق موضوع واحد
  • (عنصر الإدخال<input matinput>) – يحدد حقل إدخال

تمامًا كما فعلنا مع واجهة المستخدم للتسجيل ، سيكون لدينا مكون بطاقة مادة لاستضافة نموذج تسجيل الدخول

يتم عرض كود HTML الخاص بصفحة تسجيل الدخول ، والذي يحتوي على مدخلين لبيانات اعتماد البريد الإلكتروني وكلمة المرور.

1
<mat-toolbar>
2
  <span>LOGIN</span>
3
</mat-toolbar>
4
<mat-card class="my-card">
5
   <mat-card-content>
6
      <form class="my-form">
7
         <mat-form-field class="full-width">
8
            <mat-label>Email</mat-label>
9
            <input  matInput  placeholder="Email" name="email">
10
         </mat-form-field>
11
         <mat-form-field class="full-width">
12
            <mat-label>Password</mat-label>
13
            <input  matInput  placeholder="Password" name="password">
14
         </mat-form-field>
15
      </form>
16
   </mat-card-content>
17
   <mat-card-actions>
18
      <button mat-raised-button (click)="login()" color="primary">LOGIN</button>
19
   </mat-card-actions>
20
</mat-card>

واجهة المستخدم النهائية ستبدو كهذا:

Finished login UIFinished login UIFinished login UI

الاستنتاج

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