معماری *SPA (single page application)*، یک روش جدیدتر برای توسعه برنامه ها می باشد که توسط گوگل، فیس بوک و توئیتر و ... استفاده شد. یک برنامه *SPA *برنامه تحت وبی است که نیاز به بارگذاری تمام صفحه ندارد.
معماری *SPA (single page application)*، یک روش جدیدتر برای توسعه برنامه ها می باشد که توسط گوگل، فیس بوک و توئیتر و ... استفاده شد. یک برنامه *SPA *برنامه تحت وبی است که نیاز به بارگذاری تمام صفحه ندارد.
به عبارتی یک صفحه HTML تنها را لود می کند، همانطور که کاربر با app تعامل می کند توسط جاوااسکریپت (یا هر زبان سمت کلاینت دیگر) به صورت داینامیکی بروز میشود. زمانی که کاربر فرمی را پر و ارسال میکند بارگذاری کامل صفحه رخ نمیدهد. در عوض، جاوا اسکریپت در مرورگر ارسال فرم را با یک درخواست HTTP Post انجام میدهد و سپس صفحه را با نتیجه درخواست بروز میکند.

بنابراین بعد از اولین درخواست HTTP که صفحه HTML تنها را بازمیگرداند، درخواست های بعدی HTTP فقط برای داده هستند نه برای HTML Markup. تمام صفحات در مرورگر کلاینت با جاوااسکریپت رندر می شود.
در مقابل SPA، معماری کلاسیک *MPA (miltiple page application)* قرار دارد که نیاز به بارگذاری تمام صفحه در هر درخواست می باشد. این معماری معمولا در برنامه های بزرگ مورد استفاده قرار می گیرد.
در زیر به برخی مزایا و معایب هر دو معماری اشاره شده. هر کدام باید در جایگاه مناسب خود مورد استفاده قرار گیرند.
- SPA سریع می باشد. زیرا بیشتر منابع مثل (اسکریپتها، cssها و html) تنها یکبار لود می شوند و تنها داده است که نیاز به لود مجدد دارد
- توسعه SPA راحت است زیرا نیاز به نوشتن کد اضافه برای رندر (render) صفحات سمت سرور نمی باشد. همچنین برای توسعه برنامه مبتنی بر موبایل راحت تر است
- در SPA می توان صفحات بیشتری را کش (cache) کرده و به صورت افلاین استفاده نمود
- در SPA کدهای سرور و کلاینت، وابستگی کمتری به یکدیگر دارند
- SPA به دلیل استفاده حجم زیادی از اسکریپت ها، امنیت کمتری نسبت به MPA دارد و به حملات *XSS *اسیب پذیرتر می باشد
- مدیریت *SEO *در SPA سخت تر می باشد