{"id":38818,"date":"2026-02-08T13:41:28","date_gmt":"2026-02-08T10:41:28","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=38818"},"modified":"2026-02-08T13:41:28","modified_gmt":"2026-02-08T10:41:28","slug":"vue-nedir-ve-neden-kullanmaliyiz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/","title":{"rendered":"Vue Nedir ve Neden Kullanmal\u0131y\u0131z?"},"content":{"rendered":"<p><body><\/p>\n<p>Web geli\u015ftirme d\u00fcnyas\u0131 s\u00fcrekli evriliyor ve bu dinamik ortamda geli\u015ftiricilerin i\u015flerini kolayla\u015ft\u0131ran, verimli ve esnek ara\u00e7lara olan ihtiya\u00e7 her ge\u00e7en g\u00fcn art\u0131yor. Bu ara\u00e7lardan biri de modern ve performans\u0131 y\u00fcksek kullan\u0131c\u0131 aray\u00fczleri (UI) olu\u015fturmak i\u00e7in kullan\u0131lan a\u015famal\u0131 (progressive) JavaScript \u00e7er\u00e7evesi Vue.js&#8217;dir. Bu rehberde, Vue.js&#8217;e yeni ba\u015flayanlar i\u00e7in temel kavramlar\u0131, bir Vue projesi olu\u015fturma ad\u0131mlar\u0131n\u0131 ve ana \u00f6zelliklerini detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<p>Amac\u0131m\u0131z, bu rehberi tamamlad\u0131\u011f\u0131n\u0131zda kendi Vue projelerinizi ba\u015flatabilecek, temel bile\u015fenleri olu\u015fturabilecek ve Vue&#8217;nun sundu\u011fu avantajlar\u0131 kullanarak interaktif web uygulamalar\u0131 geli\u015ftirebilecek seviyeye gelmenizdir.<\/p>\n<h2>Vue Nedir ve Neden Kullanmal\u0131y\u0131z?<\/h2>\n<p>Vue.js, kullan\u0131c\u0131 aray\u00fczleri olu\u015fturmak i\u00e7in kullan\u0131lan a\u00e7\u0131k kaynakl\u0131 bir JavaScript \u00e7er\u00e7evesidir. Evan You taraf\u0131ndan geli\u015ftirilen ve s\u00fcrekli b\u00fcy\u00fcyen g\u00fc\u00e7l\u00fc bir toplulu\u011fa sahip olan Vue, \u00f6\u011frenme e\u011frisinin d\u00fc\u015f\u00fckl\u00fc\u011f\u00fc, esnekli\u011fi ve performans\u0131 ile \u00f6ne \u00e7\u0131kar. &#8220;A\u015famal\u0131 \u00e7er\u00e7eve&#8221; olarak tan\u0131mlanmas\u0131n\u0131n nedeni, projenizin ihtiyac\u0131na g\u00f6re k\u00fc\u00e7\u00fck bir interaktif bile\u015fenden, tek sayfal\u0131k karma\u015f\u0131k bir uygulamaya (SPA &#8211; Single Page Application) kadar her \u00f6l\u00e7ekte kullan\u0131labilmesidir.<\/p>\n<h3>Vue&#8217;nun Ba\u015fl\u0131ca Avantajlar\u0131:<\/h3>\n<ul>\n<li><strong>A\u015famal\u0131 \u00d6\u011frenme ve Esneklik:<\/strong> Vue, mevcut projelerinize kolayca entegre edilebilir. Sadece k\u00fc\u00e7\u00fck bir b\u00f6l\u00fcm\u00fc i\u00e7in Vue kullanmaya ba\u015flayabilir, zamanla kapsam\u0131n\u0131 geni\u015fletebilirsiniz. HTML, CSS ve temel JavaScript bilginiz varsa, Vue&#8217;yu \u00f6\u011frenmeniz olduk\u00e7a h\u0131zl\u0131 olacakt\u0131r.<\/li>\n<li><strong>Performans ve Verimlilik:<\/strong> Sanal DOM (Virtual DOM) kullanarak performans\u0131 optimize eder. Sadece de\u011fi\u015fen k\u0131s\u0131mlar\u0131 g\u00fcncelleyerek taray\u0131c\u0131 \u00fczerinde daha h\u0131zl\u0131 tepki veren uygulamalar olu\u015fturman\u0131za olanak tan\u0131r.<\/li>\n<li><strong>Kapsaml\u0131 Ekosistem:<\/strong> Vue Router (y\u00f6nlendirme), Vuex (durum y\u00f6netimi), Vue CLI (proje olu\u015fturma ve y\u00f6netimi) gibi resmi ara\u00e7lar ve k\u00fct\u00fcphanelerle birlikte gelir. Bu da b\u00fcy\u00fck \u00f6l\u00e7ekli uygulamalar geli\u015ftirirken size sa\u011flam bir temel sunar.<\/li>\n<li><strong>Harika Dok\u00fcmantasyon ve Topluluk:<\/strong> Vue&#8217;nun dok\u00fcmantasyonu son derece anla\u015f\u0131l\u0131r ve detayl\u0131d\u0131r. Geni\u015f ve aktif toplulu\u011fu sayesinde kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z sorunlara h\u0131zl\u0131ca \u00e7\u00f6z\u00fcm bulabilirsiniz.<\/li>\n<\/ul>\n<h2>Vue Projesi Olu\u015fturma ve Temeller<\/h2>\n<p>Vue ile geli\u015ftirme yapmaya ba\u015flamadan \u00f6nce, bilgisayar\u0131n\u0131zda baz\u0131 ara\u00e7lar\u0131n kurulu olmas\u0131 gerekmektedir. En temel gereksinim Node.js ve npm (Node Package Manager) veya Yarn&#8217;d\u0131r. Bunlar, JavaScript paketlerini y\u00f6netmenizi ve Vue CLI gibi ara\u00e7lar\u0131 \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 sa\u011flar.<\/p>\n<h3>1. Ortam Kurulumu (Node.js ve npm\/Yarn)<\/h3>\n<p>E\u011fer bilgisayar\u0131n\u0131zda Node.js kurulu de\u011filse, <a href=\"https:\/\/nodejs.org\/\" target=\"_blank\">Node.js resmi web sitesinden<\/a> indirebilirsiniz. Node.js kurulumu ile birlikte npm de otomatik olarak kurulacakt\u0131r. Kurulumu tamamlad\u0131ktan sonra, komut istemcisini (terminal veya PowerShell) a\u00e7arak a\u015fa\u011f\u0131daki komutlarla kurulumu kontrol edebilirsiniz:<\/p>\n<pre><code>node -v\nnpm -v\n<\/code><\/pre>\n<p>\u0130ste\u011fe ba\u011fl\u0131 olarak, npm yerine daha h\u0131zl\u0131 ve g\u00fcvenilir bir paket y\u00f6neticisi olan Yarn&#8217;\u0131 da kullanabilirsiniz. Yarn kurulumu i\u00e7in:<\/p>\n<pre><code>npm install -g yarn\nyarn -v\n<\/code><\/pre>\n<h3>2. Vue CLI ile Proje Olu\u015fturma<\/h3>\n<p>Vue CLI (Command Line Interface), Vue projelerini h\u0131zl\u0131 bir \u015fekilde olu\u015fturmak ve y\u00f6netmek i\u00e7in kullan\u0131lan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Vue CLI&#8217;y\u0131 global olarak kurmak i\u00e7in a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>npm install -g @vue\/cli\n<h2>veya<\/h2>\nyarn global add @vue\/cli\n<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, yeni bir Vue projesi olu\u015fturmak i\u00e7in istedi\u011finiz bir klas\u00f6re gidin ve \u015fu komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>vue create my-vue-app\n<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Vue CLI size projeniz i\u00e7in baz\u0131 yap\u0131land\u0131rma se\u00e7enekleri sunacakt\u0131r. Genellikle &#8220;Default (Vue 3)&#8221; veya &#8220;Default (Vue 2)&#8221; se\u00e7ene\u011fini se\u00e7mek ba\u015flang\u0131\u00e7 i\u00e7in yeterlidir. E\u011fer Vue 3&#8217;\u00fc tercih ediyorsan\u0131z, varsay\u0131lan se\u00e7ene\u011fi kullanabilirsiniz. Se\u00e7iminizi yapt\u0131ktan sonra CLI, gerekli paketleri indirip projenizi olu\u015fturacakt\u0131r.<\/p>\n<p>Proje olu\u015fturulduktan sonra, proje dizinine girin ve uygulamay\u0131 ba\u015flat\u0131n:<\/p>\n<pre><code>cd my-vue-app\nnpm run serve\n<h2>veya<\/h2>\nyarn serve\n<\/code><\/pre>\n<p>Bu komut, geli\u015ftirme sunucusunu ba\u015flatacak ve uygulaman\u0131z\u0131 genellikle <code>http:\/\/localhost:8080\/<\/code> adresinde g\u00f6r\u00fcnt\u00fcleyebileceksiniz.<\/p>\n<h3>3. Proje Yap\u0131s\u0131<\/h3>\n<p><code>my-vue-app<\/code> dizinine bakt\u0131\u011f\u0131n\u0131zda a\u015fa\u011f\u0131daki gibi bir yap\u0131 g\u00f6receksiniz:<\/p>\n<ul>\n<li><code>node_modules\/<\/code>: Projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 i\u00e7eren klas\u00f6r.<\/li>\n<li><code>public\/<\/code>: HTML dosyalar\u0131 (<code>index.html<\/code>) ve statik varl\u0131klar (resimler vb.) gibi derlenmemi\u015f dosyalar\u0131 i\u00e7erir.<\/li>\n<li><code>src\/<\/code>: Uygulaman\u0131z\u0131n ana kodunu i\u00e7eren klas\u00f6r.\n<ul>\n<li><code>assets\/<\/code>: Resimler, CSS dosyalar\u0131 gibi statik varl\u0131klar.<\/li>\n<li><code>components\/<\/code>: Yeniden kullan\u0131labilir Vue bile\u015fenleri.<\/li>\n<li><code>App.vue<\/code>: Ana uygulama bile\u015feni.<\/li>\n<li><code>main.js<\/code>: Uygulaman\u0131z\u0131n ba\u015flang\u0131\u00e7 noktas\u0131. Vue \u00f6rne\u011fini olu\u015fturur ve <code>App.vue<\/code>&#8216;yu DOM&#8217;a ba\u011flar.<\/li>\n<\/ul>\n<\/li>\n<li><code>.gitignore<\/code>: Git taraf\u0131ndan izlenmeyecek dosyalar\u0131 ve klas\u00f6rleri belirtir.<\/li>\n<li><code>babel.config.js<\/code>: Babel yap\u0131land\u0131rma dosyas\u0131.<\/li>\n<li><code>package.json<\/code>: Projenizin metadata&#8217;s\u0131n\u0131, ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 ve betiklerini i\u00e7erir.<\/li>\n<li><code>README.md<\/code>: Projenizin a\u00e7\u0131klamas\u0131.<\/li>\n<\/ul>\n<h3>4. \u0130lk Bile\u015fenimizi Anlayal\u0131m (<code>App.vue<\/code>)<\/h3>\n<p>Vue bile\u015fenleri, <code>.vue<\/code> uzant\u0131l\u0131 tek dosyalard\u0131r (Single File Components &#8211; SFC). Bu dosyalar, bir bile\u015fenin HTML \u015fablonunu (<code><template><\/code>), JavaScript mant\u0131\u011f\u0131n\u0131 (<code><script><\/code>) ve stilini (<code><\/p>\n<style><\/code>) bir arada bar\u0131nd\u0131r\u0131r. <code>App.vue<\/code> dosyas\u0131, uygulaman\u0131z\u0131n k\u00f6k bile\u015fenidir.<\/p>\n<pre><code class=\"language-html\"><template>\n  <div id=\"app\">\n    <img decoding=\"async\" alt=\"Vue logo\" src=\".\/assets\/logo.png\">\n    <HelloWorld msg=\"Welcome to Your Vue.js App\"\/>\n  <\/div>\n<\/template>\n\n<script>\nimport HelloWorld from '.\/components\/HelloWorld.vue'\n\nexport default {\n  name: 'App',\n  components: {\n    HelloWorld\n  }\n}\n<\/script>\n\n<style>\n#app {\n  font-family: Avenir, Helvetica, Arial, sans-serif;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  text-align: center;\n  color: #2c3e50;\n  margin-top: 60px;\n}\n<\/style>\n<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte:<\/p>\n<ul>\n<li><code><template><\/code>: Bile\u015fenin HTML yap\u0131s\u0131n\u0131 tan\u0131mlar. Burada bir resim ve <code>HelloWorld<\/code> ad\u0131nda ba\u015fka bir bile\u015fen kullan\u0131l\u0131yor.<\/li>\n<li><code><script><\/code>: Bile\u015fenin JavaScript mant\u0131\u011f\u0131n\u0131 i\u00e7erir. <code>HelloWorld<\/code> bile\u015feni import edilmi\u015f ve <code>components<\/code> \u00f6zelli\u011fi ile bu bile\u015fenin <code>App.vue<\/code> i\u00e7inde kullan\u0131labilece\u011fi belirtilmi\u015ftir. <code>msg<\/code>, <code>HelloWorld<\/code> bile\u015fenine g\u00f6nderilen bir \"prop\"tur (\u00f6zellik).<\/li>\n<li><code><br \/>\n<style><\/code>: Bile\u015fenin CSS stillerini i\u00e7erir. <code>scoped<\/code> niteli\u011fi eklenirse, stiller sadece bu bile\u015feni etkiler.<\/li>\n<\/ul>\n<h2>Vue Temel Kavramlar\u0131<\/h2>\n<p>Vue'nun g\u00fcc\u00fcn\u00fc anlamak i\u00e7in, veri ba\u011flama, olay y\u00f6netimi ve bile\u015fen yap\u0131s\u0131 gibi temel kavramlar\u0131 \u00f6\u011frenmek \u00f6nemlidir.<\/p>\n<h3>1. \u015eablon S\u00f6zdizimi (Template Syntax)<\/h3>\n<p>Vue, HTML tabanl\u0131 \u015fablon s\u00f6zdizimi kullan\u0131r. Bu sayede DOM'a reaktif verileri bildirimsel olarak ba\u011flayabilirsiniz.<\/p>\n<h4>Metin \u0130\u00e7erik Ba\u011flama (Text Interpolation)<\/h4>\n<p>En temel veri ba\u011flama y\u00f6ntemidir. Veri \u00f6zelliklerini \u00e7ift s\u00fcsl\u00fc parantez i\u00e7ine alarak HTML'e g\u00f6mebilirsiniz.<\/p>\n<pre><code class=\"language-html\"><template>\n  <div>\n    <p>Merhaba, {{ name }}!<\/p>\n    <p>Bug\u00fcn\u00fcn tarihi: {{ new Date().toLocaleDateString() }}<\/p>\n  <\/div>\n<\/template>\n\n<script>\nexport default {\n  data() {\n    return {\n      name: 'Vue Geli\u015ftiricisi'\n    }\n  }\n}\n<\/script>\n<\/code><\/pre>\n<h4>Nitelik Ba\u011flama (Attribute Binding)<\/h4>\n<p>HTML niteliklerine (attribute) dinamik de\u011ferler atamak i\u00e7in <code>v-bind<\/code> direktifini kullan\u0131r\u0131z. Genellikle <code>:<\/code> k\u0131sa yolu tercih edilir.<\/p>\n<pre><code class=\"language-html\"><template>\n  <div>\n    <a v-bind:href=\"vueLink\">Vue.js Dok\u00fcmantasyonu<\/a>\n    <!-- K\u0131sa yolu -->\n    <img :src=\"imageUrl\" :alt=\"imageAlt\">\n  <\/div>\n<\/template>\n\n<script>\nexport default {\n  data() {\n    return {\n      vueLink: 'https:\/\/vuejs.org',\n      imageUrl: 'https:\/\/vuejs.org\/images\/logo.png',\n      imageAlt: 'Vue Logosu'\n    }\n  }\n}\n<\/script>\n<\/code><\/pre>\n<h4>Ko\u015fullu Render Etme (Conditional Rendering)<\/h4>\n<p><code>v-if<\/code>, <code>v-else-if<\/code>, <code>v-else<\/code> ve <code>v-show<\/code> direktifleri ile bir elementin ko\u015fullu olarak olu\u015fturulup olu\u015fturulmayaca\u011f\u0131n\u0131 kontrol edebilirsiniz.<\/p>\n<ul>\n<li><code>v-if<\/code>: Ko\u015ful yanl\u0131\u015fsa element DOM'dan tamamen kald\u0131r\u0131l\u0131r.<\/li>\n<li><code>v-show<\/code>: Ko\u015ful yanl\u0131\u015fsa elementin <code>display<\/code> CSS \u00f6zelli\u011fi <code>none<\/code> olarak ayarlan\u0131r, ancak element DOM'da kal\u0131r. S\u0131k\u00e7a de\u011fi\u015fen ko\u015fullar i\u00e7in <code>v-show<\/code> daha performansl\u0131 olabilir.<\/li>\n<\/ul>\n<pre><code class=\"language-html\"><template>\n  <div>\n    <button @click=\"toggleMessage\">Mesaj\u0131 G\u00f6ster\/Gizle<\/button>\n    <p v-if=\"showMessage\">Bu mesaj v-if ile g\u00f6steriliyor.<\/p>\n    <p v-else>Mesaj gizli.<\/p>\n\n    <p v-show=\"showAnotherMessage\">Bu mesaj v-show ile g\u00f6steriliyor.<\/p>\n  <\/div>\n<\/template>\n\n<script>\nexport default {\n  data() {\n    return {\n      showMessage: true,\n      showAnotherMessage: false\n    }\n  },\n  methods: {\n    toggleMessage() {\n      this.showMessage = !this.showMessage;\n      this.showAnotherMessage = !this.showAnotherMessage; \/\/ v-show \u00f6rne\u011fi i\u00e7in\n    }\n  }\n}\n<\/script>\n<\/code><\/pre>\n<h4>Liste Render Etme (List Rendering)<\/h4>\n<p><code>v-for<\/code> direktifi ile bir dizideki \u00f6\u011feleri veya bir nesnedeki \u00f6zellikleri yineleyerek listeler olu\u015fturabilirsiniz. <code>v-for<\/code> kullan\u0131rken, listenin her bir \u00f6\u011fesi i\u00e7in benzersiz bir <code>:key<\/code> niteli\u011fi sa\u011flamak \u00f6nemlidir. Bu, Vue'nun listeyi daha verimli bir \u015fekilde g\u00fcncellemesine yard\u0131mc\u0131 olur.<\/p>\n<pre><code class=\"language-html\"><template>\n  <div>\n    <ul>\n      <li v-for=\"(item, index) in items\" :key=\"item.id\">\n        {{ index + 1 }}. {{ item.text }}\n      <\/li>\n    <\/ul>\n  <\/div>\n<\/template>\n\n<script>\nexport default {\n  data() {\n    return {\n      items: [\n        { id: 1, text: '\u00d6\u011fe 1' },\n        { id: 2, text: '\u00d6\u011fe 2' },\n        { id: 3, text: '\u00d6\u011fe 3' }\n      ]\n    }\n  }\n}\n<\/script>\n<\/code><\/pre>\n<h3>2. Olay Y\u00f6netimi (Event Handling)<\/h3>\n<p><code>v-on<\/code> direktifi (veya k\u0131sa yolu <code>@<\/code>) ile DOM olaylar\u0131n\u0131 dinleyebilir ve bir metod \u00e7a\u011f\u0131rabilirsiniz.<\/p>\n<pre><code class=\"language-html\"><template>\n  <div>\n    <button v-on:click=\"handleClick\">Bana T\u0131kla<\/button>\n    <!-- K\u0131sa yolu -->\n    <button @click=\"incrementCounter\">Sayac\u0131 Artt\u0131r<\/button>\n    <p>Saya\u00e7: {{ counter }}<\/p>\n\n    <input type=\"text\" @input=\"updateMessage\" :value=\"message\">\n    <p>Mesaj: {{ message }}<\/p>\n  <\/div>\n<\/template>\n\n<script>\nexport default {\n  data() {\n    return {\n      counter: 0,\n      message: 'Merhaba Vue'\n    }\n  },\n  methods: {\n    handleClick() {\n      alert('Butona t\u0131kland\u0131!');\n    },\n    incrementCounter() {\n      this.counter++;\n    },\n    updateMessage(event) {\n      this.message = event.target.value;\n    }\n  }\n}\n<\/script>\n<\/code><\/pre>\n<h3>3. \u0130ki Y\u00f6nl\u00fc Veri Ba\u011flama (Two-Way Data Binding)<\/h3>\n<p>Form girdileriyle \u00e7al\u0131\u015f\u0131rken, <code>v-model<\/code> direktifi, form girdisi elementleri ve uygulama durumu aras\u0131nda iki y\u00f6nl\u00fc veri ba\u011flamay\u0131 kolayla\u015ft\u0131r\u0131r. Bu, kullan\u0131c\u0131n\u0131n girdisini otomatik olarak bile\u015fenin veri \u00f6zelli\u011fine g\u00fcnceller ve veri \u00f6zelli\u011fi de\u011fi\u015fti\u011finde girdiyi g\u00fcnceller.<\/p>\n<pre><code class=\"language-html\"><template>\n  <div>\n    <input type=\"text\" v-model=\"searchText\" placeholder=\"Bir \u015feyler yaz\u0131n...\">\n    <p>Aranan metin: {{ searchText }}<\/p>\n\n    <textarea v-model=\"description\" placeholder=\"A\u00e7\u0131klama girin...\"><\/textarea>\n    <p>A\u00e7\u0131klama: {{ description }}<\/p>\n  <\/div>\n<\/template>\n\n<script>\nexport default {\n  data() {\n    return {\n      searchText: '',\n      description: ''\n    }\n  }\n}\n<\/script>\n<\/code><\/pre>\n<h3>4. Bile\u015fenler (Components)<\/h3>\n<p>Bile\u015fenler, Vue uygulamalar\u0131n\u0131n temel yap\u0131 ta\u015flar\u0131d\u0131r. Uygulaman\u0131z\u0131 k\u00fc\u00e7\u00fck, ba\u011f\u0131ms\u0131z ve yeniden kullan\u0131labilir par\u00e7alara ay\u0131rman\u0131za olanak tan\u0131r. Her bile\u015fen kendi \u015fablonuna, mant\u0131\u011f\u0131na ve stiline sahiptir.<\/p>\n<h4>Bile\u015fen Olu\u015fturma<\/h4>\n<p><code>src\/components<\/code> klas\u00f6r\u00fcnde yeni bir <code>.vue<\/code> dosyas\u0131 olu\u015fturarak bir bile\u015fen tan\u0131mlayabilirsiniz. \u00d6rne\u011fin, <code>MyButton.vue<\/code>:<\/p>\n<pre><code class=\"language-html\"><template>\n  <button class=\"my-button\" @click=\"$emit('customClick')\">\n    {{ label }}\n  <\/button>\n<\/template>\n\n<script>\nexport default {\n  props: {\n    label: {\n      type: String,\n      default: 'Varsay\u0131lan Buton'\n    }\n  }\n}\n<\/script>\n\n<style scoped>\n.my-button {\n  background-color: #4CAF50;\n  color: white;\n  padding: 10px 15px;\n  border: none;\n  border-radius: 5px;\n  cursor: pointer;\n  font-size: 16px;\n}\n.my-button:hover {\n  background-color: #45a049;\n}\n<\/style>\n<\/code><\/pre>\n<h4>Props ile Veri Aktar\u0131m\u0131<\/h4>\n<p>\u00dcst bile\u015fenden alt bile\u015fene veri aktarmak i\u00e7in \"props\" kullan\u0131l\u0131r. Alt bile\u015fende <code>props<\/code> \u00f6zelli\u011fi tan\u0131mlan\u0131r ve \u00fcst bile\u015fenden bu prop'a de\u011fer atan\u0131r.<\/p>\n<p>Yukar\u0131daki <code>MyButton.vue<\/code> \u00f6rne\u011finde <code>label<\/code> bir proptur. \u015eimdi bu butonu <code>App.vue<\/code> i\u00e7inde kullanal\u0131m:<\/p>\n<pre><code class=\"language-html\"><template>\n  <div>\n    <h3>Bile\u015fen \u00d6rne\u011fi<\/h3>\n    <MyButton label=\"T\u0131kla Bana!\" @customClick=\"handleButtonClick\"\/>\n    <MyButton label=\"Kaydet\" @customClick=\"handleSaveClick\"\/>\n    <p>Buton t\u0131kland\u0131: {{ clickCount }} kez<\/p>\n  <\/div>\n<\/template>\n\n<script>\nimport MyButton from '.\/components\/MyButton.vue';\n\nexport default {\n  components: {\n    MyButton\n  },\n  data() {\n    return {\n      clickCount: 0\n    }\n  },\n  methods: {\n    handleButtonClick() {\n      this.clickCount++;\n      console.log('T\u0131kla Bana butonu t\u0131kland\u0131!');\n    },\n    handleSaveClick() {\n      this.clickCount++;\n      console.log('Kaydet butonu t\u0131kland\u0131!');\n    }\n  }\n}\n<\/script>\n<\/code><\/pre>\n<h4>Emit ile Olay Yayma<\/h4>\n<p>Alt bile\u015fenden \u00fcst bile\u015fene bir olay bildirmek i\u00e7in <code>$emit<\/code> kullan\u0131l\u0131r. Alt bile\u015fen bir olay yayar ve \u00fcst bile\u015fen bu olay\u0131 dinleyerek tepki verir.<\/p>\n<p><code>MyButton.vue<\/code> i\u00e7inde <code>@click=\"$emit('customClick')\"<\/code> ifadesi, butona t\u0131kland\u0131\u011f\u0131nda <code>customClick<\/code> ad\u0131nda bir olay yay\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6sterir. <code>App.vue<\/code> i\u00e7inde <code>@customClick=\"handleButtonClick\"<\/code> ile bu olay dinlenir ve <code>handleButtonClick<\/code> metodu \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r.<\/p>\n<h2>Sonu\u00e7 ve SSS<\/h2>\n<p>Bu rehberde, Vue.js'e giri\u015f yaparak temel kavramlar\u0131n\u0131, bir Vue projesi olu\u015fturma ad\u0131mlar\u0131n\u0131 ve ana \u00f6zelliklerini detayl\u0131 bir \u015fekilde inceledik. Vue'nun a\u015famal\u0131 yap\u0131s\u0131, g\u00fc\u00e7l\u00fc veri ba\u011flama mekanizmalar\u0131, bile\u015fen tabanl\u0131 mimarisi ve zengin ekosistemi, modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in onu m\u00fckemmel bir se\u00e7im haline getiriyor.<\/p>\n<p>Art\u0131k Vue CLI ile bir proje olu\u015fturabilir, temel \u015fablon s\u00f6zdizimini kullanabilir, olaylar\u0131 y\u00f6netebilir, iki y\u00f6nl\u00fc veri ba\u011flama yapabilir ve bile\u015fenler aras\u0131 veri ak\u0131\u015f\u0131n\u0131 (props ve emit) anlayabilirsiniz. Bu bilgiler, Vue yolculu\u011funuzda sa\u011flam bir ba\u015flang\u0131\u00e7 yapman\u0131z\u0131 sa\u011flayacakt\u0131r. Daha derinlemesine bilgi edinmek i\u00e7in Vue'nun resmi dok\u00fcmantasyonunu ke\u015ffetmeye devam etmeniz \u015fiddetle tavsiye edilir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>1. Vue.js \u00f6\u011frenmek ne kadar s\u00fcrer?<\/strong><\/p>\n<p>Temel HTML, CSS ve JavaScript bilginiz varsa, Vue'nun temel kavramlar\u0131n\u0131 kavramak genellikle birka\u00e7 g\u00fcn ila birka\u00e7 hafta s\u00fcrer. Vue'nun \u00f6\u011frenme e\u011frisi di\u011fer baz\u0131 \u00e7er\u00e7evelere g\u00f6re daha d\u00fc\u015f\u00fckt\u00fcr.<\/p>\n<p><strong>2. Vue 2 mi yoksa Vue 3 m\u00fc \u00f6\u011frenmeliyim?<\/strong><\/p>\n<p>Yeni bir projeye ba\u015fl\u0131yorsan\u0131z veya Vue \u00f6\u011frenmeye yeni ba\u015fl\u0131yorsan\u0131z, kesinlikle Vue 3'\u00fc \u00f6\u011frenmelisiniz. Vue 3 daha performansl\u0131, daha k\u00fc\u00e7\u00fck boyutlu ve Composition API gibi g\u00fc\u00e7l\u00fc yeni \u00f6zellikler sunar. Vue 2 hala destekleniyor olsa da, gelecekteki geli\u015ftirmeler Vue 3 \u00fczerine odaklanacakt\u0131r.<\/p>\n<p><strong>3. Vue CLI kullanmak zorunda m\u0131y\u0131m?<\/strong><\/p>\n<p>Hay\u0131r, de\u011filsiniz. Vue CLI, b\u00fcy\u00fck ve karma\u015f\u0131k projeler i\u00e7in g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Ancak, sadece k\u00fc\u00e7\u00fck bir b\u00f6l\u00fcm\u00fc i\u00e7in Vue kullanmak istiyorsan\u0131z, do\u011frudan CDN \u00fczerinden Vue'yu HTML dosyan\u0131za dahil edebilirsiniz. Yine de, \u00e7o\u011fu modern Vue projesi i\u00e7in Vue CLI veya Vite gibi bir derleme arac\u0131 kullan\u0131lmas\u0131 \u00f6nerilir.<\/p>\n<p><strong>4. Vuex nedir ve ne zaman kullanmal\u0131y\u0131m?<\/strong><\/p>\n<p>Vuex, Vue uygulamalar\u0131 i\u00e7in bir durum y\u00f6netim k\u00fct\u00fcphanesidir. Uygulaman\u0131z b\u00fcy\u00fcd\u00fck\u00e7e ve bir\u00e7ok bile\u015fen aras\u0131nda veri payla\u015f\u0131m\u0131 karma\u015f\u0131k hale geldik\u00e7e Vuex kullanmak, uygulaman\u0131z\u0131n durumunu merkezi ve \u00f6ng\u00f6r\u00fclebilir bir \u015fekilde y\u00f6netmenize yard\u0131mc\u0131 olur. K\u00fc\u00e7\u00fck projeler i\u00e7in genellikle gerekli de\u011fildir.<\/p>\n<p><strong>5. Vue Router nedir?<\/strong><\/p>\n<p>Vue Router, tek sayfal\u0131k uygulamalar (SPA) i\u00e7in resmi y\u00f6nlendirme k\u00fct\u00fcphanesidir. Uygulaman\u0131zda farkl\u0131 URL'lere kar\u015f\u0131l\u0131k gelen farkl\u0131 g\u00f6r\u00fcn\u00fcmleri veya bile\u015fenleri y\u00f6netmenizi sa\u011flar, b\u00f6ylece taray\u0131c\u0131da sayfa yenilenmeden gezinti yapabilirsiniz.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Web geli\u015ftirme d\u00fcnyas\u0131 s\u00fcrekli evriliyor ve bu dinamik ortamda geli\u015ftiricilerin i\u015flerini kolayla\u015ft\u0131ran, verimli ve esnek ara\u00e7lara olan ihti","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-38818","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 Nedir ve Neden Kullanmal\u0131y\u0131z? - 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-nedir-ve-neden-kullanmaliyiz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vue Nedir ve Neden Kullanmal\u0131y\u0131z?\" \/>\n<meta property=\"og:description\" content=\"Web geli\u015ftirme d\u00fcnyas\u0131 s\u00fcrekli evriliyor ve bu dinamik ortamda geli\u015ftiricilerin i\u015flerini kolayla\u015ft\u0131ran, verimli ve esnek ara\u00e7lara olan ihti\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-08T10:41:28+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=\"9 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Vue Nedir ve Neden Kullanmal\u0131y\u0131z?\",\"datePublished\":\"2026-02-08T10:41:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/\"},\"wordCount\":1780,\"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-nedir-ve-neden-kullanmaliyiz\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/\",\"name\":\"Vue Nedir ve Neden Kullanmal\u0131y\u0131z? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-08T10:41:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vue Nedir ve Neden Kullanmal\u0131y\u0131z?\"}]},{\"@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 Nedir ve Neden Kullanmal\u0131y\u0131z? - 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-nedir-ve-neden-kullanmaliyiz\/","og_locale":"tr_TR","og_type":"article","og_title":"Vue Nedir ve Neden Kullanmal\u0131y\u0131z?","og_description":"Web geli\u015ftirme d\u00fcnyas\u0131 s\u00fcrekli evriliyor ve bu dinamik ortamda geli\u015ftiricilerin i\u015flerini kolayla\u015ft\u0131ran, verimli ve esnek ara\u00e7lara olan ihti","og_url":"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-08T10:41:28+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"9 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Vue Nedir ve Neden Kullanmal\u0131y\u0131z?","datePublished":"2026-02-08T10:41:28+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/"},"wordCount":1780,"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-nedir-ve-neden-kullanmaliyiz\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/","url":"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/","name":"Vue Nedir ve Neden Kullanmal\u0131y\u0131z? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-08T10:41:28+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/vue-nedir-ve-neden-kullanmaliyiz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Vue Nedir ve Neden Kullanmal\u0131y\u0131z?"}]},{"@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\/38818","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=38818"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38818\/revisions"}],"predecessor-version":[{"id":38819,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38818\/revisions\/38819"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38818"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38818"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}