İç dış JavaKomut Dosyası: Örneklerle Öğrenin
⚡ Akıllı Özet
İç ve Dış JavaBu makale, bir web projesi içindeki komut dosyası kodunun iki desteklenen yerleşim şeklini açıklamaktadır. Makale, her iki yaklaşımı karşılaştırır, çalışan örnekler gösterir, async ve defer ile doğru bağlantıyı açıklar ve her yerleşimin ne zaman daha iyi bakım kolaylığı ve performans sağladığını belirtir.

İç ve Dış Kavramlar Nelerdir? JavaSenaryo?
Sen kullanabilirsiniz JavaKodu iki şekilde yazabilirsiniz.
- Şunu da dahil edebilirsiniz: JavaKomut dosyası kodu HTML belgenizin içinde dahili olarak kendisi.
- Sen tutabilirsin JavaKomut dosyası kodu ayrı bir harici dosya ve ardından HTML belgenizdeki o dosyanın üzerine gelin.
Her iki yerleşim de tamamen aynı dili çalıştırır ve tarayıcıda aynı sonucu üretir. Aradaki fark, kaynak kodun nerede saklandığı, tarayıcının onu nasıl indirdiği ve kodun bir web sitesi genelinde ne kadar kolay yeniden kullanılabileceği ve sürdürülebileceğinde yatmaktadır.
Dahili Nedir? JavaSenaryo?
İç JavaScript, HTML dosyasındaki bir çift script etiketi içine doğrudan yazılan koddur. Tarayıcı, işaretlemeyi yukarıdan aşağıya doğru okur ve script etiketine ulaştığında, ek bir ağ isteği olmadan ifadeleri hemen yürütür.
Şu ana kadar Internal JS kullanıyoruz. İşte bir örnek –
<html>
<head>
<title>My First JavaScript code!!!</title>
<script type="text/javascript">
// Create a Date Object
var day = new Date();
// Use getDay function to obtain todays Day.
// getDay() method returns the day of the week as a number like 0 for Sunday, 1 for Monday,….., 5
// This value is stored in today variable
var today = day.getDay();
// To get the name of the day as Sunday, Monday or Saturday, we have created an array named weekday and stored the values
var weekday = new Array(7);
weekday[0]="Sunday";
weekday[1]="Monday";
weekday[2]="Tuesday";
weekday[3]="Wednesday";
weekday[4]="Thursday";
weekday[5]="Friday";
weekday[6]="Saturday";
// weekday[today] will return the day of the week as we want
document.write("Today is " + weekday[today] + ".");
</script>
</head>
<body>
</body>
</html>
Çıktı:
Today is Wednesday.
Yazdırılan gün, ziyaretçinin sistem saatiyle değişir, çünkü getDay fonksiyonu Pazar için 0'dan Cumartesi için 6'ya kadar bir sayı döndürür ve bu sayı hafta içi günleri dizisinde bir indeks olarak kullanılır.
Dış Nedir? JavaSenaryo?
Tüm web sayfalarınızda geçerli tarih ve saati göstermeyi planlıyorsunuz. Diyelim ki kodu yazdınız ve tüm web sayfalarınıza (örneğin 100 sayfaya) kopyaladınız. Ancak daha sonra, tarih veya saatin görüntülenme biçimini değiştirmek istiyorsunuz. Bu durumda, 100 web sayfasının tamamında değişiklik yapmanız gerekecek. Bu çok zaman alıcı ve zor bir iş olacaktır.
Yani, kaydet JavaSenaryo kodunu .js uzantılı yeni bir dosyaya ekleyin. Ardından, tüm web sayfalarınıza .js dosyanızı işaret edecek şekilde bir kod satırı ekleyin:
<script type="text/javascript" src="currentdetails.js"></script>
not: .js dosyasının ve tüm web sayfalarınızın aynı klasörde olduğu varsayılmaktadır. Eğer external.js dosyası farklı bir klasördeyse, src özniteliğinde dosyanızın tam yolunu belirtmeniz gerekir. Kapanış </script> Öğenin içeriği olmasa bile `<script>` etiketi zorunludur, çünkü kendiliğinden kapanan bir `<script>` etiketi geçerli HTML değildir ve sayfanın geri kalanı sonlandırılmamış öğe tarafından yutulacaktır.
Bu, currentdetails.js dosyasının içine yerleştirmeniz gereken koddur:
var currentDate = new Date();
var day = currentDate.getDate();
var month = currentDate.getMonth() + 1;
var monthName;
var hours = currentDate.getHours();
var mins = currentDate.getMinutes();
var secs = currentDate.getSeconds();
var strToAppend;
if (hours >12 )
{
hours1 = "0" + (hours - 12);
strToAppend = "PM";
}
else if (hours <12)
{
hours1 = "0" + hours;
strToAppend = "AM";
}
else
{
hours1 = hours;
strToAppend = "PM";
}
if(mins<10)
mins = "0" + mins;
if (secs<10)
secs = "0" + secs;
switch (month)
{
case 1:
monthName = "January";
break;
case 2:
monthName = "February";
break;
case 3:
monthName = "March";
break;
case 4:
monthName = "April";
break;
case 5:
monthName = "May";
break;
case 6:
monthName = "June";
break;
case 7:
monthName = "July";
break;
case 8:
monthName = "August";
break;
case 9:
monthName = "September";
break;
case 10:
monthName = "October";
break;
case 11:
monthName = "November";
break;
case 12:
monthName = "December";
break;
}
var year = currentDate.getFullYear();
var myString;
myString = "Today is " + day + " - " + monthName + " - " + year + ".<br />Current time is " + hours1 + ":" + mins + ":" + secs + " " + strToAppend + ".";
document.write(myString);
Bu, currentdetails.js dosyanız. Uzun kod satırları görmekten endişelenmeyin. Yakında kod yazmayı öğreneceksiniz. HTML belgenizde şu şekilde değişiklikler yapın:
<html> <head> <title>My External JavaScript Code!!!</title> <script type="text/javascript" src="currentdetails.js"> </script> </head> <body> </body> </html>
⚠️Uyarı: Yukarıdaki eski komut dosyası her saatin başına sıfır ekliyor, bu nedenle sabah 11, 011 olarak görüntüleniyor. Ayrıca atama işlemi de yapıyor. hours1 Bunu belirtmeden kullanmak, örtük bir global değişken oluşturur ve katı modda hata verir. Aşağıdaki düzeltilmiş sürüm her iki hatayı da giderir.
Aynı dosyanın modern bir yeniden yazımı daha kısadır, her değişkeni tanımlar ve değerleri doğru şekilde doldurur:
// currentdetails.js - corrected modern version const now = new Date(); const months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; const hours24 = now.getHours(); const suffix = hours24 >= 12 ? "PM" : "AM"; const hours12 = String(hours24 % 12 || 12).padStart(2, "0"); const mins = String(now.getMinutes()).padStart(2, "0"); const secs = String(now.getSeconds()).padStart(2, "0"); const message = "Today is " + now.getDate() + " - " + months[now.getMonth()] + " - " + now.getFullYear() + ". Current time is " + hours12 + ":" + mins + ":" + secs + " " + suffix + "."; document.getElementById("stamp").textContent = message;
Örnek çıktı:
Today is 29 - July - 2026. Current time is 09:05:07 AM.
Harici Bir Bağlantı Nasıl Kurulur? JavaKomut Dosyası Doğru Şekilde
Harici bir dosyanın yüklenip yüklenmeyeceğini belirleyen üç ayrıntı vardır: src özniteliğinde yazılı olan yol, script etiketinin belgedeki konumu ve ona uygulanan loading özniteliği.
Yollar, başında eğik çizgi veya tam adres belirtilmediği sürece HTML belgesine göre çözümlenir.
| Kaynak Değeri | anlam | Karar Veriyor |
|---|---|---|
| mevcut ayrıntılar.js | HTML sayfasıyla aynı klasör | /pages/currentdetails.js |
| js/currentdetails.js | Mevcut klasörün alt klasörü | /pages/js/currentdetails.js |
| ../currentdetails.js | Mevcut klasörün bir üstündeki klasör. | /currentdetails.js |
| /assets/js/currentdetails.js | Site kök dizininden mutlak yol | /assets/js/currentdetails.js |
`loading` özniteliği, tarayıcının dosyayı çalıştırmak için HTML'yi ayrıştırmayı ne zaman durduracağını kontrol eder. Aşağıdaki tablo, mevcut üç davranışı özetlemektedir.
| özellik | İndir | Uygulama Anı | Düzen Korundu |
|---|---|---|---|
| Hayır | Bloklar HTML ayrıştırma | İndirme işleminden hemen sonra | Evet |
| ertelemek | Ayrıştırmaya paralel | Belge ayrıştırıldıktan sonra | Evet |
| zaman uyumsuz | Ayrıştırmaya paralel | İndirme işlemi biter bitmez | Yok hayır |
<!-- Recommended for scripts that read the DOM --> <script src="js/currentdetails.js" defer></script> <!-- Recommended for independent third party scripts --> <script src="js/analytics.js" async></script> <!-- Modern module syntax, deferred by default --> <script type="module" src="js/app.js"></script>
💡 İpucu: MKS type="text/javascript" HTML5'te `<script>` özniteliği isteğe bağlıdır ve atlanabilir. Yalnızca çok eski tarayıcıları desteklerken saklayın veya `<script>` ile değiştirin. type="module" İçe aktarma ve dışa aktarma ifadeleri kullanılırken.
İçsel ve Dışsal JavaSenaryo: Temel Farklılıklar
Aşağıdaki karşılaştırma, genellikle seçimi belirleyen faktörler açısından her iki yerleşimi de yan yana koymaktadır.
| faktör | İç JavaSenaryo | dış JavaSenaryo |
|---|---|---|
| Depolama yeri | HTML dosyasının içinde | .js uzantılı ayrı bir dosya |
| Sayfalar arasında tekrar kullanın | Her sayfaya kopyalanması gerekiyor. | Her sayfada bir dosyaya atıfta bulunuluyor. |
| Tarayıcı önbelleği | Her sayfayla birlikte yeniden indirildi. | Bir kez önbelleğe alınır ve tekrar kullanılır. |
| Bakım çabası | Kod paylaşıldığında yüksek değer elde edilir. | Düşük, düzenlenecek tek dosya |
| Ekstra HTTP isteği | Yok hayır | Evet, dosya başına bir tane. |
| Hata ayıklama | Uzun bir HTML dosyasında daha zor. | Dosya adları ve satır numaralarının net olması işleri kolaylaştırır. |
| En uygun | Kısa sayfa özel mantığı | Paylaşımlı kütüphaneler ve uzun komut dosyaları |
Dahili ve Harici Ne Zaman Kullanılmalı? JavaSenaryo Code?
Belirli bir web sayfasına özel yalnızca birkaç satırlık kodunuz varsa, o zaman JavaHTML belgenizin içindeki kodu yazın.
Öte yandan, eğer senin JavaWeb sayfalarının çoğunda komut dosyası kodu kullanılıyor, bu nedenle bunları korumayı düşünmelisiniz.ping Kodunuzu ayrı bir dosyada saklayın. Bu sayede, kodunuzda değişiklik yapmak istediğinizde yalnızca tek bir dosyayı değiştirmeniz yeterli olur; bu da kod bakımını kolaylaştırır. Kodunuz çok uzunsa, onu ayrı bir dosyada tutmak da daha iyidir. Bu, hata ayıklamayı kolaylaştırır.
Yeni başlayanlar için pratik bir kural, yaklaşık on satırlık bir eşik belirlemektir. Daha kısa ve sayfaya özgü her şey dahili kalabilirken, daha uzun veya paylaşılan her şey harici bir dosyaya ait olmalıdır.
Çizgide JavaSenaryo ve Neden Kaçınılması Gerektiği
Üçüncü bir yerleşim şekli ise eski sayfalarda bulunur; burada kod doğrudan bir HTML özniteliğinin içine yazılır. Çalışmaya devam etse de, yapıyı davranışla karıştırır ve önbelleğe alınamaz, yeniden kullanılamaz veya sıkı bir içerik güvenlik politikası kapsamına giremez.
<!-- Inline handler: works, but avoid it --> <button onclick="alert('Clicked')">Click me</button> <!-- Preferred: behaviour attached from a script --> <button id="greet">Click me</button> <script> document.getElementById("greet").addEventListener("click", () => { alert("Clicked"); }); </script>
Komut dosyalarını yerleştirme konusunda rahat hissetmeye başladıktan sonra devam edin. JavaKomut dosyası dizi yöntemleri, ders çalışma döngüler JavaSenaryove üzerinde çalışın pratik JavaKomut dosyası kod örnekleriHarici dosyalar ayrıca tarayıcı depolama mantığını yönetmeyi de çok daha kolay hale getirir, örneğin: çerezlerde JavaSenaryo.
