NodeJ'lere Giriş

nodejs
javascript
sunucu
NodeJ'lere Giriş cover image

Giriiş

Web hakkında bilgi edinmeye çalışırken

geliştirmede, genellikle ön ucun arka uçtan önemli ölçüde daha erişilebilir olduğunu görüyoruz. Bunun pek çok nedeni var, özellikle de koddaki bir sayfanın belirli bir öğesinin değiştirilmesi ve siteye uygulanan değişikliğin fark edilmesinden kaynaklanan anında geri bildirim hissi. Bu geri bildirim genellikle yeni başlayanlar için faydalıdır çünkü kodlarını ayarlamalarına ve hatalarından ders çıkarmalarına olanak tanır. Ne yazık ki, arka uçta durum böyle değil: Çoğu zaman, terminalde basit bir "Merhaba Dünya" mesajının görünmesini sağlamak için ortamın önceden ayarlanması ve gerekli bağımlılıkların kurulması için önemli miktarda çalışma yapılır. Açık kaynak topluluğunda, çerçevelerin geliştirme sürecini kolaylaştırmaya ve geliştiricinin deneyimini geliştirmeye yönelik sürekli olarak birçok ilerleme kaydedilmektedir. NodeJ'ler bunun güzel bir örneğidir. Bu çerçeve, sunucu tarafında yazmayı sağlayan çok yetenekli bir teknolojidir. Javascript'te kod yazmak kullanışlıdır ve onu rakiplerinden ayıran çeşitli yerleşik araçlar ve özellikler sunar. Bu makalede, tamamen işlevsel bir proje oluşturarak NodeJ'leri ve ekosistemini uygulamalı bir yaklaşımla keşfedeceğiz.

Ne inşa edeceğiz?

ToDo uygulamaları, ön uç geliştirmeyi öğrenen yeni başlayanlar için başvurulacak bir projedir. Bu nedenle bir Yapılacaklar listesi API'si oluşturmaya karar verdik. Bu, arayüzümüze veri kalıcılığı eklememizi sağlayacak ve bize bu verileri değiştirme (ekleyerek, güncelleyerek, yapılacak işleri silerek vb.) yeteneği verecektir.

Son kodu burada bulabilirsiniz.

Araçlarımız

Bu proje için basitleştirilmiş bir teknoloji yığını kullanacağız. Gerçek hayattaki projelerde bulacağınız birçok aracın minimal versiyonu olarak düşünülebilir, bunun nedeni üst düzey fikirlerin aynı olmasıdır. Uygulamanın ayrıntıları ve belirli bir aracın diğerine tercih edilmesi başlangıç ​​için önemli değildir.

  • NodeJ'ler, bahsettiğimiz gibi, sunucu tarafı uygulamalar oluşturmak için en popüler Javascript çerçevelerinden biridir.

  • ExpressJs, NodeJS'nin üzerinde kullanılan minimal bir Javascript çerçevesidir. Birçok yerleşik özelliği kullanarak geliştirme sürecini hızlandırır. Ayrıca mühendislerin kullanımını kolaylaştırmak amacıyla NodeJS projelerindeki geliştirme uygulamalarını standartlaştırmanın bir yolu olarak da kullanılır.

  • LowDB basit bir bellek içi veritabanıdır. Basitliği, dağıtımlar ve konfigürasyonlar gibi daha gelişmiş konularla uğraşmadan, bir NodeJs projesinde bir veritabanıyla nasıl etkileşimde bulunacağımızı göstermemize olanak tanır.

Kullanacağımız tüm araçları belirlediğimize göre artık klavyelerimize geçelim ve kodlamaya başlayalım!

Kurulum

Düğüm tüm platformlarda mevcuttur. Tüm kurulum kılavuzlarını resmi web sitesinde bulabilirsiniz. Windows kullanıcıları, komut satırında kullanılabilmesi için ortam değişkenlerinin yolu düğümünü eklediğinizden emin olmalıdır.

Ayrıca npm'nin kurulu olmasına ihtiyacımız olacak. Npm, NodeJ'ler için standart paket yöneticisidir. Proje bağımlılıklarımızı yönetmemizi sağlayacaktır. Kurulum kılavuzunu burada bulabilirsiniz.

Proje başlatma

Bağlantıya gidin ve başlangıç ​​projesini kopyalayın:

Bu, projemiz için basit bir başlangıç ​​deposudur. Proje dosya yapısıyla birlikte kullanacağımız tüm bağımlılıkları içerir. Ulaşıldığında her bir unsuru açıklayacağız. Terminalinizi açın, projenin yoluna gidin ve şu komutu çalıştırın:

npm install

Bu, package.json dosyasında belirtilen projenin tüm bağımlılıklarını yükleyecektir. package.json, herhangi bir Javascript/NodeJs projesinin kökünde bulunan dosyadır, ikincisi hakkında meta veriler içerir ve tüm proje bağımlılıklarını, komut dosyalarını ve sürümlerini yönetmek için kullanılır.

Tüm bağımlılıklar kurulduktan sonra uygulamamıza başlayabiliriz:

npm run start

“start” pakette belirttiğimiz bir scripttir. json dosyası. Bizim durumumuzda app.js olan uygulamamızın giriş dosyasını belirtir.

Artık terminalinizde aşağıdaki mesaj görünmelidir:

nodejs_1

Bu, sunucumuzun başarıyla başlatıldığı ve 3000 numaralı bağlantı noktasına gönderilen tüm istekleri dinlediği anlamına gelir. App.js'ye bakalım ve burada neler olduğunu açıklayalım:

nodejs_2

App.js bizim proje giriş dosyamızdır (ve şu anda tek dosyadır). App adında hızlı bir uygulama başlatıyoruz, http yöntemi “GET” ve '/' alt yoluna sahip tüm isteklerin bu rota tarafından ele alınacağını belirtiyoruz, istek ve yanıt nesnesini şu şekilde alan ara katman yazılımı adı verilen bir işlevi iletiyoruz. parametreler. İstek, işlenmesi için gereken tüm bilgileri içerdiğinden (parametreler, istek gövdesi, istek başlıkları vb.) ve istemciye döndürülecek olan yanıt nesnesi olduğundan bu çok önemlidir. Sadece “Merhaba dünya” mesajını göndererek başlıyoruz. Daha sonra uygulamamızın belirtilen porta (bizim durumumuzda 3000) gelen istekleri dinlemesini sağlıyoruz ve uygulamamızın çalışır durumda olduğunu ve istek almaya hazır olduğunu belirtmek için “Listing to port 3000” mesajını günlüğe kaydediyoruz.

Terminalinizi açın ve bağlantı çubuğuna “localhost:3000/” yazın ve Enter tuşuna basın. Bu, sunucumuza yerel olarak ulaşmak için kullanabileceğimiz belirtilen yoldur. Aşağıdaki mesajı alacaksınız:

nodejs_3

Veritabanı yapılandırması

Lowdb, kullanımı kolay ve özel bir kurulum gerektirmeyen açık kaynaklı bir veritabanıdır. Bunun arkasındaki genel fikir, tüm verileri yerel bir json dosyasında saklamaktır. LowDB kurulduktan sonra (bu, tüm bağımlılıkları kurduğumuzda yapıldı), db.js'ye aşağıdaki kodu ekleyebiliriz:

nodejs_4

Bu kod, LowDB'nin resmi belgelerinde bulunan koda oldukça benzer. Kendi kullanım durumumuz için biraz ayarladık. Satır satır açıklayalım:

İlk birkaç satır gerekli bağımlılıkları içe aktarmak içindir. "birleştirme", "yol" modülünde bulunan bir yardımcı işlevdir. Yolları ele almak ve işlemek için birçok yöntem sunan NodeJ'lerin temel modüllerinden biridir. “Low” ve “JSONFile'' LowDB tarafından sunulan iki sınıftır. İlki verilerimizi içerecek json dosyası örneğini oluşturuyor. İkincisi, ona göre hareket edecek gerçek veritabanı örneğini oluşturur. Son olarak “lodash”, yaygın programlama görevleri için çok çeşitli yardımcı işlevler sunan, en çok kullanılan javascript kitaplıklarından biridir. Verilerimizi işlemek için gelişmiş yöntemlerini kullanmamızı sağlamak için onu veritabanı örneğimize ekliyoruz.

Öncelikle db.json dosyasının yolunu belirliyoruz. Verilerimizi içerecek ve LowDB'ye aktarılacak dosyadır. Dosya belirtilen yolda bulunamazsa LowDB bir tane oluşturacaktır.

Daha sonra dosya yolunu LowDB bağdaştırıcısına aktarıyoruz ve bunu yeni LowDB veritabanı örneğimize aktarıyoruz. Daha sonra “db” değişkeni veritabanımızla iletişim kurmak için kullanılabilir. Veritabanı örneği oluşturulduktan sonra db.read() işlevini kullanarak json dosyasından okuruz. Bu, veritabanı örneğimizdeki “data” alanını ayarlayacak, böylece veritabanı içeriğine erişebileceğiz. Bu satırın önüne “bekliyor” yazdığımıza dikkat edin. Bunun amacı, bu talimatın çözümlenmesinin bilinmeyen bir süre alabileceğini ve NodeJ işleminin, kodun geri kalanına geçmeden önce yürütülmesini beklemesi gerektiğini belirtmektir. Bunu yapıyoruz çünkü okuma işlemi belirtilen dosyaya bellek erişimi gerektiriyor ve bu tür bir işlemin yürütülmesi için gereken süre makinenizin özelliklerine bağlı.

Artık veri alanına erişimimiz olduğuna göre, onu boş bir gönderi dizisi içeren bir nesne olarak ayarlıyoruz veya daha doğrusu, dosyanın herhangi bir önceki veri içerip içermediğini kontrol ediyoruz ve eğer durum böyle değilse boş diziyi ayarlıyoruz.

Son olarak, verilere yaptığımız değişiklikleri uygulamak için db.write() komutunu çalıştırıyoruz ve projemizdeki diğer dosyalarda kullanılabilmesi için veritabanı örneğini dışarı aktarıyoruz.

Genel İstek/Yanıt iş akışı

Aşağıdaki diyagramı göz önünde bulundurun:

nodejs_5

NodeJs/Express ile oluşturulan çok sayıda arka uç uygulamasında uygulanan genel mimariyi gösterir. Bir isteği işleme koymanın ardındaki genel iş akışını anlamak, yalnızca NodeJ uygulamalarını oluşturmanıza ve yapılandırmanıza olanak sağlamakla kalmayacak, aynı zamanda bu kavramları pratik olarak seçtiğiniz herhangi bir teknik yığına aktarmanıza da olanak tanıyacaktır. Bu sürece müdahale eden farklı katmanları keşfedeceğiz ve rollerini açıklayacağız:

## HTTP İstek Katmanı

Bu, uygulamamızdaki ilk katmandır; onu, farklı istemcilerden gelen çok çeşitli farklı istekleri alan bir ağ geçidi olarak düşünün; her istek daha sonra analiz edilir ve işlenmesi için uygulamanın özel bölümüne iletilir.

  • Yönlendiriciler: burada Ekspres yönlendiricilerden bahsediyoruz, ancak bu kavram birçok arka uç çerçevesinde bulunabilir. Yönlendiriciler, iş mantığımızdaki mantıksal dağıtımı kodumuza uygulamanın bir yoludur; bu, benzer özellikleri paylaşan her öğe kümesinin aynı giriş tarafından işlendiği ve kümelerin geri kalanından ayrılabileceği anlamına gelir. Bunun avantajı, kodun her bir bileşenini diğerlerinden bağımsız hale getirme ve bakımı ve genişletilmesinin daha kolay olmasıdır. Daha spesifik olarak ve örnek olarak, "/posts" paylaşılan URL yolunun koşullarını karşılayan tüm istekler aynı yönlendirici tarafından ele alınacaktır. http yöntemlerine bağlı olarak (GET, POST, vb.), farklı bir denetleyici kullanılacaktır.

  • Denetleyiciler: Bir denetleyici, yönlendiricilerden filtrelenmiş istekleri alır, ek işlemler uygular ve uygun hizmet yöntemlerini çağırır.

İş Mantığı Katmanı

Bu katman, uygulamanın belirli kullanım durumlarına ve arkasındaki iş mantığına bağlı olarak benzersizdir.

  • Hizmetler: Hizmetler, uygulamanın temel mantığını içeren bir dizi yöntemdir. Ayrıca ORM'ler/ODM'ler kullanımı aracılığıyla veritabanıyla etkileşime girerler. %20Belge%20Eşleme,grafik%20veritabanı%2C%20vb.).

  • Üçüncü taraf hizmetleri: Birçok modern uygulama, uygulama mantığının bir kısmını bir API aracılığıyla erişilebilen özel hizmetlere devretmeyi tercih eder. Bu tür hizmetler ödeme işleme hizmetleri, statik dosya depolama, bildirimler ve diğerleri olabilir.

  • ODM/ORM: ORM'ler ve ODM'ler, hizmetler ve veritabanı arasında aracı görevi görür. Rolleri, bir geliştiricinin SQL gibi özel veritabanı dilleri yerine kendi seçtiği programlama dilinde kod yazmasına olanak tanıyan bir veritabanı üzerinde üst düzey bir soyutlama sağlamaktır.

Veri Kalıcılık Katmanı

  • Veritabanları: Daha önce de belirttiğimiz gibi, hemen hemen tüm uygulamaların bir tür veri kalıcılığına ihtiyacı vardır. Bu kısım veritabanları tarafından ele alınır ve verilerin doğasına, iş mantığına ve diğer birçok hususa bağlı olarak belirli bir veritabanının diğerine göre seçilmesi uygulamanın verimliliği ve ölçeklenebilirliği açısından çok önemli kabul edilir.

Örnek: Gönderi Ekleme

Artık mimarinin arkasındaki genel fikri anladığımıza göre, bunu basit örneğimize uygulayalım. Yapılacaklar yazısı ekleme özelliğini uygulamamıza uygulayacağız. Herhangi bir gönderinin, onu daha sonra veritabanımızda tanımlamamızı sağlayacak benzersiz bir kimliğe, dize olan bir başlığa ve tamsayı türünde bir sıraya sahip olduğunu varsayalım. Diyagramımızı takip ederek yönlendiriciyi uygulamaya başlayacağız. index.js dosyasına aşağıdaki kodu ekleyin:

Starting a server in ExpressJS

Bu bizim yönlendirici dosyamızdır. Denetleyicimizden express'i ve "addPost" yöntemini içe aktarıyoruz (bunu kısa süre içinde uygulayacağız), ekspres yönlendiricinin bir örneğini oluşturuyoruz ve addPost yöntemini yönlendiricimize bağlıyoruz - bu, kök yolu ve http'ye sahip her istek için anlamına gelir. yöntemi “POST” ise, bunu işlemek için “addPost” yöntemi çağrılacaktır.

Yöntemimizi denetleyicide uygulamadan önce, ana app.js dosyamızdaki yeni yönlendiriciye başvuruyoruz ve yolunu “/posts” olarak belirliyoruz: Belirtilen yollara sahip tüm rotalar bu yönlendiriciye iletilecek, böylece işlenebilir. farklı denetleyici yöntemleriyle:

Starting a server in ExpressJS

Yönlendiriciyi içe aktarıyoruz ve “posts” olarak adlandırıyoruz. app.use(“/posts”,..), http yöntemi ne olursa olsun “/posts” alt yoluna sahip tüm isteklerin belirtilen yönlendiriciye yönlendirileceği anlamına gelir.

App.js'de yapılan diğer değişiklikler arasında, yürütülmesi için veritabanı yapılandırma dosyasının içe aktarılması ve istek gövdesi nesnesine erişmemizi sağlamak için express.json() öğesinin bir ara yazılım olarak kullanılması yer alır.

Artık rotalarımız ayarlandığına göre, control.js dosyasına “addPost” yöntemini ekleyebiliriz:

Starting a server in ExpressJS

“addPost”, isteği, yanıt nesnelerini ve bir sonraki işlevi parametre olarak alan bir ara yazılım işlevidir. Bir sonraki işlev çağrıldığında süreç zincirdeki bir sonraki ara katman yazılımına geçecek veya isteği sonlandıracaktır. Yöntemin kodunda, istek gövdesinden başlığı ve siparişi çıkarıyoruz ve bunları parametre olarak "createPost" hizmet fonksiyonuna iletiyoruz. Bu işlev gönderi niteliklerini alır, yeni bir gönderi oluşturur ve onu döndürür. Yeni gönderi oluşturulduktan sonra bunu 200 durum koduyla birlikte müşteriye geri göndeririz, bu da isteğin başarılı olduğu anlamına gelir. Beklenmedik bir hatayı yakalayıp bir sonraki ara katman yazılımına aktarmak için kodumuzun bir try/catch bloğunun içine yerleştirildiğini fark edebilirsiniz. Tüm yönlendiricilere, hatayı ayıklayan ve istemciye anlamlı bir hata mesajı döndüren bir hata işleme ara yazılımının eklenmesi en iyi uygulama olarak kabul edilir.

Artık geriye kalan tek şey service.js'de "createPost" işlevini uygulamak:

nodejs_6

Daha önce mimarinin farklı katmanlarını açıklarken de belirttiğimiz gibi hizmet katmanı, ORM/ODM kullanımı aracılığıyla veri depolama çözümüyle etkileşime girer. Ancak örneğimizde, Lowdb yerleşik Javascript desteğiyle birlikte geldiğinden ayrı bir ORM kullanmamıza gerek kalmayacak. Sözdizimiyle ilgili tüm ayrıntıları belgelerde bulabilirsiniz.

“CreatePost” yöntemi, başlık ve sırayı parametre olarak alır ve bunları yazı nesnesini oluşturmak için kullanır. Benzersiz kimlik için, benzersiz bir karakter dizisi oluşturan "nanoid" adı verilen özel bir kütüphane kullanıyoruz. Yeni gönderiyi veritabanındaki posts dizisine ekliyoruz ve bu değişiklikleri yazıyoruz; yeni gönderi daha sonra işlev tarafından döndürülür.

Artık "createPost" hazır olduğuna göre, gönderi ekleme özelliği artık tamamlanmış ve çalışır durumdadır. API'leri test etmek için popüler bir araç olan Postman'ı kullanarak test ediyoruz:

nodejs_7

Belirtilen URL yolu olan “localhost:3000/posts” ile birlikte istek için http yöntemi olarak “POST”u seçiyoruz. Body kısmına başlığı ve sıralamayı json formatında ekleyip isteği gönderiyoruz. Yukarıda gösterildiği gibi yeni oluşturulan gönderiyle birlikte 200 OK durumunu alıyoruz.

Çözüm

Bu projede pek çok kavram ve fikir araştırıldı: Proje ortamımızı nasıl kuracağımızı ve ayarlayacağımızı ele aldık, LowDB'yi yerel veri kalıcılığı için nasıl yapılandıracağımızı öğrendik, NodeJS/Express arka uç uygulamalarının genel mimarisini araştırdık ve nasıl yapılacağını gördük. basit bir örnekle uygulayın. Son olarak uygulamamızı Postman kullanarak test ettik.

Buradaki amaç, modern arka uç uygulamaları oluşturmaya yönelik her şeyin basitleştirilmiş bir versiyonunu ortaya çıkarmaktı. Daha önce de gördüğümüz gibi NodeJ'ler basit ve karmaşık API'ler oluşturmamızı sağlayan güçlü bir araçtır. Express gibi zengin çerçeve ekosistemi ve hemen hemen her kullanım durumuna yönelik çok sayıda araç ve kitaplık ile birleştiğinde, modern arka uç geliştirme için okunaklı bir çözümdür; öğrenmenizi ve uzmanlaşmanızı önerdiğimiz bir çözümdür.


Career Services background pattern

Kariyer Hizmetleri

Contact Section background image

İletişimde kalalım

Code Labs Academy © 2024 Her hakkı saklıdır.