Astro'nun Özellikleri
Öncelikle Gerekli ayarları (Astro Eklentisini Yüklemek vb.) yapıp buraya kadar geldiğinizi varsayıyorum. Bunları yaptıysanız artık astro dosyaları geliştirmek için hazırsnız demektir. Konuyu daha da uzatmadan işe başlayalım.
Temel Şablon Oluşturma
İlk önce bir çalışma klasörü oluşturun. Daha sonra klasörün içindeyken sağ tıklayıp terminali çalıştırın veya klasörün içinde kendi terminali olan kullandığınız editör programını açın (Ben VS Code editörünü kullanıyorum) ve terminale bu kodları yazın.
Size Projeyi nereye oluşturacağını soracak. Buraya “nokta” (.) yazıp enter’a basarsanız terminalin o an ki çalıştığı klasörü seçecektir. Eğer ”./Klasörİsmi” şeklinde yazarsanız terminalin o an ki çalıştığı klasörün içine yazdığınız klasör isminde bir klasör oluşturacaktır. Ben nokta ile cevap verdim
Daha sonra size “Yeni projenize nasıl başlamak istersiniz?” Diye bir soru soracaktır ve karşınıza 3 seçenek sunacaktır.
Burda biz ilk seçeneği seçeceğiz. Enter’ a bastıktan sonra Dosyaların kopyalanmasını bekleyeceğiz bu işlem bilgisiyarınız ve internetinizin hızına göre değişmektedir.
Bu işlemden sonra bize “bağımlı olan dosyaları yüklemek ister misiniz?” diye soruyor.
Biz Burda evet seçeneğini seçiyoruz. (Not: isterseniz hayır seçeneğini seçip bağımlı olan dosyaları daha sonra da yükleyebilirsiniz.) Enter’a basıp bağımlı olan dosyaların inmesini bekliyoruz. Eğer indirme sırasında bir hata çıktıysa sorun değil eksik olan dosyaları daha sonra da indirebiliyoruz. (Yazının devamında anlatacağım)
Eğer sorunsuz veya sorunlu şekilde bu adımı geçtiyseniz karşınıza typescript kullanacakmısınız diye soru soracak biz buna şimdilik hayır cevabı veriyoruz. (Not: Daha sonra typescript özelliğin etkinleştirebilirsiniz.)
Sonraki adımda size github reposu oluşturmak istiyormusunuz diye soracak. Eğer github reposu oluşturmak istiyorsanız evet seçeneğini seçebilirsiniz. Ben hayır seçeneğini seçtim.
Eğer Bağımlı dosyaları (dependencies) yüklerken hata aldıysanız. terminale
yazıp enter’a basın. Bu komut bağımlı olan dosyaları indirecektir.
Bütün adımları tamamladığımıza göre artık projemizi başlatabiliriz. Ekrana aşağıdaki kodu yazarak projeyi başlatabiliriz.
Projeyi başlattığımız anda ekranda aşağıdaki satırlar gözükecektir.
Tebrikler Başarıyla ilk astro projenizi oluşturdunuz. Artık projenize http://localhost:3000/ adresinden ulaşabilirsiniz.
Not: Eğer 3000 portunda başka bir uygulama çalışıyorsa 3001 bu portta doluysa 3002 portunda çalışır. programı çalıştırdıktan sonra terminali kontrol edin!
Bu adrese girdiğinizde muhtemel görüntü aşağıdaki gibi olacaktır.
Slotlar
Astro’da oluşturduğumuz proje içinde src/pages/index.astro dosyasını açıyoruz. Bu dosya bizim ana sayfamızdır. Bu dosyayı açtığımızda aşağıdaki kodlarla karşılaşacağız.
Şimdi bu kodları inceleyelim. Astro dosyalarının yapısını bu dosya sayesinde biraz anlayabilirsiniz. bu 3 çizgiler --- arasında yazılan kodlar server-tarafından değerlendiriliyor. Bu sayfada bu çizgiler arasında import ifadesi ile Layout ve Card içeri alınmıştır. Peki bu ne işe yarıyor? Bunun amacı tekrar kod kullanılmasından kaçınılmak istenmesidir. Bu sayede zamandan tasaruf sağlıyorsunuz.
Şimdi aklınızda html kodlarını niye Layout etiketlerinin arasına yazıyoruz diye soru soruyor olabilirsiniz. Bunu şöyle açıklayayım bizim src/layouts/Layout.astro konumdaki Layout dosyamızın içinde
Parçalı Dosya Yapısı
Parçalı dosya yapısı sayesinde kodlarımızı daha düzenli bir şekilde yazabiliriz. Bu sayede kodlarımızı daha kolay okuyabiliriz. Ayrıca kodlarımızı tekrar kullanabiliriz. Örneğin src/components/Card.astro konumundaki kodlarımızı src/pages/index.astro konumundaki kodlarımızda kullanabiliriz. Bu sayede kodlarımızı tekrar yazmaktan kurtuluruz. Bu sayede zamandan tasarruf ederiz.
Örneğin:
index.astro içindeki bu kodlar ile kod tekrarının önüne geçilmiş oldu.
Stiller
Şimdi de size astro dosyalarındaki css kısmını göstereceğim.
astro dosyalarında css i iki farklı şekilde tanımlayabilirsiniz. global ve scoped olarak iki türü vardır. global tipinde diğer astro dosyaları tarafından da kullanabilmektedir. scoped tarafında ise sadece kendi astro dosyası içinde kullanılır.
Aşağıdaki örnekte ilk önce global in kulanımını sonra da scoped ın kulanım biçimini gösterilmiştir.
Sabitler
Şimdi de size astro dosyalarındaki sabitlerin nasıl kullanıldığını göstereceğim.
Astro daki sabitleri biz astro dosyaların en üstünde bulnunan --- üç çizgilerin arasına tanılıyoruz. Aşağıda örnek verilmiştir.
Bu kod bloğunda title isminde bir sabit tanımlayıp bir string değer atatık daha sonra bu title değerini astro dosyamızın içinde <title>{title}</title>
şeklinde tanımladık. Eğer şu an projeniz çalışıyorsa ve kodlarınızı bu şekilde düzenlediyseniz tarayıcı sekmesi isminin de bu şekilde değiştiğini görebilirsiniz.
Ben buraya string bir değer tanımladım diye sadece string bir değer tanımlanıyor sanmayın aksine isterseniz sayısal bir değer isterseniz bir dizi tanımlayabilirsiniz.
Map Döngüsü
Astro dosyalarında map döngüsü bir dizide içindeki değerleri döndürmenizi sağlayan bir döngüdür.
Mesela üç çizgilerle başlayan yere 2 adet dizi tanımlayalım.
Daha sonra sayfamızın içinde bu kodları kullanıp dizileri ekrana bastıralım
Dikkat ettiyseniz map fonksiyonu kullanmak için süslü parantez arasına yazdım. Astro dosyalarında belli başlı javascript fonksiyonlarını süslü parantezler arasında yazabiliyorsunuz.
Props
astrojs de props ifadeleri ile bir astro dosyasından başka bir astro dosyasına veri aktarabilirsiniz.
Örneğin src/components/Baslik.astro konumundaki kodlarımızı src/pages/index.astro konumundaki kodlarımıza aktaralım.
aşağıda Baslik.astro dosyasının içeriği verilmiştir
Şimdi de index.astro dosyasının içeriğine bakalım.
Burdaki kodlar ilk önce Baslik.astro dosyasını index.astro dosyasının içine Baslik ismiyle aktarılıyor. Baslik.astro yu kullanmak için Baslik.astro yu atadığımız değeri <Baslik başlık="Anasayfa"/>
şeklinde kullanıyoruz. Kendiniz bu kodları değiştirerek farklı farklı yazılar, sayılar, diziler gibi nesneler aktarabilirsiniz.
İsterseniz aktardığınız nesneleri başka dosyaya aktarabilirsiniz.
if else
Bu bölümde size karşılaştırma ifadelerini astro dosyasında nasıl kullanıldığını göstereceğim.
ilk önce index.astro dosyamızı açıyoruz. İçindeki bütün yazıları siliyoruz. İçine şu kodları yaıyoruz:
Bu kodda const {sayi=123} = Astro.props;
tanımlaması yaptık. bu kodun çıktısı sayi’ya değer verdiğimiz için. if bloğu çalışıp ekrana 123 değerini yazdıracak ama biz sayi sabitine değer vermeseydik bu sefer else bloğu çalışıp ekrana sayi yok yazısını yazacaktır.
map
Şimdide map döngüsüne bakalım
index.astro içine aşağıdaki kodları yazıyoruz.
Bu kodda oluşturduğum sayi dizisi içindeki dizileri döndürüp ekrana basacaktır.