-
Öğren
Dokümantasyon
Video Dersleri
-
Ekosistem
Yardım
Proje Araçları
Ana Kütüphaneler
Son Gelişmeler
Kaynak Listeleri
- Team
- Vue'yi Destekle
- Diğer Diller
Guide
Essentials
- Kurulum
- Giriş
- Vue Örneği
- Şablon Sentaksı
- Computed Properties and Watchers
- Class and Style Bindings
- Conditional Rendering
- List Rendering
- Event Handling
- Form Input Bindings
- Components Basics
Components In-Depth
- Component Registration
- Props
- Custom Events
- Slots
- Dynamic & Async Components
- Handling Edge Cases
Transitions & Animation
- Enter/Leave & List Transitions
- State Transitions
Reusability & Composition
- Mixins
- Custom Directives
- Render Functions & JSX
- Plugins
- Filters
Tooling
- Single File Components
- Unit Testing
- TypeScript Support
- Production Deployment
Scaling Up
- Routing
- State Management
- Server-Side Rendering
Internals
- Reactivity in Depth
Migrating
- Migration from Vue 1.x
- Migration from Vue Router 0.7.x
- Migration from Vuex 0.6.x to 1.0
Meta
- Comparison with Other Frameworks
- Join the Vue.js Community!
- Meet the Team
Vue Örneği
Bir Vue Örneği Oluşturmak
Her Vue uygulaması Vue
fonksiyonu kullanılarak yeni bir Vue örneğinin oluşturulması ile başlar:
var vm = new Vue({
// seçenekler
})
Her ne kadar MVVM deseni‘ni sıkı sıkıya takip etmese de Vue’nin tasarımı kısmen bu desenden ilham almıştır. Teknik jargon olarak Vue örneğine hitap etmek için genellikle vm
(ViewModel’in kısaltması) değişkenini kullanırız.
Bir Vue örneği oluşturduğunuzda bir seçenekler nesnesi parametre olarak girilir. Bu kılavuzun büyük bir çoğunluğu söz konusu bu seçenekleri arzu ettiğiniz davranışı elde etmek üzere nasıl kullanabileceğinizi tarif eder. Referans olarak kullanmak üzere seçeneklerin tam bir listesini API referansında bulabilirsiniz.
Bir Vue uygulaması new Vue
komutu ile yaratılan bir ana Vue örneğinden oluşur ve arzu edildiği takdirde birbiri içerisinde ve farklı projelerde kullanılabilen bileşenler halinde organize edilebilir. Örneğin bir yapılacaklar listesi uygulamasının bileşen ağacı şuna benzeyebilir:
Ana Örnek
└─ TodoList
├─ TodoItem
│ ├─ DeleteTodoButton
│ └─ EditTodoButton
└─ TodoListFooter
├─ ClearTodosButton
└─ TodoListStatistics
Bileşenler sistemine ileride daha detaylı bir şekilde değineceğiz. Şimdilik her Vue bileşeninin aynı zamanda bir Vue örneği olduğunu ve dolayısıyla aynı seçenekler nesnesini (ana örneğe özgü birkaç seçenek dışında) kabul ettiğini aklınızda bulundurun.
Veriler ve Metodlar
Bir Vue örneği oluşturulduğunda data
nesnesi içerisindeki tüm nitelikler Vue’nin otomatik tepki sistemine eklenir. Bu niteliklerin değeri değiştiğinde ekrana yansıtılan görüntü “tepki gösterecek” ve yeni değerleri yansıtmak üzere kendisini güncelleyecektir.
// Data nesnemiz
var data = { a: 1 }
// Nesneyi, Vue örneğine ekliyoruz
var vm = new Vue({
data: data
})
// Örnek içerisindeki nitelik çağrıldığında
// orijinal veriye ait değer elde edilecektir
vm.a == data.a // => true
// Örnek içerisinde nitelik değiştirildiğinde
// orijinal data nesnesi de bundan etkilenir
vm.a = 2
data.a // => 2
// ... bunun tam tersi de geçerlidir
data.a = 3
vm.a // => 3
Bu veri nesnesi değişir değişmez ekrana yansıtılan görüntü de güncellenecektir. data
içerisindeki niteliklerin reaktif olabilmeleri için söz konusu örnek yaratıldığı sırada mevcut olmaları gerektiğini unutmayın. Mesela aşağıdaki şekilde yeni bir nitelik eklediğimizi farz edelim:
vm.b = 'selam'
Bu durumda b
üzerinde gerçekleştirilen değişiklikler herhangi bir görüntü güncellemesini tetiklemeyecektir. Eğer ileride bir niteliğe ihtiyaç duyacağınızı biliyorsanız fakat bu niteliğin başlangıçta boş olması veya mevcut olmaması gerekiyorsa bir başlangıç değeri belirlemeniz gerekecektir. Örneğin:
data: {
newTodoText: '',
visitCount: 0,
hideCompletedTodos: false,
todos: [],
error: null
}
Bunun tek istisnası Object.freeze()
komutunun kullanılmasıdır. Bu durumda mevcut niteliklerdeki değişimler engellenir ve otomatik tepki sistemi değişiklikleri takip edemez.
var obj = {
foo: 'bar'
}
Object.freeze(obj)
new Vue({
el: '#app',
data: obj
})
<div id="app">
<p>{{ foo }}</p>
<!-- aşağıdaki işlem `foo`yu güncelleyemecektir! -->
<button v-on:click="foo = 'baz'">Değiştir</button>
</div>
Veri niteliklerine ek olarak Vue örnekleri birçok farklı örnek niteliklerini ve metodlarını kullanıma sunar. Kullanıcı tarafından belirlenen niteliklerden ayırt edilmeleri amacıyla $
ön eki ile kullanılırlar. Örneğin:
var data = { a: 1 }
var vm = new Vue({
el: '#example',
data: data
})
vm.$data === data // => true
vm.$el === document.getElementById('example') // => true
// $watch bir örnek metodudur
vm.$watch('a', function (newValue, oldValue) {
// Bu callback metodu `vm.a` değiştiğinde çağrılacaktır
})
İhtiyaç duyduğunuzda API referansı sayfasında örnek niteliklerinin ve metodlarının tam bir listesini bulabilirsiniz.
Örneklerin Yaşam Döngüsü Kancaları
Her Vue örneği yaratıldığı sırada bir dizi başlatma adımlarından geçer - Örneğin veri gözlem mekanizmasını kurar, şablon derlemesini gerçekleştirir, örneği DOM’a enjekte eder ve veri değiştiğinde DOM’u günceller. Bu sırada kullanıcıların belirli aşamalarda kendi kodlarını ekleyebilmesi için yaşam döngüsü kancaları adı verilen fonksiyonları yerine getirir.
Örneğin created
kancası belirli bir kodun bir örnek yaratıldıktan sonra işleme alınması için kullanılabilir:
new Vue({
data: {
a: 1
},
created: function () {
// `this` ıfadesi mevcut vm örneğini temsil eder
console.log('a'nın değeri: ' + this.a)
}
})
// => "a'nın değeri: 1" 1"
Örneklerin yaşam döngüsünün farklı aşamalarında çağrılan diğer birçok kanca vardır. Örneğin mounted
, updated
, ve destroyed
. Bütün yaşam döngüsü kancaları ait oldukları Vue örneğini temsil eden this
bağlamı ile çağrılır.
Seçenek nitelikleri ve callback metodları üzerinde created: () => console.log(this.a)
veya vm.$watch('a', newValue => this.myMethod())
gibi ok fonksiyonları kullanmayın. Ok fonksiyonları bir üst seviyedeki bağlama ait olduklarından this
ifadesi umduğunuz gibi Vue örneğine karşılık gelmeyecektir ve sık sık Uncaught TypeError: Cannot read property of undefined
ve Uncaught TypeError: this.myMethod is not a function
gibi hatalara neden olacaktır.
Yaşam Döngüsü Şeması
Aşağıda örneklerin yaşam döngüsüne ait bir şema bulabilirsiniz. Burada olup biten her şeyi tam olarak anlamanız gerekmiyor. Fakat öğrenme sürecinizde ve projelerinizde yararlı bir referans olacaktır.