CommonJS Nedir ve Nasıl Kullanılır?

CommonJS Nedir ve Nasıl Kullanılır?

CommonJS Nedir ve Nasıl Kullanılır? Tüm geliştiricilerin bilmesi gereken önemli bir konudur CommonJS, JavaScript modüllerinin standardize edilmesini sağlayan bir özelliktir CommonJS kullanarak, yazdığınız kodu kolayca yönetebilir, tekrar kullanılabilir hale getirebilirsiniz Bu yazıda CommonJS hakkında önemli detayları bulacaksınız!

CommonJS Nedir ve Nasıl Kullanılır?

Modüler programlama, büyük ölçekli projelerde kod yönetimini kolaylaştırmak için kullanılan bir programlama tekniğidir. Bu teknikte, bir projedeki kod farklı modüllerde organize edilir ve modüller kendi içinde bağımsız çalışan parçalar olarak tasarlanır. CommonJS, JavaScript'te modüler programlama yapmak için kullanılan bir standarttır. CommonJS sayesinde, kodun modüler olarak tasarlanması ve yönetimi kolaylaşır. Bu makalede, CommonJS standardı hakkında detaylı bilgi verilecek, modüler programlama konsepti açıklanacak ve CommonJS modülleri nasıl tanımlanır ve kullanılır örneklerle ele alınacaktır.


Modüler Programlama Nedir?

Modüler programlama, büyük ölçekte projelerde kullanılabilen programlama tekniklerinden biridir. Bu teknikte, kodlar farklı modüllere ayrılır ve her modül birbirinden bağımsız olarak kullanılır. Modüler programlama, kodların tekrar kullanılabilirliğini arttırır ve bakımı kolay hale getirir. Kodların küçük parçalara ayrılması, bir hata oluştuğunda bu hatanın tam olarak hangi modülde olduğunu bulmayı kolaylaştırır. Böylece hızlı bir şekilde hatalar düzeltilebilir ve projeler zamanında teslim edilebilir.

Modüler programlama ayrıca kodların daha okunaklı hale gelmesine ve yeni geliştiricilerin proje içerisinde hızlı bir şekilde navigasyon yapabilmesine yardımcı olur. Büyük projelerde, kodların tekrarlanması yaygın bir durumdur ve bu durumda bakım maliyeti artar. Modüler programlama ise kodların sadece bir yerde tanımlandığı ve bu kodların ihtiyaç duyulduğunda çağrıldığı bir yapı kullanır. Bu yapının avantajlarından biri de kodun daha sade ve anlaşılır olmasıdır.


CommonJS Modülleri

CommonJS, adından da anlaşılacağı gibi JavaScript'te ortak kullanıma açık olan bir modül standardıdır. Bu standardın temel amacı, JavaScript kodlarının modüler şekilde yazılmasını sağlayarak kod tekrarını azaltmak, kodun okunabilirliğini artırmak ve kod yönetimini kolaylaştırmaktır.

Bir CommonJS modülü oluşturmak için, ilgili JS dosyasında module.exports objesine fonksiyon veya nesne atamalısınız. Bu obje, modülü diğer dosyalarda kullanılmak üzere dışarı aktarmak için kullanılır. Modül içindeki fonksiyon, nesne veya değişkenlerin dışarı aktarılması için exports objesi de kullanılabilir.

Bir CommonJS modülü, diğer dosyalarda kullanılmak üzere require fonksiyonu ile çağrılır. Bu fonksiyon, ilgili modül dosyasını bulup yükler ve exports objesinde dışarı aktarılan fonksiyon veya nesneyi geri döndürür. Path yönetimi ile ilgili sorunlar yaşanmaması için, modül dosyaları genellikle proje dizini altında bir klasörde saklanır.

Aşağıdaki örnekte, basit bir CommonJS modülü oluşturulmuş ve exports objesi kullanılarak fonksiyon dışarı aktarılmıştır:

//math.js dosyasıfunction topla(a, b) {  return a + b;}exports.topla = topla;

Bu modül, diğer dosyalarda kullanılmak üzere aşağıdaki şekilde çağırılabilir:

var math = require('./math');console.log(math.topla(2, 3)); // 5

Bu örnekte, require fonksiyonu ile math.js dosyası yüklenmiş ve exports objesi üzerinden dışarı aktarılan topla fonksiyonu, çağıran dosyada kullanılmıştır.


Exports ve Module Objeleri

CommonJS modülleri, exports ve module objeleri üzerinden tanımlanır. İlk olarak, exports objesi kullanarak modül dışına fonksiyonlar veya değişkenler yazılabilir. Örneğin, aşağıdaki örnekte add fonksiyonu exports objesi ile tanımlanmıştır:

add.js
function add(a, b) {  return a + b;}exports.add = add;
var add = require('./add.js');console.log(add(2, 3)); // 5

Bir modülü yüklemek için require() fonksiyonu kullanılır. Module objesi, exports objesinin yerel kopyasıdır ve her modül için benzersizdir. Default olarak, bir modül içeriği exports objesi olarak başlatılır. Ancak, exports objesi ihtiyacın olan tek şey değilse, module.exports objesi kullanılabilir. Son olarak, modülün neyi exports ettiğine göre kullanmak gerekebilir. Örneğin, aşağıdaki örnekte name ve age değişkenleri module.exports objesi ile tanımlanmıştır:

person.js
module.exports = {  name: 'John',  age: 30};
var person = require('./person.js');console.log(person.name); // Johnconsole.log(person.age); // 30

Exports ve module objeleri, modül içeriğinin diğer kodlardan nasıl kullanılacağını belirler ve modülün nasıl tanımlandığını etkiler. Bu nedenle, doğru objenin kullanılması önemlidir.


Require() Fonksiyonu

CommonJS standardı, modüler programlama için çok önemli bir araçtır. Modül oluşturmak ve kullanmak için önemli bir fonksiyon olan require() fonksiyonu, CommonJS standardının en kullanışlı özelliklerinden biridir. require() fonksiyonu, bir modül içindeki fonksiyonları veya objeleri çağırmak için kullanılır. Bu fonksiyon, yazılım geliştiricilerinin kodları daha sade ve anlaşılır hale getirmelerine yardımcı olur.

Bir modül içinde require() fonksiyonunu kullanmak oldukça basittir. Öncelikle, kullanılacak modülün yolu belirtilir, sonra da bu modül içindeki fonksiyonlar veya objeler çağrılır. Ancak, dikkat edilmesi gereken önemli bir nokta vardır. Modül içinde kullanılacak olan fonksiyonların veya objelerin exports objesi ile belirtilmesi gerekir. Bu adımdan sonra, kullanılacak olan fonksiyon ya da obje, require() fonksiyonu ile projenin herhangi bir yerinde rahatlıkla kullanılabilir.


Path Yönetimi

CommonJS modülleri kullanılırken, modülleri çağırmak için kullanılan yolun doğru olduğundan emin olmak önemlidir. Path yönetimi, bu yolu belirlemek için kullanılır.

Path yönetimi, modül adları ile çalışır ve modül yollarını belirler. Bu yollar, mutlaka sabit değil ve farklı işletim sistemleri için farklılık gösterebilir.

Node.js, modüllerin nerede olduğunu belirlemek için bir modül yükleyici kullanır. Bu yükleyici, bir modül adı verildiğinde, modülün bulunduğu yolu bulmak için path yönetimini kullanır. Bu yüzden, modüllerin doğru yolu ile yüklendiğinden emin olmak için, yükleyicinin bu yolda doğru bir şekilde çalıştığından emin olmak önemlidir.

Path yönetimi, modül adlarının çözülmesinde kullanılan birkaç adımdan oluşur. İlk olarak, modül adı bir dosya yolu gibi işlenir. İkinci adımda, yolların kök dizini belirlenir ve son olarak, yolu hizalanır ve düzenlenir.

  • Path yönetimi, modüllerin doğru yolu ile yüklenmesi için önemlidir.
  • Node.js, modüllerin yüklenmesi için path yönetimini kullanır.
  • Path yönetimi, modül adlarının çözümlenmesinde birkaç adımdan oluşur.

Bir sonraki adım, modül yükleyicisinin path yönetimini kullanarak, modülleri doğru bir şekilde yüklemesini sağlamaktır.


Modül Dışı Değişkenler

Modüler programlama, kodun büyük projelerde daha yönetilebilir hale gelmesi için kullanılan bir tekniktir. Modüler programlamada, kod parçaları modüller halinde tasarlanır ve her modül yalnızca kendi alanını kapsar.

Bu yöntem, programın daha anlaşılır ve yönetilebilir olduğu için genellikle tercih edilir. Ancak, modüler programlama sırasında bazı sınırlamalar ortaya çıkabilir. Özellikle, modül dışındaki değişkenler, kullanımı zorlaştırabilir.

Bu sınırlamaların bazıları, modül dışındaki değişkenlere erişim gerektirdiğinde ortaya çıkar. Bu durumda, değişkenin modül içinde tanımlanması gerekir, ancak bu, kodun daha karmaşık hale gelmesine neden olabilir.

Bir diğer sınırlama, modüllerin yüksek bağımlılığıdır. Bir modülün başka bir modüle bağımlı olması durumunda, bu modülün kullanılabilmesi için bağımlı olduğu modül de yüklenmelidir. Bu durum, koddaki değişikliklerin yönetimini zorlaştırabilir.

Bu sınırlamaların üstesinden gelmek için, birçok programlama dili, bir modülün diğer modüllere bağımlılığını azaltmak için kendi ad alanlarına sahip olma imkanı tanır.

Bu yöntem, modüllerin daha bağımsız hale gelmesine ve düzenlemenin daha kolay hale gelmesine yardımcı olabilir. Ayrıca, modül içinde tanımlanan değişkenlerin modül dışında kullanılmasını önleyerek daha fazla güvenilirlik sağlayabilir.

Modül dışı değişkenlerin kullanımını yönetmek için bazı standartlar ve uygulamalar mevcuttur. Bunlar arasında, modüllerin birbirleriyle iletişim kurmasını sağlayan bir dizi API yer alır. Bu API'ler, modüllerin birbirleriyle iletişim kurmasını kolaylaştırır ve modül dışındaki değişkenlerin etkisini azaltır.

Özetlemek gerekirse, modüler programlama, kodun daha anlaşılır ve yönetilebilir hale gelmesini sağlar. Ancak, modül dışındaki değişkenlerin kullanımı, programcılara bazı zorluklar çıkarabilir. Bu zorlukların üstesinden gelmek için, standartlar ve uygulamalar mevcuttur ve modüllerin birbirleriyle iletişim kurmasını kolaylaştıran API'ler kullanılabilir.


CommonJS ve Node.js

CommonJS standardı, JavaScript'te modüler programlama için kullanılan bir yapıdır. Peki CommonJS nedir ve Node.js ile uyumlu mu? Node.js, CommonJS'nin uygulanması için çok uygun bir ortamdır. Node.js uygulamaları, CommonJS modüllerini destekler ve projelerin daha iyi ve verimli bir şekilde organize edilmesine olanak tanır.

Node.js'in temel amacı server-side JavaScript çalıştırmaktır. Bu nedenle, JavaScript kodları daha düzenli ve yönetilebilir olması için modüller halinde ayrılmalıdır. CommonJS modülleri, Node.js uygulamaları için ideal bir seçenektir. Modüller, Node.js içinde require() fonksiyonu kullanılarak çağrıldığında, Node.js otomatik olarak ilgili modülü yürütür.

Bu nedenle, Node.js uygulamaları, hem geliştiriciler hem de kullanıcılar için daha kolay hale gelir. Geliştiriciler, projelerini daha hızlı bir şekilde organize eder ve yönetirlerken, kullanıcılar daha hızlı yükleme süreleri ve daha az hatalı uygulamalar elde ederler.

Ayrıca, CommonJS modülleri kullanmanın bir başka avantajı da, Node.js'in modüler programlama konseptine uygun olmasıdır. Modüler programlama, herhangi bir projeyi daha az hatalı ve daha düzenli bir şekilde yönetme yoludur. Bu nedenle, Node.js ve CommonJS, yüksek kaliteli uygulamaların hazırlanmasına olanak tanıyan ideal bir kombinasyondur.


NPM (Node Package Manager)

NPM, Node.js için kullanılan bir paket yöneticisidir. CommonJS modülleri ile uyumlu çalışabilir ve Node.js'in sunduğu özelliklerle birlikte modüler programlama yapmanıza olanak tanır.

Bir paketi kullanmak için öncelikle NPM'i yüklemeniz gerekir. Bunun için, terminale npm install komutunu girerek global olarak kurulum yapabilirsiniz. Ardından kullanmak istediğiniz paketi require() fonksiyonu ile projenize dahil edebilirsiniz.

Projeniz için bir paket oluşturma ihtiyacı duyarsanız, NPM üzerinden paket oluşturma işlemini gerçekleştirebilirsiniz. npm init komutunu kullanarak bir paket oluşturma sihirbazına erişebilir ve projenize ait bilgileri girebilirsiniz. Ardından NPM, paketinizi oluşturmanıza ve dağıtmanıza olanak tanır.

Ayrıca, paketler arasındaki bağımlılıkları yönetmek için NPM, package.json dosyasında yer alan bağımlılıkları kolayca yüklemenizi sağlar. npm install komutu ile tanımlı bağımlılıklarınızı birkaç adımda yükleyebilirsiniz.

NPM, Node.js ile CommonJS modüllerinin kullanımını kolaylaştırır ve modüler programlama için önemli bir araçtır.


CommonJS Alternatifleri

CommonJS, Aralarında modüler programlama için tanımlanmış bir standart olan birçok JavaScript standardından biridir. Ancak, CommonJS dışındaki diğer standartlar da var. AMD ve ES6, CommonJS'in alternatifleri olarak kabul edilir.

AMD veya Asynchronous Module Definition, modüllerin yalnızca ihtiyaç duyulduğunda yüklendiği bir sistem kullanır. Bu, daha büyük uygulamalar için daha verimli bir modüler yaklaşım olsa da, bu tanım Node.js tarafından desteklenmez.

ES6 veya ECMAScript 6 Modülleri, JavaScript standardına doğrudan dahil edilmiştir. Modüler programlamanın kullanımı için birçok özellik sunar. Ancak, bu teknoloji için Node.js'deki mevcut hali tam destek verilmez. Bu teknolojinin ana avantajı, JavaScript dilinin dahili bir işlevselliğinin olması ve daha karmaşık modülleri doğrudan kullanabilmesidir.

Sonuç olarak, CommonJS standartının alternatiflerinden hangisinin kullanılacağı, uygulamanın ihtiyaçlarına bağlı olarak belirlenmelidir.