Middle
Frontend və backend inkişafı arasında sərhədi harada çəkirsiniz?
sobes.tech Süni İntellekt
AI-dan cavab
API səviyyəsində sərhəd mövcuddur. Backend aşağıdakı işlərdən məsuldur:
- Biznes məntiqi
- Məlumatların idarə olunması (verilənlər bazası, keş)
- İcazə və autentifikasiya (əgər ayrıca xidmətdə deyilsə)
- API vasitəsilə məlumat və funksiyaların təminatı (REST, GraphQL və s.)
Frontend isə:
- İstifadəçi interfeysi (HTML, CSS)
- İstifadəçi ilə qarşılıqlı əlaqə (JavaScript/Ruby ilə Hotwire və s.)
- Backend API vasitəsilə məlumatların alınması və funksiyaların çağırılması
- Backend-dən alınan məlumatların təqdimatı
Klassik yanaşmada, backend HTML səhifələri yaradır, frontend isə sadəcə interaktivlik əlavə edir. SPA (Single Page Application) ilə sərhəd daha aydın olur, çünki qarşılıqlı əlaqə yalnız API vasitəsilə baş verir.
Nümunə:
# app/controllers/api/users_controller.rb
# Backend: İstifadəçini verilənlər bazasından almaq və frontend üçün formatlamaq
class Api::UsersController < ApplicationController
def show
user = User.find(params[:id])
render json: user.as_json(only: [:id, :name, :email])
end
end
// app/javascript/packs/user_profile.js
// Frontend: Məlumatları backend-dən soruşmaq və göstərmək
document.addEventListener('DOMContentLoaded', () => {
fetch(`/api/users/${userId}`) // userId frontend-də alınır
.then(response => response.json())
.then(data => {
document.getElementById('user-name').innerText = data.name;
document.getElementById('user-email').innerText = data.email;
});
});
Hibrid yanaşmalarda, Hotwire kimi, bəzi renderləmə logikası backend-ə köçürülə bilər, lakin qarşılıqlı əlaqə hələ də məlumatların və ya HTML fraqmentlərinin xüsusi protokollar (məsələn, Turbo Streams) vasitəsilə ötürülməsinə əsaslanır.
# app/controllers/posts_controller.rb
# Backend: Turbo Stream üçün HTML renderləmə
class PostsController < ApplicationController
def create
@post = Post.new(post_params)
if @post.save
render turbo_stream: turbo_stream.append(:posts, partial: 'posts/post', locals: { post: @post })
else
# Xəta idarəetməsi
end
end
private
def post_params
params.require(:post).permit(:body)
end
end
<!-- _post.html.erb -->
<!-- Turbo Stream vasitəsilə frontend-ə göndərilən HTML fraqmenti -->
<div>
<%= post.body %>
</div>
Əsas prinsip: backend məlumatlar və xidmətlər təqdim edir, frontend isə onları istifadə edir və vizuallaşdırır.