Rehber JavaScript'te full-stack uygulama geliştirme için önerdiğim kütüphaneler ve araçlar

  • Konuyu başlatan Konuyu başlatan brkdnmz
  • Başlangıç Tarihi Başlangıç Tarihi
  • Mesaj Mesaj 14
  • Görüntüleme Görüntüleme 741
Merhaba,

Yaklaşık 2 yıldır JavaScript'le haşır neşirim ve bu süreçte gerek isteyerek gerek istemsizce bir sürü JavaScript kütüphanesi/framework'ü keşfettim. "Acaba yeterince fazla keşfettim mi?" diye sorguladım bir, sonra "Evet, bence Techolay'da da bunları tanıtmanın sırası geldi." dedim. Umarım sizin de işinize yarayacaklar çıkar içlerinden.

İyi okumalar.
  1. TypeScriptEvet, tahtın sahibi TypeScript. Kendisi istisnai olarak JavaScript'in üzerine kurulmuş bir dil, yani kütüphane falan değil. Yaklaşık 1 yıl boyunca düz JavaScript kullandıktan sonra TypeScript'e geçtim, bir daha da JavaScript'e dönüp bakmadım (tamam, sadece birkaç kere...). TypeScript'i keşfedişim sanırım VS Code'da JavaScript kodlarken editörün hiç hata göstermemesi üzerine biraz araştırmayla gerçekleşti. Gıcık oluyordum, atıyorum bir nesnenin aslında var olmayan özelliğini yazınca editör "Sıkıntı yok, kodlamaya devam et sen." edasıyla sanki her şey düzgünmüş gibi devam etmeme izin veriyordu. Burada VS Code'un editörünü fazla gömmüş olabilirim belki ama benim deneyimlerim bu şekildeydi.

    TypeScript'in sağladığı şey (yani JavaScript'in üzerine koyduğu) tip (type) sistemi, sizi tip kullanımına zorlaması. Böylelikle örneğin tanımladığınız fonksiyonların parametrelerine tip atamak zorundasınız. Mesela bir parametre string veya sayı olabiliyorsa string | number tipini atamalısınız. Bu, sizin kendi hatalarınızdan kaçınmanızı sağlıyor. Sizi kendinizden koruyor yani TypeScript. Bir güzelliği daha var, o da tip çıkarımı. Kısaca şöyle diyebilirim: Tanımladığınız bir objenin tipini eğer siz elle yazmazsanız TypeScript sizin için tipi belirliyor, daha doğrusu biliyor.

    TypeScript'in neden JavaScript'ten katbekat daha iyi bir tercih olduğunu, dili kullanmaya başlayınca anlıyorsunuz. JavaScript'e göre tip kullanımı dolayısıyla geliştirme süreci başlarda daha yavaş olmasına rağmen uzun vadede hayat kurtarıyor TypeScript.

    Harikasın TypeScript, favorilerimdensin, bayılıyorum sana.
  2. React"İlk göz ağrım." React sayesinde frontend geliştirmeye bayılıyorum. Bir web sayfasında gördüğünüz her "dikdörtgeni/bloku" (elementi) fonksiyonel ve kendi state'lerine (durum; örneğin bir butonun "açık/kapalı" durumu) sahip birer component (bileşen) olarak tasarlamanızı teşvik eden, bunun için tasarlanmış bir frontend kütüphanesi kendisi. Kütüphane mi framework mü ("kendi kendine yeten" bir sistem) olduğu çokça tartışılıyor. Başka bir deyişle bir web sitesini/uygulamayı parçalara ayırıp parçaları tek tek geliştirmenize olanak tanıyor. Ayrıca isminden de anlaşılabileceği üzere "reaktivite" yönetimini oldukça kolaylaştırıyor (kullanıcı bir butona tıkladığında ne olacağı vb.). React'in bir üst seviyesi de kendisinin üzerine inşa edilen NextJS framework'ü. Çok detayına girmek istemiyorum ama React'in yetersiz kaldığı durumlarda imdadınıza yetişen framework'lerden biri.

    React ekosistemi fazlasıyla geniş. Farklı amaçlara yönelik çok sayıda araç mevcut. Mesela tek framework NextJS değil, statik web siteleri için başka alternatifler de mevcut ama ben kullanmadığım için yazmadım. React'le aynı amaca hizmet eden ama problemlere farklı çözümler sunan Vue, Angular, Svelte vb. kütüphanelere de göz atabilirsiniz.
  3. Tailwind CSS — Gelelim CSS'i sevdiren kütüphaneye. Sunduğu çeşit çeşit hazır class'larla (sınıf) CSS bilginiz yeterli seviyedeyse uygulamanızı Tailwind'le stillendirme oldukça eğlenceli ve kolay hale geliyor. Tüm stil sistemi class'lara bağlı olduğu için class uzunlukları rahatsız edici seviyelere gelebiliyor ancak bunu aşmak için çeşitli yöntemler de mevcut. Örneğin React ile genel stillere sahip component'lar yaratıp uygulamanızın birçok yerinde tekrar tekrar kullanabilirsiniz.
  4. tRPC — API geliştirmeyi başka bir seviyeye çıkarıyor. Şuna bakıp etkilenmediğinizi söyleyin. Çok zor, değil mi?



    Harika bi' şey ya. Hem frontend hem de backend'in TypeScript'le geliştirilip "aynı yerde" olmasını gerektiriyor (monorepo). Karşılığında sunduğu şey de backend'de yazdığınız fonksiyon biçimindeki API endpoint'lerini TypeScript destekli şekilde frontend tarafından çağırabilmeniz. Bakın, istek yolluyorsunuz demedim, direkt fonksiyon olarak çağırıyorsunuz ve böylelikle TypeScript desteği had safhada oluyor. Tabii kütüphane aslında arkada sizin için HTTP isteği yolluyor, yani dolaylı yoldan istek yolluyorsunuz aslında. Kütüphane, URL'leri kendisi otomatik oluşturuyor. Sizin hiç ilgilenmenize gerek kalmıyor.

    Bir kere tRPC kullandım, bir daha geleneksel REST yapısına geri dönesim gelmedi. Harika bir deneyim tRPC.

    Şuradaki tanıtım amaçlı videoları izleyip tRPC hakkında detaylı bilgi edinebilirsiniz: Getting Started | tRPC
  5. Prisma — Veri tabanıyla backend arasındaki bağlantıyı soyutlayan, TypeScript'i iyi derecede destekleyen güzel bir ORM kütüphanesi. Örneğin; ham SQL sorguları yerine zincir fonksiyon çağrıları yolluyorsunuz, TypeScript'teki interface'ler veri tabanındaki tabloları temsil ediyor vs. Ha, bu arada sizin için söz konusu interface'leri Prisma kendisi üretiyor. Kodu sizin yerinize "yazıyor" yani ("codegen" deniyor sanırım).

    Kullanışlı bir kütüphane, severim. Aynı amaca hizmet eden başka birçok kütüphane var ama Prisma yeterli bir tercih oldu şimdiye kadar.
  6. React Router — React'in hazır olarak desteklemediği routing hizmetini sunuyor bu kütüphane. Basit tanımıyla, farklı sayfalara farklı bağlantılar atayabiliyorsunuz. NextJS gibi framework'ler bu hizmeti kendileri sunuyor. Framework kullanmazsanız React Router güzel bir tercih.
  7. React Query (TanStack Query) — tRPC kullanmıyor musunuz veya harici bir API'a mı istek yollayacaksınız? Buyurun. Ha, tRPC de arka planda bu kütüphaneyi kullanıyor bu arada. Dokümantasyonu harika olan bu kütüphane için ben fazla bi' şey söylemeyeyim. Önermemem için bir sebep yok.
  8. clsx — Kendisi küçücük, işlevi büyük bir kütüphane. Tek yaptığı şey, React'te className yazımını sistematikleştirme. Tavsiye ederim.
  9. Framer Motion — Hoş bir animasyon kütüphanesi. Ben görece basit işlevler için kullandım şimdiye kadar ama istense ortaya çok iyi işler çıkabilir.
  10. Zod — Bir validation kütüphanesi. En yaygın kullanım alanlarından biri form girdilerini kontrol etme (yeni hesap açma, hesaba giriş vb.). API'lardan gelen cevapları da kontrolden geçirebiliyorsunuz. Tekniken uygulamadaki tüm objeleri kontrolden geçirebiliyorsunuz aslında. Bu kütüphane, TypeScript'in uygulama çalışırken de çalışan versiyonu gibi. TypeScript'in kaslısı. Severim.
  11. Zustand — React için state yönetim kütüphanelerinden biri. En popülerlerden biri olan Redux'a göre çok daha hafif ve yormamasıyla övülüyor. Ayrıca component'lardan bağımsız çalışıyor, yani mesela React'in Context'i gibi state değişikliğinde ContextProvider'ın altındaki tüm component'lar güncellenmiyor.

    Benim oldukça sevdiğim bir kütüphane. Öğrenim eğrisi yok gibi bir şey, kullanımı kolay.
  12. Lodash — Çok fazla işe yarar metot sunan, JavaScript'i sizin için kolay hale getiren bir kütüphane. Bu yönüyle jQuery'ye benzetiyorum biraz. Oldukça hoşlanırım bu kütüphaneyi kullanmaktan.
  13. React Icons — Konu ikonlar olunca hep bu kütüphaneyi tercih ederim. Birçok farklı ikon sağlayıcısını tek çatı altında topluyor.
  14. React Hook Form — Bunu da önereyim bari. Form state'ini bir hook olarak sunan bir kütüphane.
Bu rehber daha da genişletilebilir ancak burada bırakmaya karar verdim. Başka kütüphaneleri keşfetmenin zevki de size kalsın.

Okuduğunuz için teşekkürler.
 
React ve Tailwind ile çok güzel şeyler yapılabiliyor ya, bunları bir öğrenmeye başlamak gerek.

Kesinlikle, mesajınızdaki can alıcı kısmı kalınlaştırdım.

Şans vermenizi şiddetle tavsiye ettiğim kütüphaneler olur kendileri. Birkaç aycık istiyorlar sadece, çünkü yapılabilecek bol bol şey var. Öyle tak diye kapılmıyor her şey ki zevkli olmalarının sebeplerinden biri de bu.

React deneyimimden sonra rehberde bahsettiğim diğer kütüphaneleri de bir ara denemeyi düşünüyorum. Aklımda ilk olarak Vue var. React'te gerçekten hantal bulduğum çözümler var ve Vue gibi alternatiflerin daha hoş çözümler sunduğu iddia ediliyor.

Mesela React'in Zustand veya Redux gibi bir state manager'ı resmi olarak barındırmaması çok garibime gidiyor. Tamam, useReducer mevcut ama çok da iyi değil bence. Context API'ı da pek beğenmiyorum.
 
Güzel konu olmuş eline sağlık. İnsanların bunlara göre yol alması iyi olur.

Sağ olun.

Tabii yeni başlayanların illa sunduğum kütüphaneleri kullanmasına gerek yok ama bir başlangıç sunmak istedim.

JavaScript'te bence kütüphane aşinalığı başlı başına edinilmesi gereken bir tecrübe ve maalesef nereden başlamak gerektiğini çözmek oldukça zorlayıcı olabiliyor çünkü farklı ihtiyaçlar için farklı farklı tonla kütüphane var. Fazlasıyla zaman ayırmak gerekiyor sırf keşif sürecine. Belki kimileri için süreci hızlandırır diye rehber olarak sunmak istedim beğendiklerimi.
 
Bu kadar zımbırtı kütüphaneler ile uğraşmak yerine NextJS kullanın. Hem hızlı, hem fetch apisi vanillaya göre daha iyi. Hem SSR var, SEO optimizasyonu daha iyi çalışır, hem de routing ile REST endpointlerinizi aynı platformda yazar, isteği serverde işler ve kullanıcıya daha hızlı servis edebilirsiniz. SSR öğrendiğimden şimdiye kadar React'ın yüzüne bile bakma gereksinimi duymadım ben. Tabii bunlar şahsi fikrim, illa CSR yapacağım diyorsanız React kullanın.

Ayrıca JS tek React değil. Projeye göre Framework ve tech stack değişiklik gösterebilir.

Genel olarak beğendim . Güzel rehber.
 
Bu kadar zımbırtı kütüphaneler ile uğraşmak yerine NextJS kullanın.

Kütüphanelerin zımbırtı olduğuna pek katılmıyorum ama NextJS gibi bir framework olmadıkça ortaya çıkan kütüphane ihtiyacından ben de yakınıyorum.

Tabii bunlar şahsi fikrim, illa CSR yapacağım diyorsanız React kullanın.

Fikirlerinize katılasım geliyor. NextJS'in avantajlarına değindiğiniz için teşekkürler, yeterli tecrübem olmadığını düşündüğümden ben sadece ismini kullanmakla yetindim. Ben düz React'le başladığımdan CSR'ye çok alıştım, o yüzden NextJS'in avantajlarından pek yararlanasım gelmiyor (bu demek değil ki kötüler) ve bu yüzden "Şu konuda haksızsınız." diyemiyorum.

NextJS'ten bahsetmişken şunu da önereyim: Create T3 App.

Ayrıca JS tek React değil.

Çok doğru. Rehber daha çok React yönelimli oldu, tamamıyla kişisel tecrübelerimden kaynaklı bir durum. Ha, şunu da belirteyim ki bu bir "full-stack uygulama kütüphaneleri" rehberi (ağırlıklı olarak kendi kullandıklarım tabii), genel JavaScript rehberi değil. Başlığı bu şekilde özelleştirmiştim, unutmuşum.

Projeye göre Framework ve tech stack değişiklik gösterebilir.

Tabii, bunu belirttiğiniz için teşekkür ederim. Konuya bakanlar için önemli bir bilgi.

Genel olarak beğendim . Güzel rehber.

Sağ olun.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…