چه زمانی از اپلیکیشن های SPA استفاده کنیم؟

در این قسمت می خواهیم به طور مفصل تری در رابطه با سناریوهایی صحبت کنیم که در آن ها استفاده کردن از اپلیکیشن های SPA که مخفف Single page Application می باشد توصیه می‌شود.

زمانی که اپلیکیشن شما می بایست یک یوزر اینترفیس غنی با بسیاری از قابلیت های مدرن را داشته باشند.

همه ما می‌دانیم که اپلیکیشن های SPA می‌توانند عملکردهای سمت کلاینت بسیار غنی و فوق العاده ای را بدون نیاز به بارگذاری page ها در زمان تعامل کاربر با برنامه و یا Navigate کردن به قسمت های مختلف برنامه داشته باشند. اپلیکیشن‌های SPA می توانند سریع تر بارگذاری شده و داده های مورد نیاز خود را در background دریافت کنند. علاوه بر این موضوع، تعاملات کاربر از قبیل کلیک کردن بر روی یک دکمه عملا نیازی به Reload و یا بارگذاری شدن دوباره صفحات ندارند و از این جهت این نوع از اپلیکیشن ها اصطلاحاً responsive تر هستند. اپلیکیشن هایی که با سبک SPA پیاده سازی می شوند از قابلیت Incremental update نیز استفاده می‌کنند. بر اساس این قابلیت کاربر می تواند فرم های موجود در برنامه را نه به صورت کامل و فقط بخشی از آنها را تکمیل کرده و سپس بدون submit کردن یک فرم تغییرات خود را ذخیره کند. اپلیکیشن های SPA از دیگر رفتارهای غنی client side از قبیل drag-and-drop به سادگی پشتیبانی می کنند. البته پیاده‌سازی کردن این قابلیت در وب اپلیکیشن های مبتنی بر سرور نیز وجود دارد اما در اپلیکیشن‌های SPA کار بسیار ساده تر است. اپلیکیشن هایی که با سبک SPA پیاده سازی می شوند می توانند در حالت غیر متصل و یا disconnected mode نیز عمل کنند. به عبارت دیگر زمانی که اتصال به اینترنت و یا شبکه موجود نیست این اپلیکیشن‌ها عملیاتی هستند و تغییرات کاربر را در یک client-side model ذخیره کرده و در زمان ایجاد شدن یک اتصال به سرور با یک مدل در سمت سرور همگام سازی و یا synchronize می کنند. در پایان از اپلیکیشن‌های SPA باید زمانی استفاده شود که نیازمندی‌های اپلیکیشن از نظر user interface کاملاً غنی، بیش از آن چیزی باشد که فرم های ساده HTML در اختیار قرار می دهند.

ذکر این نکته نیز ضروری است که اپلیکیشن‌های SPA گاهی نیاز است که برای پیاده سازی کردن قابلیت های پیشفرض وب اپلیکیشن های سنتی، کدهای جدید دریافت کنند. برای مثال برای نشان دادن یک url بامعنا در آدرس بار مرورگر که به صورت پیش فرض در یک وب اپلیکیشن سنتی لحاظ می گردد، در اپلیکیشن‌های SPAنیاز به پیاده‌سازی دارند. امکان bookmark کردن و یا اصطلاحاً deep link کردن یک url در اپلیکیشن های SPA نیز ممکن است نیاز به کدنویسی داشته باشد. دراپلیکیشن‌های SPA استفاده کردن از دکمه های back و forward مرورگر، نیاز به کدنویسی خواهد داشت. این موضوع در وب اپلیکیشن های سنتی مبتنی بر سرور به صورت پیشفرض پیاده سازی می شوند.

زمانی که تیم توسعه نرم‌افزار شما با زبان جاوا اسکریپت و تایپ اسکریپت آشنایی دارد.

همانطور که گفته شد توسعه دادن اپلیکیشن ها با روش SPA نیازمند آشنایی و تسلط کامل بر روی زبان های جاوا اسکریپ و TypeScript و البته تکنیک‌ها و کتابخانه های برنامه نویسی سمت کلاینت می باشند. تیم توسعه نرم‌افزار شما می بایست در نوشتن کدهای سمت کلاینت با زبان های جاوااسکریپت و البته فریم ورک هایی از قبیل Angular آشنایی کامل داشته باشد تا بتوانند این برنامه‌ها را توسعه بخشند. در رابطه با یادگیری Angular توصیه می‌کنیم از بسته ی آموزش ویدئویی شروع به کار با Angular 2 دیدن کنید و در رابطه با یادگیری زبان TypeScript می توانید از بسته ی آموزش ویدئویی شروع به کار با TypeScript و بسته ی آموزش ویدئویی آموزش پیشرفته TypeScript و بسته ی آموزش ویدئویی آموزش عمیق TypeScript استفاده بفرمایید.

زمانی که اپلیکیشن شما یک API برای کلاینت های Internal و Public دارد.

از آنجایی که وب اپلیکیشن های SPA تماماً از Web API ها برای انجام عملیات خود و دریافت کردن داده ها استفاده می‌کنند، اگر یک Web API از قبل موجود دارید، توسعه دادن یک نرم‌افزار به روش SPA کم هزینه تر خواهد بود. دلیل این موضوع نیز در این است که دیگر نیاز به پیاده‌سازی logic برنامه در خود برنامه نیست و برنامه SPA به سادگی می تواند از logic پیاده سازی شده در API استفاده کند. اپلیکیشن های SPA عملاً تماماً از API برای کوئری گرفتن از داده ها و آپدیت کردن آنها بر اساس عملیات کاربر استفاده می کنند. بنابراین در صورت وجود داشتن یک API از قبل موجود گزینه بهتر استفاده کردن از اپلیکیشن های SPA باشد. در رابطه با یادگیری API ها نیز بسته های آموزشی متعددی بر روی وبسایت پرووید قرار گرفته است. برای مثال می توانید از بسته ی آموزش ویدئویی ساخت Web API در ASP.NET Core 2.0 و یا بسته ی آموزش ویدئویی پیاده سازی مباحث پیشرفته RESTful API در ASP.NET Core 3 دیدن کنید.