← Back to list

Component-Based MVC

Server-Side MVC uygulamaları için modern component mimarisi

cengiz ilhan · 2026-03-06 21:26 · 50 claps · 1.4 min read
#software-development #software-engineering #ui
Open on Medium ↗
Wiki topics: STP · Startups & Venture

Component-Based MVC

Server-Side MVC uygulamaları için modern component mimarisi

https://www.pexels.com/photo/data-codes-through-eyeglasses-577585/

https://www.pexels.com/photo/data-codes-through-eyeglasses-577585/

Modern frontend dünyasında büyük bundle dosyaları giderek yerini component tabanlı mimarilere bırakıyor.

React, Vue ve benzeri modern frontend framework’leri sayesinde artık şu yaklaşım yaygın:

  • UI component’lerden oluşur
  • her component kendi koduna sahiptir
  • yalnızca gereken kod yüklenir

Ancak birçok server-side MVC uygulaması hâlâ eski yaklaşımı kullanıyor:

site.css
bundle.js

Zamanla bu dosyalar büyür ve şu problemler ortaya çıkar:

  • kullanılmayan CSS
  • gereksiz JavaScript
  • zor debug edilen global kod
  • riskli refactor

Bu yazıda, MVC uygulamalarında bu problemi çözmek için basit bir yaklaşım anlatıyorum:

Component-Based MVC

Fikir

Component-Based MVC’de bir sayfa, layout ve UI component’lerinin birleşiminden oluşur.

Page = Layout + Components

Her component kendi HTML, CSS ve JS’ini içerir.

Ve önemli kural:

Component render edilmezse asset yüklenmez. Böylece gereksiz CSS ve JavaScript yüklenmez. HTML’i olmayan bir şeyin CSS ve JS’ine de ihtiyaç yoktur.

Basit Bir Component Örneği

@{
    Html.RegisterStyle("/styles/components/gallery/gallery.css");
    Html.RegisterScript("/scripts/gallery.js", ScriptLocation.Footer);
}
<div class="gallery">
    <h2>Gallery</h2>
    <div class="gallery-images">
        <img src="/images/gallery1.jpg">
        <img src="/images/gallery2.jpg">
        <img src="/images/gallery3.jpg">
    </div>
</div>

Component kendi asset’lerini register eder.

Page Kullanımı

@{
    Html.RegisterStyle("/styles/pages/home.css");
}
<h1>Homepage</h1>
@Html.Partial("~/Components/Gallery/Gallery.cshtml")
@Html.Partial("~/Components/Gallery/Gallery.cshtml")

Gallery component iki kez çağrılmış olsa bile:

gallery.css → 1 kez yüklenir.
gallery.js → 1 kez yüklenir.

SCSS Yapısı

Stiller basit bir klasör yapısıyla organize edilebilir:

/styles
  /components
    /gallery
      gallery.scss
  /pages
    home.scss
    article.scss
  • components/ → tekrar kullanılabilir UI parçaları
  • pages/ → sayfaya özel stiller

Layout

Asset’ler layout içinde render edilir.

<head>
    @Html.RenderRegisteredStyles()
</head>
<body>
@RenderBody()
    @Html.RenderRegisteredScripts(ScriptLocation.Footer)
</body>

Render Sonucu

Sayfa çıktısı şöyle olur:

<html>
<head>
<link rel="stylesheet" href="/styles/pages/home.css">
<link rel="stylesheet" href="/styles/components/gallery/gallery.css">
</head>
<body>
<div class="gallery"></div>
<div class="gallery"></div>
<script src="/scripts/gallery.js"></script>
</body>
</html>

Component iki kez render edilse bile asset’ler yalnızca bir kez yüklenir.

Neden Önemli?

Modern frontend mimarileri (React dahil) artık:

  • component architecture
  • code splitting
  • on-demand assets

üzerine kurulu.

Component-Based MVC aynı prensibi server-side rendering dünyasına getirir.

MVC değişmez. Sadece View katmanı modernleşir.

Özet

Component-Based MVC şu prensiplere dayanır:

  • UI component’lerden oluşur
  • component kendi asset’inin sahibidir
  • asset’ler yalnızca gerektiğinde yüklenir

메타데이터
post_id
718da421ffba
slug
component-based-mvc-718da421ffba
url
https://medium.com/@cngzilhn/component-based-mvc-718da421ffba
canonical_url
https://medium.com/@cngzilhn/component-based-mvc-718da421ffba
author_url
https://medium.com/@cngzilhn
status
ok
fetched_at
2026-07-13 06:23:13