Onur Dayıbaşı

CV
none

DIY Modules Nedir ?

Modül Nedir? Ben modülleri atom ve moleküle benzetiyorum. Bu atom dediğimiz kavramları incelediğimizde, farklı farklı atomlar bulunur. Bu atomları kendi başına diğer bileşenlere ihtiyacı olmayan modüller olarak düşünebiliriz.

Periodic Table

Bu atomların içlerine baktığımızda proton ve nötron’dan oluşan bir çekirdek ve bu çekirdeğin çevresinde dolaşan elektronlardan oluşur.

Atom Structure

ve bunların birleşiminden moleküller oluşur. Bu moleküllerin birbirleri ile birleşimi ile eşyalar, sistemler veya organizmalar oluşur.

Molecule Structure

Kod modülleride buna benzerlik gösterir. kod blokları oluşturmak ve bunları birbirine bağlayak kütüphaneler , uygulamalar vb büyük sistemler kurma imkanı doğar. Peki Modül nedir ?

  • Kendi iç mantıksal işlemlerini yapan.
  • Arayüz aracılığı ile dışarıya veri ve fonksiyon sağlayan
  • Kendiside dışarıdan ihtiyacı olduğu kod modüllerini kullanabilen yapılardır.

IY Modules . 2000'lerde Yahoo Internet dünyasında oldukça güçlüydü. Google’dan daha güçlüydü. Google 1998 daha yeni kurulmuştu ve Yahoo mühendisleri Global değişkenlerin kötü sonuçlara sebep olduğunu söylediler. Bunlar için manifesto oluşturdular.

  • Çünkü ortak değişkenlerin heryerden erişilebilir olması kodun içerisinde bir anda verdiğiniz değerin birileri tarafından değiştirilmesi anlamına geliyordu.
  • Başkasının görmemesi ve kullanmaması gereken fonksiyonları başkalarının kullanması anlamına geliyor.
  • Bazı zamanlarda 3rd Party kütüphanelerin kodlarının veya değişken isimlerinin çakışması anlamına geliyordu.

bu soyutlamaları gerçekleştirmek için IIFE(Immediately invoked function expression) kullandılar.

IFE Nedir ? Neden Arrow Functions anlatırken tüm fonksiyon türlerinden bahsetmiştim. IIFE konusunda da ileride module kısmında daha detaylı anlatacağımı belirtmiştim.

Eğer bir fonksiyon hemen çağrılıp oluşturulan sonuç/sonuç objesi bir değişkende saklanıyorsa bu tip fonksiyonlara IIFE (Immediately invoked function expression) deniyor. Bu tip fonksiyonların amacı genelde bu scope içerisinde oluşan değişkenlerin sadece o kapsam(scope) erişilebilir olmasını sağlıyor. Genelde JQuery, Prototype gibi kütüphanelerde değişken isimlerinin çakışmaması ve scope içerisinde işlemlerin yapılabilmesi için IIFE yöntemi kullanılmıştır. Daha sonra anlatacağım module kavramları ile birlikte ileride bu konu üzerinde daha detaylı duracağım.

Burda ilk kütüphaneler ile birlikte binlerce Global değişken yerine Namespacing kavramı ortamı oluştu. Yahoo ait, JQuery ait birtane büyük Global Object olsun ve heryerde bu nesne üzerinden erişim gerçekleşsin ve bu nesnenin içerisindeki değişkenler dışarıdan direk erişilemesin. Yahoo veya JQuery objeleri tek başlarına tüm sayfanın state tutan ve yöneten kütüphaneler haline geldi.

Aşağıdaki kod bloğunda counter istediğim gibi dışarıdan erişiyorum.

1var myModule={ counter:0}
2myModule.counter++;
3console.log(myModule.counter); //1

IIFE ile yazdığımız kod bloğunda ise counter dışarıdan erişime kapattık. Global state oluşturmadan state return fonksiyonu içerisinden yönetmeye başladık. İlk dönem UI kütüphanelerinin yaptığı buydu. Global değişken ve fonksiyon kullanımını yönetmek.

1var myModule=(()=>{ var counter=0;
2 increment=()=>counter++;
3 print=()=>console.log(counter);
4 return {increment:increment,print:print}
5})();
6myModule.increment();
7myModule.print(); //1

Referanslar