Nest.JS PlatoBlockchain Veri Zekası ile Temiz Bir Mimari Uygulamak. Dikey Arama. Ai.

Nest.JS ile Temiz Bir Mimari Uygulamak

Bu makale, temiz, ölçeklenebilir ve daha da önemlisi yeniden düzenlenebilir kod yazmaya çalışan meraklılar içindir. Nest.JS'nin temiz kod yazmamıza nasıl yardımcı olabileceği ve hangi temel mimariyi kullandığı hakkında bir fikir verecektir.

Nest.JS ile temiz bir mimari uygulamak, öncelikle bu çerçevenin ne olduğunu ve nasıl çalıştığını anlamamızı gerektirecektir.

Nest veya Nest.JS, TypeScript ile oluşturulmuş verimli, ölçeklenebilir Node.js uygulamaları (sunucu tarafı) oluşturmaya yönelik bir çerçevedir. Express veya Fastify kullanır ve geliştiricilerin kodlarında bol miktarda modül (üçüncü taraf) kullanmalarını sağlamak için bir soyutlama düzeyi sağlar.

Bu temiz mimarinin neyle ilgili olduğunu daha derine inelim. 

Pekala, hepiniz MVC mimarisini kullanmış veya en azından duymuş olabilirsiniz. MVC, Model, Görünüm, Denetleyici anlamına gelir. Bunun arkasındaki fikir, proje yapımızı 3 farklı bölüme ayırmaktır.

1. model: DB'deki Relation/Documents ile eşleşen Object dosyasını içerecektir.

2. Denetleyici: İstek işleyicisidir ve iş mantığı uygulamasından ve tüm veri işlemeden sorumludur.

3. Görünüm: Bu bölüm, verilerin görüntülenmesiyle ilgili dosyaları, HTML dosyalarını veya bazı şablonlama motoru dosyalarını içerecektir.

Bir model oluşturmak için, onu oluşturmak için bir tür ORM/ODM aracına/modülüne/kütüphanesine ihtiyacımız var. Örneğin, modülü doğrudan kullanırsanız, hadi 'sequelize' diyelim ve ardından aynısını kontrol cihazınızda oturum açmak için kullanın ve temel iş mantığınızı 'sequelize'a bağımlı hale getirin. Şimdi, diyelim ki 10 yıl sonra, piyasada kullanmak istediğiniz daha iyi bir araç var, ancak sequencelize'yi onunla değiştirir değiştirmez, bunu önlemek için birçok kod satırını değiştirmeniz gerekecek. son Dakika. Ayrıca, başarılı bir şekilde dağıtılıp dağıtılmadığını kontrol etmek için tüm özellikleri bir kez daha test etmeniz gerekecek, bu da değerli zamanınızı ve kaynaklarınızı boşa harcayabilir. Bu zorluğun üstesinden gelmek için, SOLID'in son ilkesi olan Bağımlılık Tersine Çevirme İlkesi'ni ve böyle bir karışıklığı önlemek için bağımlılık enjeksiyonu adı verilen bir tekniği kullanabiliriz.

Hala kafan karıştı mı? Ayrıntılı olarak açıklayayım.

Dolayısıyla, Bağımlılık Tersine Çevirme İlkesi'nin basit bir şekilde söylediği şey, temel iş mantığınızı yaratmanız ve ardından bunun etrafında bağımlılık oluşturmanızdır. Başka bir deyişle, temel mantığınızı ve iş kurallarınızı her türlü bağımlılıktan kurtarın ve dış katmanları, buna bağlı mantığınız yerine temel mantığınıza bağımlı olacak şekilde değiştirin. Temiz mimari budur. Bağımlılığı temel iş mantığınızdan çıkarır ve sistemi, onlara bağımlı olmaktan çok onlara bağımlıymış gibi görünecek şekilde etrafında kurar.

Bunu aşağıdaki şema ile anlamaya çalışalım.

Kaynak: Temiz Mimari Koni 

Mimarimizi 4 katmana ayırdığımızı görebilirsiniz:

1. Varlıklar: Özünde varlıklar, kurumsal kurallarınızı tanımlayan ve uygulamanın ne hakkında olduğunu söyleyen modellerdir (Kuruluş kuralları). Bu katman zamanla neredeyse hiç değişmez ve genellikle soyuttur ve doğrudan erişilemez. Örneğin, her uygulamanın bir 'kullanıcısı' vardır. Kullanıcının depolaması gereken tüm alanlar, türleri ve diğer varlıklarla olan ilişkileri bir Varlık oluşturacaktır.

2. Kullanım durumları: İşletme kurallarını nasıl uygulayabileceğimizi anlatır. Kullanıcı örneğini tekrar ele alalım. Artık hangi veriler üzerinde işlem yapacağımızı biliyoruz, kullanım durumu bize bu veriler üzerinde nasıl işlem yapacağımızı söylüyor, örneğin kullanıcının şifrelenmesi gereken bir parolası olacak, kullanıcının oluşturulması gerekiyor ve parola herhangi bir zamanda değiştirilebilir. belirli bir zaman noktası vb.

3. Denetleyiciler/Ağ Geçitleri: Bunlar, kullanım durumlarını harici araçlar ve bağımlılık enjeksiyonu kullanan kitaplıklar kullanarak uygulamamıza yardımcı olan kanallardır.

4. Harici Araçlar: Mantığımızı oluşturmak için kullandığımız tüm araçlar ve kütüphaneler bu katmanın altına gelecek, örn. ORM, Emailer, Şifreleme vb.

Kullandığımız araçlar, onları kullanım durumlarına nasıl kanalize ettiğimize bağlı olacak ve buna karşılık kullanım durumları, işimizin özü olan varlıklara bağlı olacaktır. Bu şekilde bağımlılığı dışarıdan içeriye doğru tersine çevirdik. SOLID'in Bağımlılık Tersine Çevirme İlkesinin ima ettiği şey budur.

Tamam, şimdiye kadar Nest.JS'nin ana fikrini anladınız ve temiz mimarinin nasıl çalıştığını anladınız. Şimdi soru ortaya çıkıyor, bu ikisi nasıl ilişkilidir?  

Nest.JS'nin 3 yapı taşının ne olduğunu ve her birinin ne işe yaradığını anlamaya çalışalım.

  1. Modüller: Nest.JS, her özelliği bir modül olarak ele alabileceğimiz şekilde yapılandırılmıştır. Örneğin, modeller, kontrolörler, DTO'lar, arayüzler vb. gibi Kullanıcı ile bağlantılı olan her şey bir modül olarak ayrılabilir. Bir modülün bir denetleyicisi ve hizmetler, orm, e-posta gönderici vb. gibi enjekte edilebilir işlevsellikler olan bir grup sağlayıcısı vardır.
  1. Kontrolörler: Nest.JS'deki denetleyiciler, ağ ile mantığınız arasındaki arabirimlerdir. İstekleri işlemek ve yanıtları uygulamanın istemci tarafına (örneğin, API çağrısı) döndürmek için kullanılırlar.
  1. Sağlayıcılar (Hizmetler): Sağlayıcılar, esneklik ve ekstra işlevsellik sağlamak için denetleyicilere ve diğer sağlayıcılara ekleyebileceğimiz enjekte edilebilir hizmetler/işlevlerdir. Her türlü karmaşıklığı ve mantığı soyutlarlar.

Özetlemek,

  • Arayüz görevi gören denetleyicilerimiz var (temiz mimarinin 3. katmanı)
  • İşlevsellik sağlamak için enjekte edilebilecek sağlayıcılarımız var (4. temiz mimari katmanı: DB, Cihazlar, vb.)
  • Kullanım durumumuzu (2. Katman) tanımlamak için hizmetler ve depolar da oluşturabiliriz.
  • Varlıklarımızı DB sağlayıcılarını (1. Katman) kullanarak tanımlayabiliriz.

Sonuç:

Nest.JS, güçlü bir Node.JS çerçevesidir ve günümüzde mevcut olan en iyi bilinen daktilo yazısıdır. Artık bu çerçeve hakkında bilgi sahibi olduğunuza göre, onu temiz bir mimariye sahip bir proje yapısı oluşturmak için kullanıp kullanamayacağımızı merak ediyor olmalısınız. Peki, cevap -Evet! Kesinlikle. Nasıl? Bu makalenin bir sonraki serisinde açıklayacağım. 

O zamana kadar, Bizi izlemeye devam edin!

Hakkında Yazar:

Junaid Bhat şu anda Mantra Labs'ta Teknoloji Lideri olarak çalışıyor. O, endüstri standartlarını takip ederek ve problem çözmeye yönelik daha yapısal bir yaklaşıma yönelerek her gün daha iyi bir mühendis olmaya çalışan bir teknoloji tutkunu. 

En son blogumuzu okuyun: Golang-Beego Çerçevesi ve Uygulamaları

Gelen kutunuza iletilmeye değer bilgi

Zaman Damgası:

Den fazla Mantra Laboratuvarları