Junior
Server tərəfi renderləşməsi və SPA (tək səhifəli tətbiq) arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Server tərəfli renderləşdirmə (SSR) və SPA (Single Page Application) veb tətbiqlərinin yaradılmasında fərqli yanaşmaları təmsil edir.
Server tərəfli renderləşdirmə (SSR):
- İlk HTML serverdə yaradılır və ilk sorğudan məlumatları əhatə edir.
- Brauzer tam hazır HTML alır və dərhal göstərə bilər.
- Səhifə yükləndikdən sonra, interaktivlik JavaScript (həzm) vasitəsilə əlavə olunur.
SSR-nin üstünlükləri:
- Daha yaxşı SEO optimizasiyası, çünki axtarış robotları hazır məzmunu görür.
- İlk çəkiliş vaxtının sürətləndirilməsi.
- Zəif cihazlarda daha yaxşı performans.
SSR-nin çatışmazlıqları:
- Server üzərində daha çox yük.
- Daha mürəkkəb tətbiq memarlığı.
SPA (Single Page Application):
- Brauzer minimal markup və JavaScript və CSS-ə linklər olan tək HTML fayl yükləyir.
- Bütün məzmun və tətbiq logikası JavaScript vasitəsilə yüklənir və göstərilir.
- Səhifələr arasında keçid yenidən yüklənmədən həyata keçirilir, DOM və brauzer tarixçəsi ilə manipulyasiya edilərək.
SPA-nın üstünlükləri:
- Səhifələr arasında hamar keçidlər.
- Təbii tətbiq hissi.
- İlk yükləmədən sonra server üzərində yükün azalması.
- React, Angular, Vue.js kimi çərçivələrlə rahat inkişaf.
SPA-nın çatışmazlıqları:
- SEO problemləri, çünki məzmun müştəri tərəfində yaradılır və axtarış robotları üçün əlçatan olmaya bilər.
- İlk çəkiliş vaxtının uzun olması, çünki brauzerin bütün JS paketini yükləməsi və icra etməsi lazımdır.
- Müştəri cihazının performans tələbləri yüksəkdir.
Əsas fərqlər cədvəldə:
| Xüsusiyyət | SSR | SPA |
|---|---|---|
| Məzmunun yaradılması | Serverdə | Müştəri tərəfində |
| İlk çəkiliş | Tezliklə | Daha yavaş (JS yüklənəndən sonra) |
| SEO | Yaxşı | Problemlər ola bilər |
| Server yükü | Yüksək başlanğıcda | Yüklənmədən sonra azalma |
| İstifadəçi təcrübəsi | Yenidən yükləmələr görünə bilər | Hamar keçidlər |
| İnkişaf çətinliyi | Daha yüksək | Daha aşağı (framework-lərlə) |
SSR nümunəsi (sadələşdirilmiş):
// Server tərəfi kodu (Node.js)
const express = require('express');
const app = express();
app.get('/', (req, res) => {
const data = { title: 'Salam, dünya!', content: 'Bu serverdən gələn məzmundur.' };
const html = `
<html>
<head>
<title>${data.title}</title>
</head>
<body>
<h1>${data.title}</h1>
<p>${data.content}</p>
<script src="/client.js"></script> // interaktivlik üçün skript
</body>
</html>
`;
res.send(html);
});
app.listen(3000, () => {
console.log('Server 3000 portunda dinləyir');
});
SPA nümunəsi (sadələşdirilmiş, konseptual):
<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
<title>Mənim SPA</title>
<script src="/bundle.js"></script> // bütün JS kodu
</head>
<body>
<div id="app"></div> // müştəri tərəfi render üçün mərkəz
</body>
</html>
SPA-də, bundle.js bütün komponentlərin və marşrutlaşdırmanın logikasını ehtiva edəcək.