JavaScript Modül Mantığı

JavaScript modülleri kodunuzu ayrı dosyalara bölmenize olanak tanır. Modüller dış dosyalardan importifadesi ile içe aktarılır. Modüller ayrıca <script> etiketiiçine type="module" yazarakta kullanılabilir.

JavaScript Modül Mantığı

  • Modülleri bir dosyaya iki şekilde aktarabilirsiniz; bunlar, modüllerin dışa aktarma veya varsayılan dışa aktarma olarak adlandırılmasına bağlıdır.
  • Adlandırılmış çıkışlar (exports) süslü parantezler kullanılarak oluşturulur. Varsayılan çıkışlar ise kullanılmaz.
  • Modüller , modüller arasında işlevsellik alışverişi yapmak için exportkullanılır .import
  • Kullanılan bir HTML betiği type="module"modül olarak ele alınır
  • Modül dosyaları bir sunucuda saklanmalıdır .
  • Modüller yalnızca HTTP(s) protokolüyle çalışır .
  • File:// protokolü üzerinden açılan bir web sayfası içe/dışa aktarma işlemlerini kullanamaz.

 

scriptA.js
export function greet(name) {
  return `Hello, ${name}`;
}

export const message = "How you doing?";
 
 
 

scriptB.js

import * as scriptA from './scriptA.js';

function Test() {
  alert(scriptA.greet("Scaler"));  
}

Test();

 

veya belirli fonksiyonları alabiliriz

import {greet} from './scriptA.js';

function Test() {
  alert(greet("Scaler"));  
}

Test();

 

<!DOCTYPE html>
<html lang="en">
  <head>
  </head>
  <script type="module" src="scriptB.js"></script>
  <body>

  </body>
</html>

 

Yukardıdaki örnekte export ile dışa aktıracak değerleri (fonksiyon, değişken..) belirtiyoruz. Import * yazarak tüm import edilen değerleri (fonksiyon, değişken..)  alıyoruz. Dikkat edilmesi gereken nokta hmtl script kısmındaki module kelimesini kullanmak.

Not: Bu modules mantığının çalışması için http(s) bağlantısı şarttır, yani local bilgisayarda çalışmayacaktır.

 

Örnek
JavaScript Modül Mantığı
js.js içeriği:
export function stilUygula() { //sayfadaki tüm inputlara uygular
    
    const inputlar = document.querySelectorAll("input[type='text']");

    inputlar.forEach(input => {
        input.style.border = "2px solid #333";
        input.style.padding = "15px";
        input.style.borderRadius = "6px";
        input.style.outline = "none";
        input.style.lineHeight="16px";

        input.addEventListener("focus", () => {
            input.style.borderColor = "blue";
            input.style.backgroundColor ="yellow";
        });

        input.addEventListener("blur", () => {
            input.style.borderColor = "#333";
            input.style.backgroundColor ="";
        });
    });
}

index.html
<input type="text"/>  
<input type="text"/>
<input type="text"/>
<script type="module">
import {stilUygula} from "./js.js";

stilUygula();
</script> 
 

Kaynaklar

 

Yükleniyor...
Yükleniyor...