Geliştiriciler arasında oldukça popüler olan Node.js, JavaScript’i bir istemci dili olmaktan çıkararak, sunucu tarafında da etkili bir dil haline geldiğini söylemiştim. Etkili kodlar yazmanızı sağlayan birçok özelliğe sahip olan Node.js’in, modül sistemi de bu özelliklerden biridir. Bu yazımızda, Node.js modüllerini ayrıntılı bir şekilde anlatacağım.
Node.js Modülleri Nedir?
Modüller, işlevsellikleri gruplandırmamıza olanak sağlarlar ve böylece kodun yeniden kullanılabilirliğini artırırlar. Modüllerin en belirgin özelliği, başka bir dosyada veya modülde tanımlanan kod parçalarını içe aktarmalarıdır. Modüler bir yaklaşımla projeler geliştirmenin bir çok faydası vardır:
⇒ Düzen ve Organizasyon: Modüler kod, işlevlere ve özelliklere göre düzenli bir yapıya sahip olmanızı sağlar. Her modül, belirli bir işlevi yerine getirir ve bu da kodunuzun genel düzenini ve okunabilirliğini artırır.
⇒ Yeniden Kullanılabilirlik: Modüller, kod parçalarının yeniden kullanılmasını kolaylaştırır. Bir modülü bir kere yazdıktan sonra, onu projenin herhangi bir yerinde, hatta farklı projelerde bile kullanabilirsiniz.
⇒ Etkin Bakım ve Güncelleme: Modüler yapı, kodun bakımını ve güncellemesini daha kolay hale getirir. Tek bir modül üzerinde değişiklik yapmanız gerektiğinde, onu izole bir şekilde güncelleyebilir ve bu değişikliğin diğer modülleri etkilemesini önleyebilirsiniz.
⇒ Hata Ayıklama: Hataların bulunması ve düzeltilmesi modüler bir yapıda daha kolaydır. Hata oluştuğunda, genellikle ilgili modül içerisinde yer alır ve bu sayede hızlıca izole edilip çözülebilir.
⇒ Paralel Geliştirme: Modüler yapıda, farklı geliştiriciler veya ekipler aynı anda farklı modülleri geliştirebilir. Bu, projenin genel geliştirme süresini önemli ölçüde azaltabilir.
⇒ Kod Testi: Modüler kod, unit testing (birim testi) süreçlerini kolaylaştırır. Her modül, bağımsız bir şekilde test edilebilir.
⇒ Kodun Genişletilebilirliği: Modüler yapı, projenin genişletilebilirliğini artırır. Yeni bir özellik eklemek istediğinizde, sadece yeni bir modül oluşturabilir ve bu modülü mevcut sisteme entegre edebilirsiniz.
Node.js Modül Türleri
Node.js’de üç tür modül bulunur: çekirdek (core) modüller, yerel (local) modüller ve üçüncü taraf (Third-party) modüller.
1 – Çekirdek (Core) Modülleri : Çekirdek modülleri, Node.js tarafından sağlanan ve herhangi bir ek kurulum gerektirmeyen modüllerdir. Örnek olarak ‘fs’, ‘http’, ‘crypto’ gibi modülleri verebiliriz.
1 2 3 4 5 6 7 8 |
const fs = require('fs'); fs.readFile('file.txt', 'utf8', function(err, data) { if (err) throw err; console.log(data); }); |
2 – Yerel (Local) Modüller : Kullanıcı tarafından oluşturulan ve belirli bir projeye özgü olan modüllerdir. Kendi dosyanızda oluşturduğunuz bir fonksiyonu, başka bir dosyada kullanmak için bu fonksiyonu bir modül olarak dışa aktarabilirsiniz.
1 2 3 4 5 6 7 8 9 10 |
// mymodule.js module.exports = function() { console.log('Hello World!'); }; // app.js const myModule = require('./mymodule'); myModule(); |
3 – Üçüncü Taraf (Third-party) Modüller : Üçüncü taraf modülleri, diğer geliştiriciler tarafından oluşturulan ve genellikle npm (Node Package Manager) üzerinden indirilen modüllerdir. Express, Lodash, Moment gibi popüler npm paketleri bu kategoriye girer.
1 2 3 4 |
const express = require('express'); const app = express(); |
Npm ile ilgili detaylı bilgi için Npm Nedir? Npm ile Paket Kurulumu Nasıl Yapılır? yazımı okuyabilirsiniz.
Node.js’te Modül İçe ve Dışa Aktarma
Node.js’te kod parçalarını içe ve dışa aktarmak için çeşitli yöntemler bulunmaktadır. Şimdi sırasıyla bu yöntemleri inceleyelim:
module.exports ve require() Kullanımı : Bu, Node.js’te modüllerin içe ve dışa aktarıldığı en yaygın yoldur.
1 2 3 4 5 6 7 8 9 10 |
// mymodule.js module.exports = function() { console.log('Hello World!'); }; // app.js const myModule = require('./mymodule'); myModule(); |
exports Kısayolu : “exports” bir kısayoldur ve “module.exports” ile aynı nesneyi işaret eder. Ancak burada dikkat edilmesi gereken nokta, “exports” nesnesine doğrudan bir değer atamamalısınız. Bu, modülün dışa aktarılan değerini bozar.
1 2 3 4 5 6 7 8 9 10 11 |
// doğru kullanım exports.myFunction = function() { console.log('Hello World!'); }; // yanlış kullanım exports = function() { console.log('Hello World!'); }; |
ES6 Import/Export : Node.js, ES6 modül sözdizimini de destekler. Ancak bu, “.mjs” uzantılı dosyalarda veya “type”: “module” package.json dosyasında kullanılmalıdır.
1 2 3 4 5 6 7 8 9 10 |
// mymodule.mjs export function myFunction() { console.log('Hello World!'); }; // app.mjs import { myFunction } from './mymodule.mjs'; myFunction(); |
Veya,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// package.json { "name": "nodejs", "type": "module", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" } |
Sonuç olarak, Node.js modülleri, uygulamanızın farklı bölümlerini ayırmak ve organize etmek için hayati öneme sahip olan bir özelliktir. Modüller sayesinde kodunuz daha düzenli, anlaşılır ve bakımı kolay olacaktır. Yani Node.js modülleri, kodlarınızı daha etkili ve verimli hale getirmenin anahtarıdır diyebiliriz.
Umarım “Node.js de Modüller” başlıklı yazım sizin için faydalı olmuştur. Şu yazılar da ilginizi çekebilir:
React Nedir? Neden React’i Tercih Etmeliyim?
Bir sonraki yazımda görüşmek üzere.
Happy coding!