Python’dan sonra öğrenmek istediğim ilk dil olan JavaScript’e şöyle bir gözatmaktayım şu aralar.
Merak ettiğim ilk şey ise:
Mevcut HTML sayfasından ayrılmadan, html>body>div etketi içerisindekileri, en kısa ve sürdürülebilir yoldan nasıl değiştirebilirim?
Daha anlaşılır olsun diye şu denememi örnek olarak veriyorum:
./index.html:
Javascriptin Java’nın devamı olduğuna dair bir kaynak verir misiniz?
Javascript işaretleme dillerinin programlama dilidir, diğer programlama dillerinden farklı olarak.
Java ise Python gibi bir programlama dilidir.
İkisinin fazlasıyla farkı var. Öncelikle Javanın öğrenilmesi önerecek kadar bu iki dili nasıl bağdaştırdınız anlayamadım.
Katılıyorum, Java ile JavaScript arasınsaki ilişki, “terlik-çorap”() ilişkisinden çok, Python ile MicroPython arasındaki işlişkiye benziyor, yani: Sözdizimleri benzer olsada farklı alanlar için yapılmış diller.
DOM hakkında bilginiz var mı? Sayfadaki bir element’i değiştirmenin yolu önce ona ulaşmak, ve daha sonrasında niteliklerini değiştirmektir. Ulaşmanın türlü yolu var. CSS selector ile ulaşabildiğiniz gibi, document.getElementsByTagName("div") gibi bir sorguyla tüm div elementlerine de ulaşabilirsiniz. Bunun için sayfadan ayrılmanıza gerek yok.
Yoksa kastettiğiniz şey başka bir şey mi?
düzeltme: Tamam kodunuzu açılır bölmeye koymuşsunuz, görmemişim. Bu yaptığınız şey SPA yani Single Page App olarak geçiyor. Bunun için de çeşitli frameworkler var. ReactJS, VueJS gibi. Saf javascript ile yaparsanız baya uğraşmanız gerekecek, o yüzden bir framework kullanmanız daha uygun.
Yazdığınız kod bu işin bir iki yönteminden biri. Sıkıntı olmadan çalışmalı.
Saf haliyle javascript kullanmak biraz zordur. Onun yerine jquery kullanın. Jquery’de html metoduyla hızlıca değiştirebiliyorsunuz.
Büyük çaplı bir proje yaparsanız jquery yorucu oluyor. Onun yerine bir javascript frameworkü kullanmak çok iyi oluyor. En kısa ve sürdürülebilir yöntem de frameworkler.
Yukarıda saydığım iki kütüphaneyi de deneyip kendiniz tecrübe etmeniz daha iyi olur. Ben şahsen ReactJS tercih ettim. VueJS kütüphanesinin syntax’ı hoşuma gitmedi açıkçası <div v-for="i in bla"></div> gibi bir syntax’a ısınamadım. AngularJS öğrenmesi diğer ikisine göre daha uzun bir süreç gerektiriyor ve henüz ona vakit ayıramadım, yorum yapamıycam yani.
Tabi herşey syntax değil, ama birisi diyelim. Instagram, facebook, medium gibi büyük şirketler ReactJS kullanıyorlar. ReactJS için kendi resmi sitesinde Türkçe kaynak da var. Bir sorunla karşılaştığınızda, aynı sorunu başka birinin yaşamış olma ihtimali ReactJS’de daha yüksek. ReactJS ayrıca Virtual DOM denilen bir teknik kullanarak hız konusunda önemli bir adım atmış aynı zamanda. Düzeltiyorum, bu ifade ReactJS kütüphanesinin diğerlerinden hızlı olduğu anlamında söylenmedi. Virtual DOM, genel olarak ReactJS ile anılan bir tekniktir ve ReactJS, normal DOM yapısına göre daha hızlı olduğu için Virtal DOM tekniğini tercih etmiştir. Durum bundan ibaret.
Hepsinin kendine göre eksileri ve artıları vardır. Hepsini deneyip, hangi işlemin, tekniğin hangisinde daha rahat yapılabildiğini tecrübe edindikten sonra birinden diğerine geçmek zor değil. Yani ayrım yapıp sadece birini öğrenmek zorunda da hissetmeyin kendinizi. Hepsini de öğrenebilirsiniz. Hatta ReactJS ve VueJS kütüphanelerini aynı projede de kullandım.
Ama siz tabi yeni başladınız Javascript’e. Bence önce Javascript temelinizi sağlamlaştırın. Sonra kütüphanelere geçiş yaparsınız.
Yanlış anlamayın ama biraz daha çalışmanızı tavsiye ederim. let, var, const arasındaki farklar, this kullanımı, promise, async ve await kullanımı, callback mekanizması, AJAX, websocket, Javascript obje yapısı, prototype, tarayıcılar arasındaki uyumsuzluk çözümleri gibi konuları tercüme etmek zor diyelim.
Burayı daha sonra okuyacaklar için düzeltme ihtiyacı duydum. VueJS de Virtual DOM tekniğini kullanıyor. Yani hız konusunda çok bir fark yok aralarında.
Burada hız karşılaştırmasından değil de, ReactJS kütüphanesinin bir özelliğinden bahsetmiştim. Yine de ekleme için teşekkür ederim. ReactJS, bir güncelleme durumunda alt bileşenleri baştan oluşturabiliyor performans olarak çok az da olsa VueJS’den geri de kalabilir karmaşık bir bileşen yapısında. Ama bildiğim kadarıyla VueJS alt bileşenlerin tekrar işlenmesini engelleyebiliyor.
Eğer ingilizceniz varsa çok güzel kaynaklar var. Zaten javascript tarayıcı üzerinde çalıştığı için(evet biliyorum nodejs var ama konumuz bu değil), javascript ile ilgili kaynaklar interaktif oluyor genelde, yani hem öğren hem uygula. Bu yüzden çok daha etkili ve hızlı öğrenebiliyorsunuz. İngilizce artık problem değil bence. Eksiğiniz varsa bile eklentilerle çok rahat bir şekilde ingilizce bir kaynağı okuyabilirsiniz.
JavaScript framework’lerini biraz inceledim ve önce kendimi biraz zorlamak istedim. Ortaya şöyle birşey çıktı:
Yazan kişi olarak, güzel bir iş çıkardığımı düşünüyorum. Yine de hem fikirlerinizi almak hem de “belki birine bir faydası dokunur” diye, paylaşmak istedim.