برنامههای کاربردی تک صفحهای
با ورود تکنولوژی Ajax به دنیای وب، سایتها به سمتی حرکت نمودند که دیگر محتوای خورد را بدون بارگذاری مجدد در اختیار کاربران قرار دهند. استفاده از این فنآوری در برنامههای تحت وب بسیار ساده بوده و به همین دلیل استقبال خوبی از آن به عمل آمد. یکی از روشها برای استفاده از Ajax در بارگذاری محتوا در سایت بدون بارگذاری مجدد صفحه، این است که محتوا در سمت سرویسدهنده ایجاد میشود و سپس با اولین درخواست کاربر، آن محتویات به طور کامل در سمت سرویسگیرنده بارگذاری میگردد. مشکل اساسی این روش وابستگی شدید بین لایه کسب و کار و لایه نمایش بود، به گونهای که با کوچکترین تغییر در لایه نمایش باید تغییرات اساسی در لایه کسب و کار نیز انجام میگردید. روش دیگر استفاده از ساختار دادهای منسجم مانند XML یا JSON بود. در این روش خروجی ما از سمت سرویسدهنده همیشه ثابت است و اگر قصد تغییر در لایه نمایش را داشته باشیم، دیگر نیازی به ایجاد تغییر در لایه کسب و کار وجود ندارد. در واقع دادههای خروجی توسط جاوا اسکریپت پردازش میشود و محتوای HTML مورد نیاز به صورت پویا ایجاد میشود و همان لحظه به عنوان محتویات سایت نمایش داده میشود. مشکل اساسی این روش عدم وجود ساختار منسجم جهت پردازش دادههای خام سمت سرویسدهنده میباشد.
در سال ۲۰۰۳ درباره ایجاد برنامههای تکصفحهای بحثهای اولیه مطرح شد، تا اینکه در سال ۲۰۰۵، Steve Yen تعریف مشخصی از برنامههای تک صفحهای ارائه نمود. اگر بخواهیم به صورت ساده SPA را توصیف کنیم، باید بگوییم که “برنامه تکصفحهای که به اختصار آن را SPA مینامند، به برنامههای تحت وبی اتلاق میشود که تنها دارای یک صفحه هستند و در واقع در این روش تمامی کدهای مورد نیاز سمت سرویسگیرنده (کاربر) در یک صفحه نوشته میشود. در این برنامهها دیگر نیازی به بارگذاری مجدد برای انجام برخی درخواستها نیست و کدهای مورد نیاز در بارگذاری اولیه و یا در زمان مورد نیاز با استفاده از Ajax بارگذاری میشود.”
پس در واقع در یک SPA منابع موجود به صورت پویا بارگذاری میشود و در زمان لازم به صفحه اضافه میشود. صفحه هیچگاه در زمان پردازش مجدداً بارگذاری نمیشود و هیچگاه کنترل به صفحه دیگر منتقل نمیشود. در SAPها بهجای جایگزین شدن صفحه، یک نما در همان صفحه تغییر میکند. شکل۱ تفاوت بین روشهای سنتی و روش SPA را نشان میدهد.با روی کار آمدن مفهوم SPA کتابخانههایی ایجاد شدند که قابلیتهای زیادی داشتند و امکان پیادهسازی آسان SPA را فراهم مینمودند. این کتابخانهها در پیادهسازی انواع الگوها در لایه JS نظیر MVP، MVVM و MVC کمک میکنند. از مهمترین مزیت این کتابخانهها میتوان به ساختار بخشیدن آنها به لایه جاوا اسکریپت و در نهایت سادهتر شدن توسعه وبسایتها اشاره نمود. معروفترین کتابخانههایی که وجود دارند عبارتند از EmberJS ، BackboneJS ،KnockoutJS ، و AngularJS .