Node.js, web uygulamaları üzerinde çalışan birçok geliştiricinin başvurulacak ortamı haline geldi. Dünyanın en popüler programlama dillerinden biri olan JavaScript’te yazılmış kodu çalıştırmak için tasarlanan Node.js, sunucu tarafı uygulamalarının oluşturulmasını geniş bir geliştirici topluluğu için erişilebilir hale getirir.
Node.js, JavaScript kütüphaneleri aracılığıyla kodun yeniden kullanılabilirliğini destekler, ancak en iyi kütüphaneleri seçmek göz korkutucu olabilir. Yararlı kütüphaneler, geliştirme süresini hızlandırabilir ve web uygulamanız için daha hızlı yükleme süreleri ve azaltılmış uygulama paketi boyutu dahil olmak üzere çok çeşitli avantajlara sahip olabilir.
Bir kütüphane seçerken uygulamanın karmaşıklığını, kütüphanenin arkasındaki topluluğu, güncellemelerin sıklığını ve belgelerinin kalitesini göz önünde bulundurmalısınız.
Node.js’deki kütüphaneler, birçok açık kaynak kütüphanenin kurulmasına yardımcı olabilecek Node.js paket yöneticisi npm kullanılarak yönetilir .
Bu makalede Node.js için bir web geliştiricisinin hayatını kolaylaştıracak 13 temel kütüphaneyi inceleyeceğiz.
İçerik Tablosu
Node.js Nedir?
Node.js, JavaScript kodu için açık kaynaklı, sunucu tarafı bir çalışma zamanı ortamıdır. Eşzamansız bir mimariye ve platformlar arası uyumluluğa sahip olması onu web geliştirme için popüler bir temel haline getiriyor .
Node.js, olay odaklı ve engellemeyen bir G/Ç kullanır; bu da onu, çok fazla veriyle uğraşan gerçek zamanlı dağıtılmış uygulamalarda oldukça verimli kılar.
Node.js Kütüphanesi Nedir?
Bir kütüphane veya modül, yaygın olarak gerekli görevleri özetleyen önceden yazılmış koddur. Kodlama sürecini hızlandırmak ve kodun yeniden kullanılabilirliğini teşvik etmek için kütüphaneleri kullanabilirsiniz, böylece çalışmanızın “KURU” kalmasına yardımcı olabilirsiniz (kendinizi tekrarlamayın).
Frameworklerin aksine kütüphaneler, herhangi bir geliştirme aşamasında bir projeye dahil edebileceğiniz tamamlanmış işlevler içerir. Öte yandan bir framework, tipik olarak uygulamanın tamamı için bir iskelet sağlar ve genellikle uygulamanın nasıl oluşturulduğu üzerinde önemli bir etkiye sahiptir.
En Çok Kullanılan Node.js Kütüphaneleri
Bu Node.js kütüphanelerinden 13 tanesine bakalım ve faydalarını keşfedelim.
Sequelize
Sequelize , geliştiricilerin ilişkisel veritabanlarıyla daha kolay çalışmasına yardımcı olan, promise tabanlı bir Node.js nesne ilişkisel eşleyici (ORM) aracıdır. PostgreSQL , MySQL , MariaDB , SQLite ve daha fazlası gibi veritabanlarını destekler .
Sequelize, JavaScript nesnelerini kullanarak veritabanı tablolarının yapısını modeller ve verileri sorgulamak ve dönüştürmek için istenen ilişkisel veritabanına bağlanır. Daha sonra alınan verileri ayrıştırır ve bir JavaScript nesnesi olarak döndürür.
Sequelize Kütüphanesinin Özellikleri ve Faydaları
- Veritabanlarına bağlanır ve ham SQL sorguları yazmaya gerek kalmadan işlemleri gerçekleştirir
- Güvenlik açıklarını ve SQL injection saldırılarını azaltır
- GraphQL ile uyumludur.
CORS
CORS, Connect / Express’ten yararlanan ara yazılım olarak cross-origin kaynak paylaşımı (CORS) sağlamaya yönelik bir Node.js paketidir .
CORS paketi, Node.js yönlendirme ara yazılımının etrafında bir sarmalayıcı oluşturarak uygulamanın kendi etki alanları dışındaki kaynaklara erişmesine olanak tanır. Origin, headers ve daha fazlası dahil olmak üzere cross-origin seçeneklerini yapılandırmak için birden fazla parametre gerekir.
CORS Kütüphanesinin Özellikleri ve Avantajları
- Bir web uygulamasında CORS’u etkinleştirmek için gereken kod miktarını azaltır
- İzin verilenler listesindeki etki alanlarını yapılandırmanıza olanak tanır ve kullanıcının seçilen kaynaklar için CORS’u etkinleştirmesine ve diğerlerini engellemesine olanak tanır
- Sorunsuz hata yönetimi sağlar ve geliştiricilerin şüpheli kaynaklardan gelen güvenlik tehditlerini analiz etmesine yardımcı olur.
Nodemailer
Nodemailer, Node.js sunucusundan e-posta göndermeyi kolaylaştırır. Desteklenen diğer aktarım protokollerinin yanı sıra Basit Posta Aktarım Protokolü’ne (SMTP) dayanan bir aktarım nesnesi kullanır . Bu taşıma nesnesi, bir mesaj oluşturmak için girdi olarak from, to, subject, bodyve diğer parametreleri alır.
Nodemailer Kütüphanesinin Özellikleri ve Avantajları
- SMTP, Amazon Simple Email Service (SES), Sendmail ve akış dahil birden fazla aktarımı destekleyen tek bir modüldür.
- E-postanın gövdesi olarak metin ve HTML içeriğini destekler.
- Teslimat durumu bildirimlerini yapılandırır ve toplu e-posta teslimatlarını destekler.
Passport
Passport, Node.js için modüler bir kimlik doğrulama ara yazılımıdır. Passport, Google, Facebook, Twitter ve diğer özel ve tek oturum açma (SSO) sağlayıcıları dahil olmak üzere 500’den fazla kimlik doğrulama stratejisi içerir. Stratejiler arasında normal kullanıcı adı ve parola kimlik doğrulaması, sosyal medya siteleri için OAuth kullanılarak yetkilendirilmiş kimlik doğrulama ve birleştirilmiş kimlik doğrulama için OpenID yer alır.
Pasaport Kütüphanesinin Özellikleri ve Faydaları
- Minimum kodla sosyal medya siteleri için yerleşik SSO kimlik doğrulaması.
- Birden fazla oturumda kalıcı oturum açma bilgilerini yapılandırır.
- Express ve Connect ara yazılımıyla engelsiz bir yapılandırma kullanır.
Async
Async , geliştiricilerin JavaScript “async” veya callback – accepting işlevleriyle çalışarak eşzamansız JavaScript ile çalışmasına yardımcı olan güçlü bir Node.js yardımcı program modülüdür. Async modülüne bir dizi callback iletirseniz, bunları çalıştırır ve bir promise çıktısı vermek için kullanır.
Async Kütüphanenin Özellikleri ve Avantajları
- Async kontrol akışını kolaylıkla geliştirmek için yaklaşık 70 yardımcı fonksiyon sağlar
- Bir ana bilgisayara gönderilen birden fazla isteğin üstesinden gelmek için “paralel” işlev sunar (aksi takdirde uygulanması çok fazla kod gerektirir)
- JavaScript’te iç içe geçmiş “callback hell” durumunu ortadan kaldırmaya yardımcı olur.
Winston
Winston, birden fazla aktarımla universal loglamayı destekleyen bir Node.js logging kütüphanesidır. Bu aktarımlar, logları uygulamanızın ihtiyaçlarına göre saklar ve yapılandırır.
Varsayılanın yanı sıra bu createLoggerişlev, konsollar, dosyalar ve veritabanları gibi mevcut aktarım seçeneklerini kullanan özelleştilebilir loggerlar oluşturmanıza yardımcı olur. Özelleştirilebilir loglayıcılar özel aktarımlarla da kullanılabilir.
Winston Kütüphanesinin Özellikleri ve Faydaları
- Tek bir yapılandırma dosyası aracılığıyla log kaydı üzerindeki kontrolü merkezileştirir.
- loglarınızı JSON biçiminde veya metin olarak saklarken olduğu gibi özelleştirilebilir log biçimlerine izin verir.
- Uygulama ihtiyaçlarınıza göre yapılandırabileceğiniz özelleştirilebilir log kaydı düzeyleri sağlar.
Mongoose
Mongoose , nesne veri modelleme (ODM) kütüphanesi olarak da bilinen, kancalar, model doğrulama, bağlanma ve sorgulama gibi çeşitli işlevler sunan, MongoDB için Node.js tabanlı bir nesne modelleme aracıdır .
Mongoose, MongoDB’de koleksiyon oluşturan uygulama katmanında tek bir şemayı zorunlu kılarak uygulama verileri için şema tabanlı bir çözüm sunar. Her şema, bir MongoDB koleksiyonuna karşı veri alma, güncelleme ve silme gibi sorgular çalıştırmanıza olanak tanıyan bir Mongoose modeliyle ilişkilidir.
Mongoose Kütüphanesinin Özellikleri ve Faydaları
- Sorguların kolay soyutlanmasını sağlayarak geliştiricilerin MongoDB işlemleri için daha az kod yazmasına olanak tanır
- Veritabanına ne tür verilerin eklenebileceği veya güncellenebileceğine ilişkin kuralları tanımlamak için yerleşik veri doğrulama
- Geliştiriciler için ortak bir MongoDB örneği sağlayan MongoDB koleksiyonu için önceden tanımlanmış bir yapı uygular
- Birden çok sorguyla çalışmak için sorgu zincirlemeye izin verir.
Soket.IO
Socket.IO , tarayıcı ile sunucu arasında gerçek zamanlı, çift yönlü, olaya dayalı iletişim kuran bir Node.js iletişim kütüphanesidır.
HTTP uzun yoklama yoluyla dijital bir handshake kullanarak sunucu ve istemci arasında düşük düzeyli bir bağlantı kurmak için Engine.IO’yu kullanır . Bağlantı kurulduğunda istemci ve sunucu iletişimi TCP üzerinden gerçek zamanlı olarak gerçekleşir.
Sockets.IO Kütüphanesinin Özellikleri ve Faydaları
- WebSocket kullanarak düşük maliyetli bir iletişim kanalı sağlar ve bir geri dönüş seçeneği olarak HTTP uzun yoklamasına (HTTP long-polling) izin verir.
- Ölçeklenebilir ve sunucuların olayları birden fazla istemciye kolayca yayınlamasına olanak tanır.
- Kullanılan TCP bağlantılarının sayısını en aza indiren ve sunucudaki soket bağlantı noktalarını azaltan ad alanları aracılığıyla çoğullamayı destekler.
Lodash
Lodash , geliştiricilerin kısa ve sürdürülebilir JavaScript kodu yazmasına yardımcı olan bir yardımcı program kütüphanesidır. Tip kontrolü, basit matematik işlemleri ve daha fazlası dahil olmak üzere günlük programlama görevlerini basitleştirmek için 200’den fazla yardımcı fonksiyona sahiptir.
Lodash Kütüphanesinin Özellikleri ve Faydaları
- Çoklu doldurmaların (polyfills) yardımıyla tarayıcılar arası uyumluluğu korur.
- Bir dizi nesneyle çalışırken find, filterve flatMap gibi işlemleri mümkün kılan yerleşik çözümler sunar.
- Geliştiricilerin tekrarlardan kaçınmasına ve temiz kod kullanmalarına yardımcı olur.
Axios
Axios, tarayıcılar ve Node.js için promise tabanlı bir HTTP istemcisidir. Ayrıca gerektiğinde tarayıcıdan veya Node.js’den gelen istek ve yanıt verilerinin dönüştürülmesini de yönetir.
Axios izomorfiktir, yani sunucuda ve istemcide aynı kod tabanıyla çalışabilir. Axios, HTTP iletişimi için sunucu tarafında yerel bir HTTP modülü ve istemci tarafında XMLHttpRequest kullanır.
Axios Kütüphanesinin Özellikleri ve Faydaları
- GET, PUT, POSTve DELETE gibi yaygın HTTP veri türleri için yerleşik API işlevleri sunar.
- İnternet üzerinden HTTP istekleri yaparken siteler arası istek sahteciliği (CSRF) koruması aracılığıyla daha fazla güvenlik sağlar.
- Otomatik JSON veri dönüşümü yoluyla yanıt verilerini kolayca JSON’a dönüştürür.
Puppeeter
Puppeteer , DevTools Protokolü aracılığıyla Chrome/Chromium’u kontrol etmek için üst düzey bir API sağlayarak Chrome’u otomatikleştiren bir Node.js kütüphanesidır . İstek işleme testleri, kullanıcı arayüzü öğelerinin bulunması ve karşılaştırılması, performans testleri ve daha fazlasını içeren ön uç testlerini otomatikleştirir.
Geliştiriciler, bir Chromium örneği oluşturmak için Puppeteer paketini kodlarına aktarabilir. Örnek daha sonra tarayıcı motoruyla iletişim kurarak testleri otomatikleştirebilir.
Puppeeter Kütüphanesinin Özellikleri ve Faydaları
- Sıfır kurulum, yapılandırması kolay ve ek sürücü gerektirmez.
- Önceden oluşturulmuş içerik oluşturmak için web sitelerini tarar.
- Jest ve Mocha gibi popüler test frameworkleriyle uyumludur.
Multer
Multer, Node.js için bir ara yazılım kütüphanesidir. HTML form ayrıştırıcı busboy üstüne yazılır ve çok parçalı ve çok biçimli verileri işler.
Multer örneğini başlattıktan sonra, yüklenen dosyanın sunucuda nerede saklanacağını belirtmek için seçeneklerinden biri olarak dest nesnesini alır.
Multer , yükleme isteğiyle birlikte bir file nesnesi gönderir ; bu nesne daha sonra ayrıştırılır ve Multer API tarafından hedef konuma gönderilir.
Multer Kütüphanesinin Özellikleri ve Faydaları
- Yerleşik ayrıştırma yoluyla ham HTTP istek verilerini depolama için daha erişilebilir hale getirir.
- Yüklenen dosyaya ek bir güvenlik katmanı ekleyerek, dosya için kodlama türünü belirlemenizi sağlar.
- Dosya türü ve boyutuna göre yükleme seçeneklerini filtreler ve sınırlayabilir.
Dotenv
Dotenv, uygulamadaki ortam değişkenlerini yöneten ve hassas yapılandırma değişkenlerini koruyan bir Node.js yardımcı program kütüphanesidır. Dotenv ayrıca uygulamanın ortam değişkenlerini depolamada on iki faktörlü uygulama metodolojisini takip etmesine yardımcı olur.
Dotenv’in logosu.
Dotenv Kütüphanesinin Özellikleri ve Faydaları
- API anahtarları ve oturum açma kimlik bilgileri gibi önemli verileri kaynak kodundan ayırmanıza yardımcı olur ve her geliştiricinin kendi kullanımı için bir .env dosyası oluşturmasına olanak tanır.
- Sıfır bağımlılık modülü nedeniyle uygulamanın boyutuna katkıda bulunmaz.
Özet
Node.js’de çok sayıda yararlı kütüphane bulunur ancak projeniz için en iyi olanı seçmek zor olabilir. Burada ele aldığımız Node.js kütüphanelerindan bazıları, bir sonraki uygulamanız için “olmazsa olmazlar” olabilir.
Örneğin ağırlıklı olarak MongoDB ile çalışıyorsanız Mongoose kullanmak cankurtaran olabilir. CORS, birden fazla alan adından içerik sunmanıza yardımcı olabilir ve bir ekip içinde kodu paylaşmanız gerekiyorsa Dotenv son derece kullanışlı olabilir.