{"id":37563,"date":"2026-01-09T11:40:47","date_gmt":"2026-01-09T08:40:47","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37563"},"modified":"2026-01-09T11:40:47","modified_gmt":"2026-01-09T08:40:47","slug":"vue-js-bilesen-orneklemesini-anlamak","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/","title":{"rendered":"Vue.js Bile\u015fen \u00d6rneklemesini Anlamak"},"content":{"rendered":"<p><body><\/p>\n<h2>Vue.js Bile\u015fen \u00d6rneklemesini Anlamak<\/h2>\n<h2>Giri\u015f<\/h2>\n<p>Modern web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olan bile\u015fen tabanl\u0131 mimari, uygulamalar\u0131n daha mod\u00fcler, yeniden kullan\u0131labilir ve y\u00f6netilebilir olmas\u0131n\u0131 sa\u011flam\u0131\u015ft\u0131r. Vue.js, bu mimariyi benimseyen pop\u00fcler bir JavaScript \u00e7er\u00e7evesidir ve bile\u015fenler, Vue uygulamalar\u0131n\u0131n yap\u0131 ta\u015flar\u0131d\u0131r. Bir Vue uygulamas\u0131nda, tan\u0131mlad\u0131\u011f\u0131m\u0131z her bile\u015fen asl\u0131nda bir &#8220;\u015fablon&#8221; veya &#8220;plan&#8221; gibidir. Bu planlardan yola \u00e7\u0131karak olu\u015fturulan ve bellekte kendi ba\u011f\u0131ms\u0131z durumuna, ya\u015fam d\u00f6ng\u00fcs\u00fcne ve reaktif verisine sahip olan her bir yap\u0131ya ise &#8220;bile\u015fen \u00f6rne\u011fi&#8221; (component instance) denir. Bu makalede, Vue.js&#8217;teki bile\u015fen \u00f6rneklemesi kavram\u0131n\u0131 derinlemesine inceleyecek, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, neden \u00f6nemli oldu\u011funu ve uygulamalar\u0131m\u0131z\u0131 geli\u015ftirirken nelere dikkat etmemiz gerekti\u011fini ayr\u0131nt\u0131l\u0131 bir \u015fekilde ele alaca\u011f\u0131z. Bile\u015fen \u00f6rneklemesini do\u011fru anlamak, Vue uygulamalar\u0131n\u0131 daha verimli, hatas\u0131z ve performansl\u0131 bir \u015fekilde geli\u015ftirmek i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h2>Bile\u015fen \u00d6rneklemesi Nedir?<\/h2>\n<p>Vue.js&#8217;te bir bile\u015fen tan\u0131mlad\u0131\u011f\u0131m\u0131zda (\u00f6rne\u011fin bir <code>.vue<\/code> dosyas\u0131 i\u00e7inde veya <code>Vue.component()<\/code> ile), asl\u0131nda bir &#8220;bile\u015fen tan\u0131m\u0131&#8221; veya &#8220;bile\u015fen se\u00e7ene\u011fi nesnesi&#8221; olu\u015fturmu\u015f oluruz. Bu tan\u0131m, bile\u015fenin \u015fablonunu, verisini, y\u00f6ntemlerini, hesaplanm\u0131\u015f \u00f6zelliklerini ve ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131n\u0131 i\u00e7erir. Ancak bu tan\u0131m, tek ba\u015f\u0131na taray\u0131c\u0131da g\u00f6r\u00fcnen bir \u015fey de\u011fildir; sadece bir plan veya \u015fema gibidir.<\/p>\n<p>Bir bile\u015fen tan\u0131m\u0131n\u0131 bir uygulamada kulland\u0131\u011f\u0131m\u0131zda (\u00f6rne\u011fin, bir \u00fcst bile\u015fenin \u015fablonunda <code><MyComponent\/><\/code> \u015feklinde), Vue bu tan\u0131mdan yola \u00e7\u0131karak bellekte yeni bir &#8220;bile\u015fen \u00f6rne\u011fi&#8221; olu\u015fturur. T\u0131pk\u0131 bir s\u0131n\u0131f\u0131n bir\u00e7ok farkl\u0131 nesne \u00f6rne\u011fini \u00fcretebilmesi gibi, bir bile\u015fen tan\u0131m\u0131 da uygulamam\u0131zda bir\u00e7ok farkl\u0131 ve ba\u011f\u0131ms\u0131z bile\u015fen \u00f6rne\u011fi olu\u015fturabilir. Her bir bile\u015fen \u00f6rne\u011fi:<\/p>\n<p>*   <strong>Kendi Ba\u011f\u0131ms\u0131z Durumuna Sahiptir:<\/strong> E\u011fer bile\u015fenin bir <code>data<\/code> \u00f6zelli\u011fi varsa, her \u00f6rnek bu <code>data<\/code>&#8216;n\u0131n kendi kopyas\u0131na sahip olur. Bir \u00f6rne\u011fin verisini de\u011fi\u015ftirmek, di\u011fer \u00f6rneklerin verisini etkilemez.<br \/>\n*   <strong>Kendi Ya\u015fam D\u00f6ng\u00fcs\u00fcne Sahiptir:<\/strong> Her \u00f6rne\u011fin kendi olu\u015fturulma, ba\u011flanma, g\u00fcncellenme ve ayr\u0131lma s\u00fcre\u00e7leri vard\u0131r. Bu s\u00fcre\u00e7ler boyunca tetiklenen ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131, her \u00f6rnek i\u00e7in ayr\u0131 ayr\u0131 \u00e7al\u0131\u015f\u0131r.<br \/>\n*   <strong>Kendi Reaktif Mekanizmas\u0131na Sahiptir:<\/strong> Her \u00f6rnek, kendi verisindeki de\u011fi\u015fiklikleri izler ve yaln\u0131zca kendi DOM&#8217;unu g\u00fcnceller.<\/p>\n<p>Bu ayr\u0131m, bile\u015fenlerin yeniden kullan\u0131labilirli\u011fini ve mod\u00fclerli\u011fini sa\u011flayan temel mekanizmad\u0131r. Ayn\u0131 bile\u015feni bir uygulamada birden \u00e7ok kez kullanabiliriz ve her biri kendi ba\u011flam\u0131nda ba\u011f\u0131ms\u0131z bir \u015fekilde \u00e7al\u0131\u015f\u0131r.<\/p>\n<h3>Bile\u015fen \u00d6rnekleri Nas\u0131l Olu\u015fturulur?<\/h3>\n<p>Vue.js&#8217;te bile\u015fen \u00f6rnekleri \u00e7e\u015fitli yollarla olu\u015fturulabilir:<\/p>\n<p>*   <strong>\u015eablonlarda Kullan\u0131m:<\/strong> En yayg\u0131n y\u00f6ntemdir. Bir \u00fcst bile\u015fenin \u015fablonunda alt bile\u015feni etiket olarak kullanmak (<code><MyComponent\/><\/code>) Vue&#8217;ye yeni bir \u00f6rnek olu\u015fturmas\u0131 talimat\u0131n\u0131 verir.<br \/>\n*   <strong>K\u00f6k \u00d6rnek Olu\u015fturma:<\/strong> <code>new Vue()<\/code> (Vue 2) veya <code>createApp()<\/code> (Vue 3) ile uygulaman\u0131n kendisi bir k\u00f6k bile\u015fen \u00f6rne\u011fi olarak ba\u015flar. T\u00fcm di\u011fer bile\u015fenler bu k\u00f6k \u00f6rne\u011fin \u00e7ocuklar\u0131 olarak \u00f6rneklendirilir.<br \/>\n*   <strong><code>v-for<\/code> ile \u00c7oklu \u00d6rnekler:<\/strong> Bir liste \u00fczerinde d\u00f6ng\u00fc yaparak ayn\u0131 bile\u015fenden birden \u00e7ok \u00f6rnek olu\u015fturmak i\u00e7in kullan\u0131l\u0131r. Her liste \u00f6\u011fesi i\u00e7in yeni ve ba\u011f\u0131ms\u0131z bir bile\u015fen \u00f6rne\u011fi olu\u015fturulur.<br \/>\n*   <strong>Dinamik Bile\u015fenler (<code><component :is=\"...\"><\/code>):<\/strong> \u00c7al\u0131\u015fma zaman\u0131nda hangi bile\u015fenin \u00f6rneklendirilece\u011fine karar vermek i\u00e7in kullan\u0131l\u0131r. <code>:is<\/code> \u00f6zelli\u011finin de\u011feri de\u011fi\u015ftik\u00e7e, mevcut \u00f6rnek yok edilir ve yeni bir bile\u015fen t\u00fcr\u00fcnden yeni bir \u00f6rnek olu\u015fturulur.<\/p>\n<h2>\u00d6rnek Ya\u015fam D\u00f6ng\u00fcs\u00fc<\/h2>\n<p>Her bir Vue bile\u015fen \u00f6rne\u011fi, olu\u015fturulmas\u0131ndan yok edilmesine kadar belirli bir ya\u015fam d\u00f6ng\u00fcs\u00fcnden ge\u00e7er. Bu ya\u015fam d\u00f6ng\u00fcs\u00fc, farkl\u0131 a\u015famalarda tetiklenen kancalar (hooks) arac\u0131l\u0131\u011f\u0131yla y\u00f6netilir. Her bile\u015fen \u00f6rne\u011fi, kendi ba\u011f\u0131ms\u0131z ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131na sahiptir.<\/p>\n<p>*   <strong>Olu\u015fturma (Creation) A\u015famas\u0131nda:<\/strong><br \/>\n    *   <code>beforeCreate()<\/code>: \u00d6rnek hen\u00fcz ba\u015flat\u0131lmam\u0131\u015ft\u0131r, <code>data<\/code> ve <code>events<\/code> ayarlanmam\u0131\u015ft\u0131r.<br \/>\n    *   <code>created()<\/code>: \u00d6rnek olu\u015fturulmu\u015ftur. <code>data<\/code> ve <code>events<\/code> ayarlanm\u0131\u015ft\u0131r, ancak \u015fablon DOM&#8217;a ba\u011flanmam\u0131\u015ft\u0131r. Bu a\u015famada API \u00e7a\u011fr\u0131lar\u0131 yapmak yayg\u0131nd\u0131r.<br \/>\n*   <strong>Ba\u011flama (Mounting) A\u015famas\u0131nda:<\/strong><br \/>\n    *   <code>beforeMount()<\/code>: \u015eablon DOM&#8217;a ba\u011flanmadan hemen \u00f6nce.<br \/>\n    *   <code>mounted()<\/code>: Bile\u015fen DOM&#8217;a ba\u011flanm\u0131\u015ft\u0131r ve eri\u015filebilir durumdad\u0131r. DOM manip\u00fclasyonlar\u0131 veya \u00fc\u00e7\u00fcnc\u00fc taraf k\u00fct\u00fcphane entegrasyonlar\u0131 burada yap\u0131labilir.<br \/>\n*   <strong>G\u00fcncelleme (Updating) A\u015famas\u0131nda:<\/strong><br \/>\n    *   <code>beforeUpdate()<\/code>: Reaktif veri de\u011fi\u015fti\u011finde ve DOM yeniden olu\u015fturulmadan \u00f6nce tetiklenir.<br \/>\n    *   <code>updated()<\/code>: Reaktif veri de\u011fi\u015fti\u011finde ve DOM yeniden olu\u015fturulduktan sonra tetiklenir.<br \/>\n*   <strong>Ayr\u0131lma (Unmounting) A\u015famas\u0131nda:<\/strong><br \/>\n    *   <code>beforeUnmount()<\/code> (Vue 3) \/ <code>beforeDestroy()<\/code> (Vue 2): Bile\u015fen \u00f6rne\u011fi yok edilmeden hemen \u00f6nce. Temizleme i\u015flemleri (olay dinleyicilerini kald\u0131rma, zamanlay\u0131c\u0131lar\u0131 temizleme) burada yap\u0131lmal\u0131d\u0131r.<br \/>\n    *   <code>unmounted()<\/code> (Vue 3) \/ <code>destroyed()<\/code> (Vue 2): Bile\u015fen \u00f6rne\u011fi tamamen yok edilmi\u015ftir.<\/p>\n<p>Bir \u00fcst bile\u015fen \u00f6rne\u011fi yok edildi\u011finde, onun t\u00fcm alt bile\u015fen \u00f6rnekleri de s\u0131rayla yok edilir ve kendi <code>beforeUnmount<\/code> ve <code>unmounted<\/code> kancalar\u0131 tetiklenir. Bu hiyerar\u015fik ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimi, karma\u015f\u0131k uygulamalarda kaynaklar\u0131n do\u011fru bir \u015fekilde serbest b\u0131rak\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>Veri Reaktivitesi ve \u00d6rnekler<\/h2>\n<p>Vue.js&#8217;in en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri reaktif veri sistemidir. Bu sistem, bir bile\u015fen \u00f6rne\u011finin <code>data<\/code> \u00f6zelli\u011finde yap\u0131lan de\u011fi\u015fiklikleri otomatik olarak izler ve bu de\u011fi\u015fikliklere ba\u011fl\u0131 olarak DOM&#8217;u g\u00fcnceller. Bile\u015fen \u00f6rneklemesi ba\u011flam\u0131nda, bu reaktivite her \u00f6rnek i\u00e7in ba\u011f\u0131ms\u0131z \u00e7al\u0131\u015f\u0131r.<\/p>\n<h3><code>data()<\/code> Fonksiyonu<\/h3>\n<p>Bir Vue bile\u015feninde <code>data<\/code> \u00f6zelli\u011fini tan\u0131mlarken, bunun bir fonksiyon olmas\u0131n\u0131n nedeni tam da budur. E\u011fer <code>data<\/code> bir nesne olsayd\u0131, ayn\u0131 bile\u015fenden olu\u015fturulan t\u00fcm \u00f6rnekler ayn\u0131 veri nesnesini payla\u015f\u0131rd\u0131. Bu da bir \u00f6rne\u011fin verisini de\u011fi\u015ftirmenin di\u011fer t\u00fcm \u00f6rneklerin verisini de de\u011fi\u015ftirmesi anlam\u0131na gelirdi ki bu istenmeyen bir durumdur. <code>data<\/code>&#8216;y\u0131 bir fonksiyon olarak tan\u0131mlad\u0131\u011f\u0131m\u0131zda:<\/p>\n<pre><code class=\"language-javascript\">export default {\n  data() {\n    return {\n      count: 0,\n      message: 'Merhaba Vue!'\n    };\n  }\n};<\/code><\/pre>\n<p>Her bile\u015fen \u00f6rne\u011fi olu\u015fturuldu\u011funda, bu <code>data()<\/code> fonksiyonu \u00e7a\u011fr\u0131l\u0131r ve fonksiyon yeni bir veri nesnesi d\u00f6nd\u00fcr\u00fcr. B\u00f6ylece her \u00f6rnek kendi <code>count<\/code> ve <code>message<\/code> \u00f6zelliklerine sahip olur ve bunlar di\u011fer \u00f6rneklerden ba\u011f\u0131ms\u0131zd\u0131r.<\/p>\n<h3>Props ve \u00d6rnekler<\/h3>\n<p><code>props<\/code>, \u00fcst bile\u015fenlerden alt bile\u015fenlere veri aktarman\u0131n bir yoludur. Her bile\u015fen \u00f6rne\u011fi, kendisine aktar\u0131lan <code>props<\/code> de\u011ferlerinin kendi kopyas\u0131na sahiptir. <code>props<\/code> tek y\u00f6nl\u00fc bir veri ak\u0131\u015f\u0131n\u0131 temsil eder, yani bir alt bile\u015fen do\u011frudan kendi <code>props<\/code> de\u011ferlerini de\u011fi\u015ftirmemelidir. \u00dcst bile\u015fen <code>prop<\/code> de\u011ferini de\u011fi\u015ftirdi\u011finde, alt bile\u015fenin ilgili \u00f6rne\u011fi otomatik olarak g\u00fcncellenir. Bu, her bir \u00f6rne\u011fin kendi <code>prop<\/code> de\u011ferlerine sahip olmas\u0131n\u0131 ve bu de\u011ferlerin \u00fcst bile\u015fen taraf\u0131ndan y\u00f6netilmesini sa\u011flar.<\/p>\n<h3>Computed \u00d6zellikler ve Watch Fonksiyonlar\u0131<\/h3>\n<p><code>computed<\/code> \u00f6zellikler ve <code>watch<\/code> fonksiyonlar\u0131 da her bile\u015fen \u00f6rne\u011fi i\u00e7in ba\u011f\u0131ms\u0131z \u00e7al\u0131\u015f\u0131r. Bir \u00f6rne\u011fin <code>computed<\/code> \u00f6zelli\u011fi, yaln\u0131zca o \u00f6rne\u011fin reaktif verisine veya <code>props<\/code>&#8216;una ba\u011fl\u0131 olarak yeniden hesaplan\u0131r. Benzer \u015fekilde, bir <code>watch<\/code> fonksiyonu da yaln\u0131zca o \u00f6rne\u011fin izledi\u011fi veriler de\u011fi\u015fti\u011finde tetiklenir. Bu, her \u00f6rne\u011fin kendi ba\u011flam\u0131nda veriye dayal\u0131 mant\u0131\u011f\u0131n\u0131 y\u00fcr\u00fctebilmesini sa\u011flar.<\/p>\n<h2><code>v-for<\/code> ile \u00c7oklu \u00d6rnekler<\/h2>\n<p><code>v-for<\/code> direktifi, bir dizi veya nesne \u00fczerindeki \u00f6\u011feleri yineleyerek birden \u00e7ok DOM \u00f6\u011fesi veya bile\u015fen \u00f6rne\u011fi olu\u015fturmak i\u00e7in kullan\u0131l\u0131r. Bir bile\u015fenle birlikte <code>v-for<\/code> kulland\u0131\u011f\u0131m\u0131zda, dizideki her bir \u00f6\u011fe i\u00e7in bile\u015fenin yeni ve ba\u011f\u0131ms\u0131z bir \u00f6rne\u011fi olu\u015fturulur.<\/p>\n<p>\u00d6rne\u011fin, bir <code>TodoList<\/code> bile\u015fenimiz oldu\u011funu ve her bir <code>TodoItem<\/code> bile\u015feninin bir g\u00f6revi temsil etti\u011fini varsayal\u0131m:<\/p>\n<pre><code class=\"language-html\"><template>\n  <div>\n    <TodoItem\n      v-for=\"todo in todos\"\n      :key=\"todo.id\"\n      :todo=\"todo\"\n    \/>\n  <\/div>\n<\/template>\n\n<script>\nimport TodoItem from '.\/TodoItem.vue';\n\nexport default {\n  components: {\n    TodoItem\n  },\n  data() {\n    return {\n      todos: [\n        { id: 1, text: 'Vue.js \u00f6\u011fren', completed: false },\n        { id: 2, text: 'Makaleyi yaz', completed: true },\n        { id: 3, text: 'Kodu test et', completed: false }\n      ]\n    };\n  }\n};\n<\/script><\/code><\/pre>\n<p>Burada, <code>todos<\/code> dizisindeki her bir \u00f6\u011fe i\u00e7in bir <code>TodoItem<\/code> bile\u015fen \u00f6rne\u011fi olu\u015fturulacakt\u0131r. Her <code>TodoItem<\/code> \u00f6rne\u011fi kendi <code>todo<\/code> prop&#8217;una ve kendi i\u00e7 durumuna (e\u011fer varsa) sahip olacakt\u0131r.<\/p>\n<h3><code>key<\/code> \u00d6zelli\u011finin \u00d6nemi<\/h3>\n<p><code>v-for<\/code> ile bile\u015fenleri veya \u00f6\u011feleri render ederken <code>key<\/code> \u00f6zelli\u011fini kullanmak kritik \u00f6neme sahiptir. Vue, <code>key<\/code> \u00f6zelli\u011fini kullanarak her bir liste \u00f6\u011fesinin kimli\u011fini takip eder ve DOM&#8217;daki mevcut \u00f6\u011feleri yeniden kullanma veya yeniden s\u0131ralama konusunda daha verimli kararlar al\u0131r.<\/p>\n<p>*   <strong><code>key<\/code> olmadan:<\/strong> Vue, listeyi s\u0131rayla g\u00fcncellemeyi dener. E\u011fer listeden bir \u00f6\u011fe \u00e7\u0131kar\u0131l\u0131r veya eklenirse, Vue&#8217;nin hangi \u00f6\u011fenin de\u011fi\u015fti\u011fini veya ta\u015f\u0131nd\u0131\u011f\u0131n\u0131 anlamas\u0131 zorla\u015f\u0131r. Bu, performans sorunlar\u0131na yol a\u00e7abilir ve \u00f6zellikle durumlu bile\u015fenlerde beklenmedik davran\u0131\u015flara (\u00f6rne\u011fin, yanl\u0131\u015f bile\u015fenin durumunun korunmas\u0131) neden olabilir.<br \/>\n*   <strong><code>key<\/code> ile:<\/strong> Vue, her bir \u00f6rne\u011fi benzersiz <code>key<\/code> de\u011feriyle ili\u015fkilendirir. Liste de\u011fi\u015fti\u011finde, Vue yaln\u0131zca <code>key<\/code>&#8216;i de\u011fi\u015fen, eklenen veya silinen \u00f6\u011feleri g\u00fcnceller veya ta\u015f\u0131r. Bu, performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r ve \u00f6zellikle bile\u015fen \u00f6rneklerinin do\u011fru durumlar\u0131n\u0131n korunmas\u0131n\u0131 sa\u011flar. <code>key<\/code> de\u011ferleri benzersiz ve kararl\u0131 olmal\u0131d\u0131r. Genellikle veritaban\u0131 ID&#8217;leri veya benzersiz olu\u015fturulmu\u015f UUID&#8217;ler kullan\u0131l\u0131r.<\/p>\n<h2>Dinamik ve Ko\u015fullu Bile\u015fen \u00d6rneklemesi<\/h2>\n<p>Vue.js, bir bile\u015fenin \u00f6rneklendirilmesini dinamik olarak kontrol etme yetene\u011fi sunar. Bu, \u00f6zellikle farkl\u0131 bile\u015fenleri ayn\u0131 DOM konumunda g\u00f6stermek istedi\u011fimizde veya belirli ko\u015fullara ba\u011fl\u0131 olarak bile\u015fenleri render etmek istedi\u011fimizde kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h3><code><component :is=\"...\"><\/code><\/h3>\n<p><code><component :is=\"componentName\"><\/code> \u00f6zel etiketi, \u00e7al\u0131\u015fma zaman\u0131nda hangi bile\u015fenin \u00f6rneklendirilece\u011fine karar vermemizi sa\u011flar. <code>:is<\/code> \u00f6zelli\u011fine bir bile\u015fen ad\u0131n\u0131n veya bile\u015fen tan\u0131m\u0131n\u0131n kendisinin verildi\u011fi bir dize ge\u00e7irilir.<\/p>\n<pre><code class=\"language-html\"><template>\n  <div>\n    <button @click=\"toggleComponent\">Bile\u015feni De\u011fi\u015ftir<\/button>\n    <component :is=\"currentComponent\"><\/component>\n  <\/div>\n<\/template>\n\n<script>\nimport ComponentA from '.\/ComponentA.vue';\nimport ComponentB from '.\/ComponentB.vue';\n\nexport default {\n  components: {\n    ComponentA,\n    ComponentB\n  },\n  data() {\n    return {\n      currentComponent: 'ComponentA'\n    };\n  },\n  methods: {\n    toggleComponent() {\n      this.currentComponent = this.currentComponent === 'ComponentA' ? 'ComponentB' : 'ComponentA';\n    }\n  }\n};\n<\/script><\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>currentComponent<\/code> de\u011feri de\u011fi\u015ftik\u00e7e, mevcut bile\u015fen \u00f6rne\u011fi yok edilir ve yeni bir bile\u015fen t\u00fcr\u00fcnden yeni bir \u00f6rnek olu\u015fturulur. Bu, her ge\u00e7i\u015fte bile\u015fenin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn ba\u015ftan sona \u00e7al\u0131\u015faca\u011f\u0131 anlam\u0131na gelir. E\u011fer bile\u015fen \u00f6rneklerinin durumunu korumak istiyorsak, <code><keep-alive><\/code> sarmalay\u0131c\u0131s\u0131n\u0131 kullanmal\u0131y\u0131z.<\/p>\n<h3><code>v-if<\/code>\/<code>v-else<\/code> ile Ko\u015fullu \u00d6rnekleme<\/h3>\n<p><code>v-if<\/code>, <code>v-else-if<\/code> ve <code>v-else<\/code> direktifleri, bir ko\u015fula ba\u011fl\u0131 olarak bile\u015fenlerin DOM&#8217;a eklenip \u00e7\u0131kar\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-html\"><template>\n  <div>\n    <button @click=\"showMessage = !showMessage\">Mesaj\u0131 G\u00f6ster\/Gizle<\/button>\n    <MyMessage v-if=\"showMessage\" \/>\n    <p v-else>Mesaj gizli.<\/p>\n  <\/div>\n<\/template>\n\n<script>\nimport MyMessage from '.\/MyMessage.vue';\n\nexport default {\n  components: {\n    MyMessage\n  },\n  data() {\n    return {\n      showMessage: false\n    };\n  }\n};\n<\/script><\/code><\/pre>\n<p><code>v-if<\/code> <code>false<\/code> oldu\u011funda, <code>MyMessage<\/code> bile\u015fen \u00f6rne\u011fi olu\u015fturulmaz ve DOM&#8217;da yer almaz. <code>v-if<\/code> <code>true<\/code> oldu\u011funda, yeni bir <code>MyMessage<\/code> \u00f6rne\u011fi olu\u015fturulur ve DOM&#8217;a eklenir. <code>v-if<\/code>, ko\u015ful <code>false<\/code> oldu\u011funda bile\u015feni tamamen yok etti\u011finden, \u00f6rne\u011fin durumu kaybolur ve ko\u015ful tekrar <code>true<\/code> oldu\u011funda yeni bir \u00f6rnek s\u0131f\u0131rdan olu\u015fturulur. <code>v-show<\/code> ise bile\u015feni her zaman render eder, ancak CSS <code>display<\/code> \u00f6zelli\u011fi ile gizler veya g\u00f6sterir, bu nedenle \u00f6rnek yok edilmez ve durumu korunur.<\/p>\n<h2>Geli\u015fmi\u015f \u00d6rnekleme Senaryolar\u0131<\/h2>\n<p>Vue.js&#8217;in bile\u015fen \u00f6rneklemesi, daha karma\u015f\u0131k senaryolar\u0131 desteklemek i\u00e7in \u00e7e\u015fitli geli\u015fmi\u015f mekanizmalar sunar.<\/p>\n<h3>\u00d6zyinelemeli Bile\u015fenler (Recursive Components)<\/h3>\n<p>Bir bile\u015fenin kendi \u015fablonunda kendisini \u00e7a\u011f\u0131rmas\u0131 &#8220;\u00f6zyinelemeli bile\u015fen&#8221; olarak adland\u0131r\u0131l\u0131r. Bu, a\u011fa\u00e7 yap\u0131lar\u0131, men\u00fcler veya yorum dizileri gibi hiyerar\u015fik verileri g\u00f6rselle\u015ftirmek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r. Her \u00f6zyinelemeli \u00e7a\u011fr\u0131, bile\u015fenin yeni bir \u00f6rne\u011fini olu\u015fturur.<\/p>\n<pre><code class=\"language-javascript\">\/\/ MenuItem.vue\nexport default {\n  name: 'MenuItem', \/\/ \u00d6zyinelemeli bile\u015fenler i\u00e7in 'name' \u00f6zelli\u011fi zorunludur.\n  props: ['item'],\n  template: <code>\n    <li>\n      {{ item.name }}\n      <ul v-if=\"item.children &#038;&#038; item.children.length\">\n        <MenuItem\n          v-for=\"child in item.children\"\n          :key=\"child.id\"\n          :item=\"child\"\n        \/>\n      <\/ul>\n    <\/li>\n  <\/code>\n};<\/code><\/pre>\n<p>Burada, <code>MenuItem<\/code> bile\u015feni kendi i\u00e7inde <code>MenuItem<\/code> bile\u015fenini \u00e7a\u011f\u0131r\u0131r. Her <code>MenuItem<\/code> \u00f6rne\u011fi, kendi <code>item<\/code> prop&#8217;una ve kendi \u00e7ocuklar\u0131na sahip olacakt\u0131r. Bu, her bir seviyede yeni bir \u00f6rnek olu\u015fturulmas\u0131n\u0131 ve a\u011fac\u0131n derinli\u011fine ba\u011fl\u0131 olarak bir\u00e7ok ba\u011f\u0131ms\u0131z \u00f6rne\u011fin olu\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Global ve Yerel Kay\u0131t<\/h3>\n<p>Bile\u015fenleri Vue uygulamas\u0131na kaydetmenin iki yolu vard\u0131r:<\/p>\n<p>*   <strong>Global Kay\u0131t:<\/strong> <code>app.component('MyComponent', MyComponent)<\/code> (Vue 3) veya <code>Vue.component('MyComponent', MyComponent)<\/code> (Vue 2) ile yap\u0131l\u0131r. Global olarak kaydedilen bile\u015fenler, uygulaman\u0131n herhangi bir yerinde do\u011frudan kullan\u0131labilir ve her kullan\u0131mda yeni bir \u00f6rnek olu\u015fturulur.<br \/>\n*   <strong>Yerel Kay\u0131t:<\/strong> Bir \u00fcst bile\u015fenin <code>components<\/code> se\u00e7ene\u011fi i\u00e7inde yap\u0131l\u0131r. <code>components: { MyComponent }<\/code>. Yerel olarak kaydedilen bile\u015fenler yaln\u0131zca o \u00fcst bile\u015fenin \u015fablonunda kullan\u0131labilir. Her iki durumda da, bile\u015fenin her kullan\u0131m\u0131 yeni bir \u00f6rnekle sonu\u00e7lan\u0131r. Kay\u0131t \u015fekli, \u00f6rnekleme mekanizmas\u0131n\u0131 de\u011fil, bile\u015fenin kullan\u0131labilirli\u011fini etkiler.<\/p>\n<h3><code>keep-alive<\/code> Bile\u015feni<\/h3>\n<p>Dinamik bile\u015fenlerle (<code><component :is=\"...\"><\/code> veya <code>v-if<\/code> ile) \u00e7al\u0131\u015f\u0131rken, bir bile\u015fen \u00f6rne\u011finin DOM&#8217;dan kald\u0131r\u0131ld\u0131\u011f\u0131nda durumunu kaybetmesi ve yeniden olu\u015fturuldu\u011funda s\u0131f\u0131rdan ba\u015flamas\u0131 varsay\u0131lan davran\u0131\u015ft\u0131r. Ancak baz\u0131 durumlarda, bir bile\u015fen \u00f6rne\u011finin durumunu korumak ve performans i\u00e7in yeniden olu\u015fturulmas\u0131n\u0131 engellemek isteyebiliriz. \u0130\u015fte burada <code><keep-alive><\/code> devreye girer.<\/p>\n<p><code><keep-alive><\/code> etiketi, dinamik bir bile\u015feni sarmalad\u0131\u011f\u0131nda, bile\u015fen \u00f6rne\u011fi yok edilmek yerine \u00f6nbelle\u011fe al\u0131n\u0131r. Daha sonra ayn\u0131 bile\u015fen tekrar render edildi\u011finde, Vue \u00f6nbelle\u011fe al\u0131nan \u00f6rne\u011fi kullan\u0131r ve yeniden olu\u015fturma maliyetinden ka\u00e7\u0131n\u0131r.<\/p>\n<pre><code class=\"language-html\"><template>\n  <div>\n    <button @click=\"toggleComponent\">Bile\u015feni De\u011fi\u015ftir<\/button>\n    <keep-alive>\n      <component :is=\"currentComponent\"><\/component>\n    <\/keep-alive>\n  <\/div>\n<\/template><\/code><\/pre>\n<p><code><keep-alive><\/code> i\u00e7indeki bile\u015fenler i\u00e7in <code>activated()<\/code> ve <code>deactivated()<\/code> ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131 tetiklenir, <code>mounted()<\/code> ve <code>unmounted()<\/code> yerine. Bu kancalar, bile\u015fenin DOM&#8217;a girip \u00e7\u0131kt\u0131\u011f\u0131n\u0131 belirtir, ancak \u00f6rne\u011fin kendisi bellekte kal\u0131r.<\/p>\n<h3>Fonksiyonel Bile\u015fenler (Functional Components)<\/h3>\n<p>Fonksiyonel bile\u015fenler, durumsuz (stateless) ve \u00f6rneksiz (instanceless) bile\u015fenlerdir. Bunlar <code>data<\/code>, <code>methods<\/code>, <code>computed<\/code> veya ya\u015fam d\u00f6ng\u00fcs\u00fc kancalar\u0131na sahip de\u011fildir. Sadece <code>props<\/code> al\u0131r ve bir \u015fablon d\u00f6nd\u00fcr\u00fcrler. Vue 3&#8217;te, fonksiyonel bile\u015fenler genellikle <code>setup()<\/code> fonksiyonu ile birlikte basit bir fonksiyon olarak yaz\u0131l\u0131r.<\/p>\n<pre><code class=\"language-javascript\">\/\/ Vue 3 Functional Component\nimport { h } from 'vue';\n\nconst FunctionalComponent = (props, context) => {\n  return h('div', <code>Merhaba, ${props.name}!<\/code>);\n};\n\nFunctionalComponent.props = ['name'];\n\nexport default FunctionalComponent;<\/code><\/pre>\n<p>Fonksiyonel bile\u015fenler, bir \u00f6rnek olu\u015fturma y\u00fck\u00fcn\u00fc ta\u015f\u0131mad\u0131klar\u0131 i\u00e7in daha hafiftir ve performans a\u00e7\u0131s\u0131ndan avantaj sa\u011flayabilirler, \u00f6zellikle \u00e7ok say\u0131da basit UI \u00f6\u011fesini render ederken. Ancak reaktif durum veya ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimine ihtiya\u00e7 duyan daha karma\u015f\u0131k bile\u015fenler i\u00e7in uygun de\u011fildirler.<\/p>\n<h3>Sunucu Tarafl\u0131 Olu\u015fturma (SSR) ve Hidrasyon<\/h3>\n<p>Sunucu Tarafl\u0131 Olu\u015fturma (SSR) ile Vue bile\u015fenleri sunucuda HTML dizeleri olarak olu\u015fturulur ve taray\u0131c\u0131ya g\u00f6nderilir. Bu, ilk y\u00fckleme s\u00fcresini ve SEO&#8217;yu iyile\u015ftirir. Taray\u0131c\u0131ya ula\u015ft\u0131\u011f\u0131nda, Vue istemci taraf\u0131nda bu HTML&#8217;i &#8220;canland\u0131rmak&#8221; i\u00e7in &#8220;hidrasyon&#8221; ad\u0131 verilen bir s\u00fcre\u00e7ten ge\u00e7er. Hidrasyon s\u0131ras\u0131nda, Vue sunucuda olu\u015fturulan HTML&#8217;i al\u0131r ve bu HTML ile e\u015fle\u015fen Vue bile\u015fen \u00f6rneklerini olu\u015fturur. Var olan DOM yap\u0131s\u0131n\u0131 yeniden kullan\u0131r ve yaln\u0131zca gerekli olay dinleyicilerini ve reaktiviteyi ekler. Bu, tam bir yeniden render yerine daha verimli bir ba\u015flatma sa\u011flar. Her bile\u015fen \u00f6rne\u011fi, sunucuda olu\u015fturulmu\u015f kar\u015f\u0131l\u0131\u011f\u0131n\u0131 bularak kendi reaktif durumuna ve etkile\u015fim yetene\u011fine kavu\u015fur.<\/p>\n<h2>Performans ve En \u0130yi Uygulamalar<\/h2>\n<p>Bile\u015fen \u00f6rneklemesini anlamak, performansl\u0131 ve s\u00fcrd\u00fcr\u00fclebilir Vue uygulamalar\u0131 geli\u015ftirmek i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<p>*   <strong><code>key<\/code> Kullan\u0131m\u0131n\u0131n \u00d6nemi:<\/strong> <code>v-for<\/code> ile liste render ederken her zaman benzersiz ve kararl\u0131 <code>key<\/code>&#8216;ler kullan\u0131n. Bu, Vue&#8217;nin DOM manip\u00fclasyonlar\u0131n\u0131 optimize etmesine ve gereksiz yeniden \u00f6rneklemeyi \u00f6nlemesine yard\u0131mc\u0131 olur.<br \/>\n*   <strong>Gereksiz Yeniden \u00d6rneklemeyi \u00d6nlemek:<\/strong><br \/>\n    *   <code>v-if<\/code> yerine <code>v-show<\/code> kullanmay\u0131 d\u00fc\u015f\u00fcn\u00fcn, e\u011fer bile\u015feni s\u0131k s\u0131k g\u00f6sterip gizlemeniz gerekiyorsa ve durumunu korumak istiyorsan\u0131z.<br \/>\n    *   <code><keep-alive><\/code>&#8216;\u0131 dinamik bile\u015fenlerle veya s\u0131k ge\u00e7i\u015f yap\u0131lan sekmelerde kullanarak bile\u015fen \u00f6rneklerinin yeniden olu\u015fturulmas\u0131n\u0131 engelleyin.<br \/>\n*   <strong><code>v-once<\/code> Direktifi:<\/strong> E\u011fer bir bile\u015fenin veya HTML blo\u011funun i\u00e7eri\u011fi bir kez render edildikten sonra asla de\u011fi\u015fmeyecekse, <code>v-once<\/code> direktifini kullanabilirsiniz. Bu, Vue&#8217;nin o b\u00f6l\u00fcm\u00fc reaktif olarak izlemesini durdurur ve performans kazanc\u0131 sa\u011flar.<br \/>\n*   <strong>B\u00fcy\u00fck Listelerde Sanalla\u015ft\u0131rma (Virtual Scrolling):<\/strong> Binlerce \u00f6\u011feli listelerle \u00e7al\u0131\u015f\u0131rken, t\u00fcm bile\u015fen \u00f6rneklerini ayn\u0131 anda render etmek performans\u0131 ciddi \u015fekilde etkiler. Sanalla\u015ft\u0131rma k\u00fct\u00fcphaneleri (\u00f6rne\u011fin <code>vue-virtual-scroller<\/code>), yaln\u0131zca g\u00f6r\u00fcn\u00fcrdeki \u00f6\u011feler i\u00e7in bile\u015fen \u00f6rnekleri olu\u015fturarak performans\u0131 art\u0131r\u0131r.<br \/>\n*   <strong>Bellek S\u0131z\u0131nt\u0131lar\u0131n\u0131 \u00d6nlemek:<\/strong> <code>mounted()<\/code> i\u00e7inde ekledi\u011finiz olay dinleyicileri, zamanlay\u0131c\u0131lar veya \u00fc\u00e7\u00fcnc\u00fc taraf k\u00fct\u00fcphane \u00f6rneklerini <code>beforeUnmount()<\/code> (veya <code>unmounted()<\/code>) kancas\u0131nda mutlaka temizleyin. Aksi takdirde, yok edilen bile\u015fen \u00f6rnekleri bellekte kalabilir ve bellek s\u0131z\u0131nt\u0131lar\u0131na yol a\u00e7abilir.<br \/>\n*   <strong>Bile\u015fen Boyutunu Optimize Etme:<\/strong> \u00c7ok b\u00fcy\u00fck ve karma\u015f\u0131k bile\u015fenler yerine, daha k\u00fc\u00e7\u00fck, tek sorumluluk ilkesine uygun bile\u015fenler olu\u015fturmak, her bir \u00f6rne\u011fin daha hafif olmas\u0131n\u0131 sa\u011flar ve genel performans\u0131 art\u0131r\u0131r.<\/p>\n<h2>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h2>\n<p>Bile\u015fen \u00f6rneklemesiyle ilgili baz\u0131 yayg\u0131n sorunlar ve bunlar\u0131n \u00e7\u00f6z\u00fcmleri \u015funlard\u0131r:<\/p>\n<p>*   <strong><code>data<\/code> bir fonksiyon de\u011filse ne olur?<\/strong> E\u011fer <code>data<\/code> bir fonksiyon yerine do\u011frudan bir nesne olarak tan\u0131mlan\u0131rsa, ayn\u0131 bile\u015fenden olu\u015fturulan t\u00fcm \u00f6rnekler ayn\u0131 <code>data<\/code> nesnesini payla\u015f\u0131r. Bir \u00f6rnekteki veri de\u011fi\u015fikli\u011fi, di\u011fer t\u00fcm \u00f6rnekleri de etkiler. \u00c7\u00f6z\u00fcm: <code>data<\/code>&#8216;y\u0131 her zaman bir fonksiyon olarak tan\u0131mlay\u0131n.<br \/>\n*   <strong><code>key<\/code> eksikli\u011fi veya yanl\u0131\u015f kullan\u0131m\u0131:<\/strong> <code>v-for<\/code> ile <code>key<\/code> kullanmamak veya <code>key<\/code> olarak dizin (<code>index<\/code>) kullanmak, \u00f6zellikle liste \u00f6\u011felerinin s\u0131ras\u0131 de\u011fi\u015fti\u011finde veya yeni \u00f6\u011feler eklendi\u011finde hatal\u0131 durum korumas\u0131na ve performans sorunlar\u0131na yol a\u00e7abilir. \u00c7\u00f6z\u00fcm: Her zaman benzersiz ve kararl\u0131 bir <code>key<\/code> kullan\u0131n (\u00f6rne\u011fin, bir ID).<br \/>\n*   <strong>Prop mutasyonu (anti-pattern):<\/strong> Bir alt bile\u015fen \u00f6rne\u011finin kendisine <code>prop<\/code> olarak gelen bir de\u011feri do\u011frudan de\u011fi\u015ftirmeye \u00e7al\u0131\u015fmas\u0131 (<code>this.myProp = newValue<\/code>) bir anti-pattern&#8217;dir ve Vue&#8217;nin tek y\u00f6nl\u00fc veri ak\u0131\u015f\u0131 prensibini bozar. \u00c7\u00f6z\u00fcm: Alt bile\u015fenin <code>prop<\/code>&#8216;u de\u011fi\u015ftirmesi gerekiyorsa, bir olay (<code>event<\/code>) yaymal\u0131 ve \u00fcst bile\u015fenin <code>prop<\/code> de\u011ferini de\u011fi\u015ftirmesini sa\u011flamal\u0131d\u0131r.<br \/>\n*   <strong>\u00d6rnekler Aras\u0131 \u0130leti\u015fim:<\/strong> Ba\u011f\u0131ms\u0131z bile\u015fen \u00f6rnekleri aras\u0131nda do\u011frudan ileti\u015fim kurmak karma\u015f\u0131k olabilir.<br \/>\n    *   <strong>\u00dcstten Alta:<\/strong> <code>props<\/code> kullan\u0131n.<br \/>\n    *   <strong>Alttan \u00dcste:<\/strong> <code>events<\/code> (emit) kullan\u0131n.<br \/>\n    *   <strong>Karde\u015f Bile\u015fenler Aras\u0131:<\/strong> Ortak bir \u00fcst bile\u015fen arac\u0131l\u0131\u011f\u0131yla <code>props<\/code> ve <code>events<\/code> kullan\u0131n veya bir olay veri yolu (event bus &#8211; Vue 3&#8217;te pek \u00f6nerilmez), Vuex\/Pinia gibi durum y\u00f6netim k\u00fct\u00fcphaneleri veya <code>provide<\/code>\/<code>inject<\/code> kullan\u0131n. <code>provide<\/code>\/<code>inject<\/code> \u00f6zellikle derin i\u00e7 i\u00e7e ge\u00e7mi\u015f bile\u015fenler i\u00e7in pratik bir \u00e7\u00f6z\u00fcmd\u00fcr, ancak reaktiflik konusunda dikkatli kullan\u0131lmal\u0131d\u0131r.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Vue.js&#8217;teki bile\u015fen \u00f6rneklemesi kavram\u0131, \u00e7er\u00e7evenin g\u00fcc\u00fcn\u00fcn ve esnekli\u011finin temelini olu\u015fturur. Her bir bile\u015fen tan\u0131m\u0131n\u0131n bir plan oldu\u011funu ve bu plandan yola \u00e7\u0131karak ba\u011f\u0131ms\u0131z, kendi durumuna ve ya\u015fam d\u00f6ng\u00fcs\u00fcne sahip bir\u00e7ok \u00f6rne\u011fin olu\u015fturulabilece\u011fini anlamak, Vue uygulamalar\u0131n\u0131 geli\u015ftirirken do\u011fru mimari kararlar almam\u0131z\u0131 sa\u011flar. <code>data<\/code>&#8216;n\u0131n bir fonksiyon olmas\u0131 gereklili\u011finden <code>key<\/code> \u00f6zelli\u011finin kritik \u00f6nemine, <code>keep-alive<\/code>&#8216;\u0131n performans optimizasyonlar\u0131na ve fonksiyonel bile\u015fenlerin hafif yap\u0131s\u0131na kadar, \u00f6rnekleme mekanizmas\u0131 her seviyede kendini g\u00f6sterir. Bu derinlemesine anlay\u0131\u015fla, daha mod\u00fcler, yeniden kullan\u0131labilir, performansl\u0131 ve bak\u0131m\u0131 kolay Vue.js uygulamalar\u0131 in\u015fa edebiliriz. Vue.js&#8217;in sundu\u011fu bu g\u00fc\u00e7l\u00fc yap\u0131y\u0131 etkin bir \u015fekilde kullanarak, modern web geli\u015ftirmenin zorluklar\u0131n\u0131n \u00fcstesinden gelmek m\u00fcmk\u00fcn olacakt\u0131r.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Vue.js Bile\u015fen \u00d6rneklemesini Anlamak\nGiri\u015f\nModern web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olan bile\u015fen tabanl\u0131 mimari, uygulamalar\u0131n daha","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1402],"tags":[],"class_list":{"0":"post-37563","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-vue","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Vue.js Bile\u015fen \u00d6rneklemesini Anlamak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vue.js Bile\u015fen \u00d6rneklemesini Anlamak\" \/>\n<meta property=\"og:description\" content=\"Vue.js Bile\u015fen \u00d6rneklemesini Anlamak Giri\u015f Modern web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olan bile\u015fen tabanl\u0131 mimari, uygulamalar\u0131n daha\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-09T08:40:47+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Vue.js Bile\u015fen \u00d6rneklemesini Anlamak\",\"datePublished\":\"2026-01-09T08:40:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/\"},\"wordCount\":3125,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Vue\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/\",\"name\":\"Vue.js Bile\u015fen \u00d6rneklemesini Anlamak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-09T08:40:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vue.js Bile\u015fen \u00d6rneklemesini Anlamak\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Vue.js Bile\u015fen \u00d6rneklemesini Anlamak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/","og_locale":"tr_TR","og_type":"article","og_title":"Vue.js Bile\u015fen \u00d6rneklemesini Anlamak","og_description":"Vue.js Bile\u015fen \u00d6rneklemesini Anlamak Giri\u015f Modern web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olan bile\u015fen tabanl\u0131 mimari, uygulamalar\u0131n daha","og_url":"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-09T08:40:47+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"17 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Vue.js Bile\u015fen \u00d6rneklemesini Anlamak","datePublished":"2026-01-09T08:40:47+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/"},"wordCount":3125,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Vue"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/","url":"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/","name":"Vue.js Bile\u015fen \u00d6rneklemesini Anlamak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-09T08:40:47+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/vue-js-bilesen-orneklemesini-anlamak\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Vue.js Bile\u015fen \u00d6rneklemesini Anlamak"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37563"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37563\/revisions"}],"predecessor-version":[{"id":37564,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37563\/revisions\/37564"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}