2021'de JavaScript en yaygın kullanılan programlama diliydi.
JavaScript programlamayı mümkün kılan çok sayıda çerçeve tarafından görüldüğü gibi, bu teknolojinin çekiciliği yadsınamaz.
Ön uçta Angular, React ve Vue, arka uçta Express ve Next var.
JavaScript'te erişilebilir arka uç programlama için pek çok harika çerçeveyle, neden sadece Express veya Next kullanmak yerine farklı bir şey arayacağımı düşünüyor olabilirsiniz.
Belki de geliştirme sürecini düzgün bir standart ile hızlı bir şekilde başlatmanız gerekiyor ve yalnızca yeni denetleyicileri değil, hizmetleri de manuel olarak eklemek sizi hasta ediyor.
Veya yönetimi kolay, büyük, ölçeklenebilir bir yazılım oluşturmak istiyorsunuz. Veya belki de sadece daha verimli ve rahat bir şekilde çalışmak istiyorsunuz.
Sizin durumunuzda hangisi doğru olursa olsun, Nest.js ihtiyaçlarınız için mükemmel bir çözüm olabilir.
Bu gönderi, uygulamalı deneyimin yanı sıra NestJS içgörüleri sağlayacaktır.
NestJS nedir?
NestJS açık kaynaklı, genişletilebilir ve uyarlanabilir aşamalı bir Düğüm çerçevesidir .J'ler arka uç sistemleri oluşturmak, ilgi çekici ve zorlu hale getirmek için çerçeve. Şimdi en hızlı büyüme oranına sahip Düğüm.
js için TypeScript çerçevesi. NestJS, ölçeklenebilir, test edilebilir ve gevşek bağlantılı uygulamalar oluşturmak için kullanılır.
Node.js'ye ölçeklenebilirlik ekler. Js sunucuları tamamen yeni bir seviyeye alındı. PostgreSQL, MongoDB ve MySQL desteklenen veritabanları arasındadır.
NestJS genişletilebilir çünkü diğer kitaplıklarla birlikte kullanılabilir; uyarlanabilir tam teşekküllü ekosistemi nedeniyle esnektir. JavaScript özelliklerini ve tasarım ilkelerini desteklediği için ilerici.
Öncelikle Angular, React ve Vue'dan etkilenir ve yerleşik bağımlılık enjeksiyonu ile birlikte gelir.
Özellikler
- Kullanımı, öğrenmesi ve ustalaşması kolaydır.
- ücretsiz ve açık kaynak (MIT lisansı)
- Artan üretkenlik ve geliştirme kolaylığı için Güçlü Komut Satırı Arayüzü (CLI)
- Kullanımı kolay birim test programları
- JavaScript'in bir üst kümesi olan sıkı yazılmış bir dil olan TypeScript kullanılır.
- Aktif bir kod tabanının geliştirilmesi ve bakımı.
- TypeORM, Mongoose, GraphQL, günlüğe kaydetme, doğrulama, önbelleğe alma, WebSockets ve daha fazlası gibi popüler teknolojiler ve fikirlerle arayüz oluşturmayı kolaylaştıran yuvaya özel yüzlerce modül desteği.
NestJS'nin yapı taşları nelerdir?
Nest uygulamalarının yapı bileşenleri aşağıda listelenmiştir; başkaları da var, ama bu üçü en önemlileri. Onlara hızlıca bir göz atalım.
1. Kontrolörler
Denetleyiciler, gelen istekleri işlemekten ve istemcilere yanıt vermekten sorumludur. Belirli HTTP isteklerini alır ve yönlendirme sistemi hangi denetleyicinin hangi isteği alacağını belirler.
Daha sonra göndermek için uygun bir cevap taslağı hazırlar. Sınıfların ve dekoratörlerin yardımıyla basit bir toplayıcı oluşturulur ve her denetleyicinin çeşitli görevleri yapmak için kendi rotaları vardır.
2. Sağlayıcılar
Sağlayıcılar, Nest'te önemli bir fikirdir. Temel Nest sınıflarının çoğu - hizmetler, depolar, fabrikalar, yardımcılar vb. - sağlayıcılar olarak ele alınabilir.
Bir sağlayıcının temel fikri, bir bağımlılık olarak enjekte edilebilmesidir; bu, nesnelerin birbirleriyle çeşitli ilişkiler kurabileceğini ve nesnelerin örneklerini "bağlama" rolünün esas olarak Nest çalışma zamanı sistemine dış kaynak sağlanabileceği anlamına gelir.
3. Modüller
Modül, uygulama yapısının bileşenlerini düzenleyen @Module() dekoratörüne sahip bir sınıftır. Her uygulamanın, uygulama grafiğini oluşturmak için kullanılan ve sağlayıcı ile modül arasındaki bağımlılıkları ve etkileşimleri daha da çözen bir kök modülü vardır.
Bu dekoratör, uygulama kodunda hangi bileşenlerin, denetleyicilerin veya diğer kaynakların kullanılacağını belirlemek ve bunları tek bir kümede birleştirmek için Nest.js'ye meta veriler verir.
Her modül, bir şekilde birbirine bağlı olan bir yetenekler koleksiyonuna sahiptir.
NestJS'yi kullanmaya başlama
1. Montaj
NestJS'yi kuralım ve aşağıdaki adımları izleyerek onunla bir proje yapalım:
Bunun sonucunda aşağıdaki dizin yapısı oluşturulacaktır:
2. Kontrolörler
Nest'in yapı taşları denetleyicilerdir. Bunlar, gelen isteklerin işleneceği konumlardır. Aşağıdaki kodda görüldüğü gibi, HTTP yöntem değiştiricileri (Get, Post, Put, Delete vb.) dekoratörlerini kullanarak rota yolunu belirtebilirsiniz.
Nestjs, dekoratör yaklaşımını kullanır ve JavaScript'i de desteklemesine rağmen çoğunlukla TypeScript'te geliştirilmiştir. İstek gövdesini doğrulamak için bir sınıf doğrulayıcı da kullanabilirsiniz.
Sadece bir Nestjs sunucu örneği yapacağım ve global olarak ValidationPipe ekleyeceğim. Borular, yalnızca Denetleyicilerden önce yürütülen yöntemlerdir. Borular, @UsePipes dekoratörü kullanılarak yöntem/argüman düzeyinde de uygulanabilir.
3. Sağlayıcılar
Sağlayıcılar, Nestjs'nin bir diğer kritik bileşenidir. Şimdiye kadar, verileri geçici bir değişkende saklıyordum. Bu nedenle, bu kadar basit bir görev, Denetleyici işleyicileri kullanılarak gerçekleştirilebilir.
Ancak, daha büyük, daha karmaşık mantık için kod ayırma ve yeniden kullanım zor olacaktır. Bu, tedarikçilerin geldiği zamandır. @Injectable dekoratörünü kullanarak bir sınıfın üstünde bir sağlayıcı bildirebilir/oluşturabilirsiniz. Ardından, sağlayıcıları kullanarak bağımlılık ekleme, günlüğe kaydetme ve diğer görevleri yapabilirsiniz.
4. Modüller
Nestjs modülleri genel değildir; bunun yerine, derinlikleri vardır.
Ancak, diğer modüllerle de paylaşılabilir. Angular gibi Global Modüller sunsa da, Servisleri/Denetleyicileri Nestjs'de en yaygın olarak kullanıldıkları modülde tutmanız daha tavsiye edilir.
NestCLI çoğu zaman modülleri üretmek için kullanılır ve bu modülün bağlamında oluşturulan sağlayıcılar/denetleyiciler CLI tarafından otomatik olarak eklenir. Bunlar özellik modülleri olarak bilinir.
5. İstisna Filtreleri
İstisna filtreleri, bir Denetleyici bir istisna oluşturduğunda çağrılan hata işleyicileridir. Sorunu otomatik olarak yönetir ve uygun, kullanıcı dostu bir hata mesajı verir.
NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException ve diğerleri dahil olmak üzere birçok HttpException devralınan İstisna @nestjs/common paketi tarafından sağlanır. Hatta kendi ExceptionFilter'ınızı tasarlayabilirsiniz.
6. Ara yazılım
Rota işleyicisinden önce çağrılan bir işleve ara katman yazılımı denir. İstek ve yanıt nesnelerinin yanı sıra uygulamanın istek-yanıt döngüsündeki next() ara katman yazılımı işlevine ara katman yazılımı işlevleri tarafından erişilebilir.
next adlı bir değişken, genellikle sonraki ara katman işlevini tanımlamak için kullanılır. Özel Nest ara yazılımı, @Injectable() dekoratörü kullanılarak bir yöntemde veya sınıfta uygulanabilir.
7. Muhafızlar
Muhafızlar sadece bir şeyden sorumludur. Bir talebin kontrolör tarafından belirli koşullara dayalı olarak işlenip işlenmediğini değerlendirmek onların sorumluluğundadır (Özellikle, kullanıcı tanımlı mantık).
Kimlik doğrulama/yetkilendirme için yararlıdır ve Nestjs'de önerilen yöntemdir.
Kimlik doğrulama/izinler vb. ara katman yazılımı kullanılarak yapılabilse de, ilgili güçlü bir içeriğe sahip olmadıkları ve isteği işlemek için hangi yöntemin kullanılacağını bilmeleri için hiçbir sebepleri olmadığı için ekspres veya diğer HTTP sunucularında yapılmaz.
Avantajlar
- Çerçeve, uç noktalardan Swagger belgelerine kadar her şeyi üretmek için kullanılan ek açıklamalara büyük ölçüde bağımlıdır. Uç noktalar basit ve düzenlidir ve ek açıklamalar genel olarak geliştirmeyi kolaylaştırır.
- Nest.js modül tabanlı bir çerçeve olduğundan, genel amaçlı modülleri dışsallaştırmak ve kodu birçok projede yeniden kullanmak kolaydır.
- Nest.js'nin klasör yapısı Angular'dan önemli ölçüde etkilenir. Bir Nest hizmeti tasarlarken bu, minimum kesinti süresi sağlar.
- Bileşenlerin, uygulama modülünü ve ana dosyayı içeren kök ile kendi dizinleri vardır. Yapının basitliği nedeniyle, uygulamanın yapısından ziyade uç noktaların ve müşterilerinin tasarımına daha fazla dikkat edilebilir.
- Nest, Angular gibi, Node Paket Yöneticisi aracılığıyla kullanılabilen güzel bir komut satırı aracı olan Nestjs/cli sunar.
Dezavantajlar
- Nest, TypeScript kullanımı ve Angular entegrasyonu açısından bir avantaja sahiptir, ancak büyük bir şirketin finansal desteğinden yoksundur.
- Belge eksikliği, Nest kullanıcıları için en büyük tehdidi oluşturur. Çerçevenin diğer çerçevelerle mükemmel etkileşimleri olmasına rağmen, belgeler seyrektir ve herhangi bir olası zorluğu ele almaz.
- Nest, TypeScript kullanımı ve Angular açısından bir avantaja sahiptir.
Sonuç
NestJS, geliştiricilere büyük bir destek sağlar. Geliştirmeye başlamak için tek yapmanız gereken yeni bir uygulama oluştur ve gitmeye hazırsın. Bu çerçeve, hemen önemli bir destek sağlarken, uygun bir uygulama mimarisi kurarak ek aşamalar almanıza da yardımcı olur.
Hem yönetilebilir hem de uzun ömürlü uygulamalar üretmek için en son yöntemlerden ve teknolojiden yararlanır. GraphQL, WebSockets'e bağlanmak ve mikro hizmetler oluşturmak için kullanılabilir.
Yorum bırak