KnockoutJS Kullanmanız için Birkaç Sebep

Arayüz Geliştiriciler Angular.js ve React.js arasında taraf olurken, pek çok geliştirici KnockoutJS’nin adını duymadı bile. Ben 1 yıldan fazla süredir bu javascript kütüphanesini kullanıyorum. Sizin de kullanmanız için birkaç sebep sıraladım.

Önceki yazılarımda daha çok web uygulamaları arayüzleri geliştirdiğimden bahsetmiştim. Bu nedenle dinamik olarak değişen ve kullanıcı ile sunucu arasında data alışverişlerini yönetmek için bir kütüphaneye ihtiyaç duyuyorduk. Dolayısıyla two-way binding denilen, arayüz ile javascript arasında data senkronizasyonu yapan bir kütüphane aradık. O dönem birlikte çalıştığımız Software Architect Cüneyt Bekar ile birlikte, dinamik arayüzleri kontrol edebileceğimiz bir framework arayışına koyulduk.

KnockoutJS kullanmaya karar verirken pek çok popüler front-end js kütüphanesinin özelliklerini ve yazım stillerini inceleme fırsatı buldum. Bu yazıda daha çok Angular.js ve React.js üzerinden gideceğim.

İhtiyaçlarımız basit: Hali hazırda çalışan projelere kolayca entegre edebileceğimiz, öğrenme süresi kısa, yazımı kolay, templating özelliğine sahip bir framework bulmak.

Angular.js

Angular.js’nin popülerliği bizi manipüle etti, onun üzerinde çok durduk. Kendi yazım stiline sahip olması bizim için büyük problem yarattı, üstelik dökümantasyonu da karmaşıktı. Projelerde backend developer’ların da gerektiğinde js ya da html dosyalarına müdahale edebileceği basitlikte kodlar yazmamız gerekiyordu. Angular’ın yazımı aşina olmayan biri için hiç de müdahale edilebilir değil. Elememizin en büyük sebeplerinden biri de routing ve controller gibi backend’de .net kullandığımız projelerde hiç kullanmayacağımız özelliklere sahip olmasıydı. Angular.js tahmin ettiğimizden çok daha büyük, ASP.NET MVC gibi bir framework çıktı.

React.js

React.js performans karşılaştırmalarında yarattığı farkla bizi heyecanlandırmıştı. Diğer taraftan JSX yazımı harika görünüyordu. Ancak bu da Angular gibi javascript’in dışında bir yazım stili ve yine aşina olmayan birinin müdahalesi zor. Diğer taraftan jsx dosyalarının compile edildikten sonra yayınlanması projelerin süresini uzatacaktır. Bizim aradığımız ise tek sayfalık bir basit bir formda veya çok sayfalı karmaşık projelerde kullanabileceğimiz ortak bir framework. React’in yazım stili küçük projeler için büyük zaman kaybına neden olabilir. Üstelik jQuery ile olan anlaşmazlığı da can sıkıcı. Çünkü müdahale etmemiz ya da ek geliştirme yapmamız gereken çoğu projede jQuery kullanılıyor. Ayrıca HTML elemanlarını da JS içine yazmamızı şart koşuyor. Virtual DOM’u kullanması pek çok açıdan fayda sağlasa da amacımız alışkanlıklarımızı bozmamak olduğundan React’i de eledik.

KnockoutJS

KnockoutJS’yi incelerken yazım stiline bayıldık. Değişken tanımlama kuralı dışında, klasik javascript yazdığınızı hissediyorsunuz. 43 kb’lık dosya boyutu ile Angular.js(81 kb) ve React.js(78 kb)’den neredeyse yarı yarıya daha küçük. Dökümantasyonu oldukça güzel ve basit anlatımlı. Tutorial uygulaması ile birkaç saatte Knockout’a hakim olmak mümkün. Ayrıca jQuery ve benzeri diğer kütüphane ve pluginlerle uyumlu. Sadece UI ve javascript arasında data-binding için yazılmış ve bunu başarıyla yapıyor.

Tarayıcı uyumluluğu konusu

Bu konu bizim karar vermemizdeki en etkin sebeplerden biri. Çünkü müşterilerden bazıları için daha önce geliştirilmiş uygulamaların ie6 uyumluluğuna dair fix çalışmaları yapıyorduk. Dolayısıyla, olabilecek en geniş tarayıcı desteğine sahip framework’ü seçmemiz gerekliydi. Angular ve React’in sadece A sınıfı tarayıcılarda(ie9 ve üstü Chrome, Firefox vb.) çalışması kararımızı kolaylaştırdı.

KnockoutJS ise ie6, firefox 2.0 ve sonrası tüm browser’ları destekliyor.

Bilin bakalım çevremde KnockoutJS kullanan başka kim var?

KnockoutJS’nin eksikleri

Angular ve React gibi geliştirme aşamasında fazla kuralcı olmaması nedeniyle spagetti kod yazımına çok müsait. Eğer kodlar doğru bir şekilde organize edilmezse büyük projelerde içinden çıkılmaz karmaşalara neden olabilir. Tüm siteyi tek view-model’da hazırlayabilir ya da tek sayfada 10 ayrı view-model kullanabilirsiniz. Mimari tamamen geliştiriciye kalmış.

Diğer yandan React ve Angular kadar kalabalık kullanıcı komünitesine sahip değil. Bu nedenle ihtiyaçlarınız için plugin aramaktansa çoğu zaman kendiniz yazmanız gerekecektir. Hazır çözümleri çok nadiren bulabiliyorsunuz.

Bir sonraki yazımda KnockoutJS ile örnek uygulama geliştirmesini anlatacağım. O zamana dek Tutorial sayfasındaki alıştırmaları yapabilirsiniz.

Eklemek istediğiniz tecrübeleriniz ya da merak ettiğiniz bir konu varsa yorum yazmaktan çekinmeyin.

Sonraki yazıda görüşmek üzere.

comments powered by Disqus