در این مقاله به برخی از ویژگیهایی که باعث می شود انگولار منحصر به فرد باشد و از سایر فریمورکها متمایز شود، اشاره میکنیم و این مقاله به معنای مقایسه ریاکت با انگولار نیست. در حال حاضر تعداد مقالات و پستهای زیادی در این مورد وجود دارد. اما به نظر من، اگر x را به جای y انتخاب کنید، بعضی چیزها را از دست دادهاید، بنابراین این مقاله را برای راهنمایی شما در نظر گرفتیم تا ویژگیهایی را که میخواهید از دست بدهید در صورت انتخاب هر کدام از این دو فریمورک، در مورد آن اطلاع کافی داشته باشید.
قبل از شروع، میدانم که بسیاری از این ویژگیها میتوانند با استفاده از کتابخانههای مختلف به ریاکت اضافه شوند، اما این رویکرد با موضوعات مختلفی همراه خواهد بود از جمله:
- این کتابخانه برای مطابقت با آخرین نسخه ریاکت به روز نشده باشد.
- نویسنده کتابخانه تصمیم به حذف آن بگیرد.
- ممکن است ریاکت ارتقا پیدا کند و این کتابخانه منسوخ شود.
بهتون پیشنهاد میکنیم که دوره آموزش انگولار وبسایت راکترو از دست ندید.(کلیک کنید)
DI (Dependency Injection)
بدون شک تزریق وابستگی یکی از ویژگیهای مستقل است که از سایر فریمورکها یا کتابخانهها متمایز است، بنابراین ما آن را در صدر لیست قرار میدهیم.
تزریق وابستگی چیست؟
در مهندسی نرمافزار، تزریق وابستگی روشی است که در آن یک شی، اشیاء دیگری را که به آن بستگی دارند دریافت میکند. این اشیاء وابستگی نامیده میشوند. معمولا در رابطه "using"، شی گیرنده کلاینت نامیده میشود و شی منتقل شده سرویس نامیده میشود.
تزریق وابستگی در انگولار چیست؟
- کلاس Singleton (لحظه ورود یک کلاس به یک نمونه "تنها" را محدود میکند).
- تست آسان یکپارچه (شما اشیاء مورد نیاز را به سازنده منتقل خواهید کرد).
- اشتراک گذاری state بین کامپوننتها.
- به اشتراک گذاری توابع از طریق برنامه.
ریاکت چه چیزی را مانند تزریق وابستگی در انگولار انجام میدهد؟
برای به اشتراک گذاشتن state، یک بستر وجود دارد که راهی برای عبور دادهها از درخت اجزا را فراهم میکند، بدون آنکه بخواهید در هر سطح به صورت دستی منتقل شوید. این موضوع مشکل اسکوپ را حل نمیکند زیرا همه مفاهیم حالت گلوبال دارند و فقط به تقسیم state محدود میشوند.
برای به اشتراک گذاشتن قابلیتها میتوانید از کلاس استفاده کنید اما اگر میخواهید آن را بارگیری کنید در صورت نیاز به آن مانند انگولار میتوانید آن را خودتان بسازید زیرا تیم ریاکت چنین راهحلی برای این مشکل ارائه نمیدهد.
کامپوننت چند فایلی یا تک فایلی
انگولار محدودیتی برای نوشتن کامپوننت در یک فایل یا چند فایل هم برای html، هم برای css و هم برای جاوا اسکریپت ندارد، از طرف دیگر شما را مجبور میکند که html خود را با سینتکس jsx بنویسید که در داخل تابع رندر خوب است. اگر این کامپوننت بسیار کوچک باشد و منطق زیادی پشت آن نباشد، به محض این که این مؤلفه در مقیاس بالا قرار بگیرد، مشکلساز خواهد شد.
اگر بخواهید یک جزء طراحی شده با قابلیت استفاده مجدد را بسازید، انگولار راهحلهای جاسازی شدهای را برای css ارائه میدهد که از طرف دیگر تیم ریاکت راهحلی پیشنهاد نمیکند و یک بار دیگر شما را ترک میکند تا تصمیم بگیرد که راهحلهای خود را انتخاب کنید یا گزینههای مختلفی را برای انتخاب یکی از آنها بکار بگیرید.
این نکته را نیز در نظر داشته باشید که JSX اچتیام ال نیست و نمیتوانید مستقیما از برخی خصوصیات html استفاده کنید.
وب کامپوننتها به طور کامل توسط ریاکت پشتیبانی نمیشوند
در اینجا نمیخواهیم توضیح دهیم که وب کامپوننت چیست، لطفا خودتان جزییات بیشتر را مطالعه کنید.
ریاکت و وب کامپوننتها برای حل مشکلات مختلف ساخته شدهاند. کامپوننتهای وب برای اجزای قابل استفاده مجدد کپسوله میشوند، در حالی که ریاکت یک کتابخانه اعلانی ارائه میدهد که DOM را با دادههای شما همگام میکند. اینها دو هدف مکمل هستند. به عنوان یک توسعه دهنده، شما مختار هستید برای استفاده از ریاکت در کامپوننتهای وب خود استفاده کنید یا از کامپوننتهای وب در ریاکت یا هر دو استفاده کنید.
به عنوان مثال مطابق با این مستندات کاملا صادقانه نیست اگر به عنوان مثال از تگ ویدیویی استفاده میکنید و برای گوش دادن به پخش یا وقفه از DOM استفاده میکنید، برای تعامل با DOM باید از یک ref استفاده کنید که مانند نسخههای قدیمی جیکوئری است.
تیم ریاکت توصیه میکند که کامپوننت وب را با کامپوننت ریاکت ترکیب کنید، فقط برای اینکه با راهحلهای دیگری کار کند.
فرمها
در حال حاضر هیچ برنامه وب یا وبسایتی وجود ندارد که فرم یا حداقل نوار جستجو نداشته باشد و فکر میکنم فرم واکنشگرا یکی از ویژگیهای درخشان است که فقط در انگولار وجود دارد که بسیاری از مشکلات را به روشی زیبا و قابل گسترش حل میکند. این ویژگی شگفت انگیز برای ساختن فرمهای پیچیده و هم برای سفارشی کردن آن بسیار آسان است.
برای مثال فرم واکنشگرا در انگولار (فرم لاگین)
const form = new FormGroup({
email: new FormControl('', [
Validators.required,
Validators.email
]),
password: new FormControl('', [
Validators.required,
noWhitespaceValidator // custom validator
]),
});
onSubmit() {
if (this.form.valid) {
const formValue = form.value; // get the form data
// call the server or do what you want
// ...
}
}
<form [formGroup]="form" (ngSubmit)="onSubmit()" autocomplete="off">
<mat-form-field>
<input
matInput
placeholder="Email"
type="email"
formControlName="email"
autocomplete="off"
/>
</mat-form-field>
<mat-form-field>
<input
matInput
placeholder="Password"
type="password"
formControlName="password"
autocomplete="off"
/>
</mat-form-field>
<button mat-button type="submit">Login!</button>
</form>
همانطور که مشاهده میکنید نگهداری و خواندن آن بسیار آسان است. قصد نداریم شکل واکنشگرا را با جزئیات توضیح دهیم اما در اینجا لیستی از آنچه باعث میشود از ویژگیهای برجسته استفاده شود، آورده شده است.
- فرمهای واکنشی یک رویکرد مدل هدایت شده برای دستیابی به ورودیهای فرم را ارائه میدهد که مقادیر آنها با گذشت زمان تغییر میکند.
- ورودیهای واکنشپذیر قابل مشاهده هستند.
- اعتبارسنجهای سفارشی.
- اعتبارسنجی Async (برای مثال: چک کردن با نام سرور در صورت موجود بودن نام کاربری).
- اعتبارسنجی پیچیده (به عنوان مثال: بررسی تطبیق رمز عبور وارد شده با رمز موجود در دیتابیس).
انگولار CLI
انگولار CLI تولید کننده schofield نیست و اسکریپتهایی که فقط فراتر از آن هستند؛ در اینجا برخی از ویژگیها وجود دارد.
- همانطور که در cmd پیکربندی کردهاید، فایلهای کامپوننت را مستقیما از CLI با دادههای قبل از پر کردن تولید کنید.
- پروژه انگولار خود را با یک فرمان ارتقا دهید.
- با استفاده از نقشههای انگولار پروژه خود را ایجاد کنید.
- پشتیبانی از sass، less و stylus بدون نیاز به تنظیم اضافی یا ویرایش بسته وب.
جمعبندی
بسیاری از مردم بیشتر به آنچه از دست می دهند علاقه دارند و نه آنچه که کسب می کنند تا از تصمیمات خود پشیمان نشوند. این مانند تجارت کردن است که شما برنده خواهید شد یا ورشکست میشوید. هیچ راهحل مناسبی برای همه مشکلات در زندگی و یا در برنامه نویسی وجود ندارد، اما پس از لیست کردن این ویژگیها میتوانید فریمورک انگولار را با استفاده از html معمولی مشاهده کنید، بنابراین بیشتر راهحلها و ویژگیها برای پیشرفت وجود دارد. از طرف دیگر، بستر وب تمرکز خود را برای همگامسازی دادهها با UI نشان میدهد.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید