MERN Stack
MERN, MEAN stack'in (MongoDB, Express, Angular, Node) birkaç varyasyonundan biridir ve geleneksel Angular.js ön uç framework'ü yerine React.js kullanılır. Diğer varyasyonlar arasında MEVN (MongoDB, Express, Vue, Node) bulunur ve aslında herhangi bir ön uç JavaScript framework'ü kullanılabilir.
Teknoloji Yığını
MERN stack'e girmeden önce, teknoloji yığınının ne olduğunu hızlıca anlayalım. Teknoloji yığını, bir web uygulaması, mobil uygulama veya benzeri uygulamaları oluşturmak için seçtiğiniz ve kullandığınız teknoloji setidir. İyi bir teknoloji yığını, sorunsuz bir kullanıcı deneyimi sunmalı, ölçeklenebilir ve maliyet etkin olmalıdır. Tipik bir teknoloji yığını, ön uç, arka uç ve veritabanını içerir ve bu da tam teknoloji yığını olarak bilinir.
Genellikle, temel ön uç veya kullanıcı arayüzü teknolojileri aynıdır; yani HTML, CSS ve JavaScript. Proje gereksinimlerine bağlı olarak, bu UI teknolojileri üzerine inşa edilen React veya Angular gibi kütüphane ve framework'ler kullanabilirsiniz.
Arka uç, uygulama mantığınızın bulunduğu bir sunucudan oluşur. Uygulama mantığını JavaScript, Java, Python gibi bir veya birden fazla programlama diliyle yazabilir veya Django, Spring, Express.js gibi framework'leri kullanabilirsiniz. Programları çalıştırmak için, uygulamanızın Node.js, JRE (Java Runtime Environment) gibi bir çalışma ortamına ihtiyacı vardır.
Veritabanı, tüm uygulama ile ilgili verilerin depolandığı depolama merkezidir. Verilerinizi tablosal bir yapıda (ilişkisel veritabanı sistemlerini kullanarak) veya belge yapısı, grafik yapısı gibi ilişkisiz bir yapıda depolamayı seçebilir ve buna göre veritabanını seçebilirsiniz. Veritabanı örnekleri arasında MongoDB, Oracle, MySQL bulunur.
MERN Stack Nedir?
Bir teknoloji yığını, özelleştirilebilir (geliştiriciler, proje gereksinimlerine göre teknolojileri seçebilir) veya önceden oluşturulmuş (teknolojilerin önceden belirlendiği) olabilir.
MERN, JavaScript teknolojilerine dayanan önceden oluşturulmuş bir teknoloji yığınıdır. MERN, yığını oluşturan dört ana teknoloji olan MongoDB, Express, React ve Node'un baş harflerinden oluşur.
- MongoDB - Belge tabanlı veritabanı
- Express(.js) - Node.js web framework'ü
- React(.js) - İstemci tarafı JavaScript framework'ü
Node(.js) - Önde gelen JavaScript web sunucusu (çalışma zamanı)
Express ve Node, orta katmanı (uygulama) oluşturur. Express.js, sunucu tarafı bir web framework'üdür ve Node.js, popüler ve güçlü bir JavaScript sunucu platformudur. Hangi varyasyonu seçerseniz seçin, ME(RVA)N, JavaScript ve JSON ile çalışmanın ideal yaklaşımıdır.
MERN Stack Nasıl Çalışır?
MERN mimarisi, tamamen JavaScript ve JSON kullanarak üç katmanlı bir mimariyi (ön uç, arka uç, veritabanı) kolayca oluşturmanıza olanak tanır.
React.js Ön Ucu
MERN stack'in en üst katmanı, HTML'de dinamik istemci tarafı uygulamalar oluşturmak için beyan edici bir JavaScript framework'ü olan React.js'dir. React, basit bileşenler aracılığıyla karmaşık arayüzler oluşturmanıza, bunları arka uç sunucunuzdaki verilere bağlamanıza ve HTML olarak görüntülemenize olanak tanır.
React'in güçlü yönü, az kod ve minimum zahmetle durumsal, veri odaklı arayüzleri yönetmesidir ve modern bir web framework'ünden beklediğiniz tüm özelliklere sahiptir: form desteği, hata yönetimi, olaylar, listeler ve daha fazlası.
Express.js ve Node.js Sunucu Katmanı
Bir sonraki seviye, Node.js sunucusu içinde çalışan Express.js sunucu tarafı framework'üdür. Express.js, "hızlı, tarafsız, minimalist bir web framework'ü" olarak tanımlanır ve tam olarak budur. Express.js, URL yönlendirme (gelen bir URL'yi bir sunucu işleviyle eşleştirme) ve HTTP isteklerini ve yanıtlarını yönetme konusunda güçlü modellere sahiptir.
React.js ön ucundan XML HTTP İstekleri (XHR'ler), GET'ler veya POST'lar yaparak, uygulamanızı güçlendiren Express.js işlevlerine bağlanabilirsiniz. Bu işlevler, MongoDB'nin Node.js sürücüleri aracılığıyla MongoDB veritabanınızdaki verilere erişir ve günceller.
MongoDB Veritabanı Katmanı
Uygulamanız herhangi bir veri (kullanıcı profilleri, içerik, yorumlar, yüklemeler, etkinlikler vb.) depoluyorsa, React, Express ve Node.js kadar kolay çalışılabilecek bir veritabanına ihtiyacınız olacak.
İşte MongoDB burada devreye giriyor: React.js ön ucunuzda oluşturulan JSON belgeleri, Express.js sunucusuna gönderilebilir, burada işlenebilir ve (geçerli oldukları varsayılarak) daha sonra alınmak üzere doğrudan MongoDB'ye kaydedilebilir.
MERN Stack Kullanarak Basit Bir İstek/Yanıt Örneği
Tipik bir HTTP isteği (istemciden), veritabanı işlemlerine karşılık gelen dört işlemden birini gerçekleştirir - POST, GET, PUT, DELETE; bunlar sırasıyla Oluşturma, Okuma, Güncelleme ve Silme (CRUD) işlemlerine karşılık gelir. Bu isteklere hizmet vermek için, Express.js gerekli parametreleri depolayan istek ve yanıt nesneleri sağlar. HTTP isteği, son kullanıcı tarafından sağlanan verileri depolar ve HTTP yanıtı, veritabanından alınan verileri depolar.
MongoDB Node.js sürücüsü ile, MongoDB dağıtımlarınızı birkaç basit adımda uygulamanıza kolayca bağlayabilirsiniz.
MERN stack'in en önemli özelliklerinden biri, tüm teknolojilerin verileri aynı formatta depolamasıdır.
Ön uç katmanı olan React, verileri bir JavaScript nesnesi olarak depolar, arka uç (uygulama) katmanı JavaScript kodu kullanır ve veri katmanı MongoDB, verileri BSON (İkili JavaScript Nesne Gösterimi) formatında depolar. Express, verileri JS ile JSON arasında .json() yöntemiyle dönüştürür.
Node.js, geliştiricilerin sunucu tarafı (arka uç) uygulama mantığını JavaScript ile yazmasına olanak tanır. Node.js, temel HTTP modülleri sağlasa da, aynı kodu Express'te yazmak daha temiz bir kod deneyimi sunar. Express ayrıca, doğru uç noktadan gerekli verileri almak için güçlü yönlendirme özellikleri sağlar bu da geliştiricilerin yönlendirme için açıkça kod yazmaları gerekmeyen bir başka yerdir.
Kodun baştan sona aynı dilde (JavaScript) yazılması nedeniyle, katmandan katmana geçiş sırasında meydana gelebilecek dönüşümler için harcanacak çok zaman tasarruf edilir.
Diyelim ki bir müşteri (istemci) çevrimiçi bir portal üzerinden cep telefonu numarasını güncellemek istiyor. React.js kullanılarak oluşturulan ön uç, kullanıcının cep telefonu numarasını girebileceği bir forma sahip olacaktır. React, müşteri tarafından girilen cep telefonu numarasını istek parametresine ayarlamak için "useState" kancasını kullanır.
Express.js kodu, HTTP PUT isteğinden cep telefonu numarasını alır, uygulamanın veri modeli şemasına eşler ve güncelleme işlemini gerçekleştirmek için ilgili yöntemi (örneğin, findByIdAndUpdate()) uygular. Yanıt, başarı/başarısızlık mesajıyla birlikte HTTP yanıt nesnesi üzerinden gönderilir.
MERN Stack vs Full Stack Geliştirme
MERN stack, teknoloji katmanlarının önceden tanımlandığı bir tür tam yığınıdır. Bir tam yığın geliştiricisinin öğrenme eğrisi daha yüksektir, çünkü birden fazla teknoloji konusunda yetkin olmaları gerekirken, bir MERN stack geliştiricisi yalnızca ilgili teknolojileri bilmek zorundadır. Aşağıdaki belirgin farklar, proje gereksinimlerinize göre özelleştirilmiş bir tam yığın mı yoksa MERN stack mi seçeceğiniz konusunda size yardımcı olacaktır:
MERN Stack
* İyi bir şekilde birlikte çalışan teknolojilerden oluşan önceden tanımlanmış bir yığın
* Odak noktası JavaScript ve JavaScript tabanlı teknolojiler ve framework'ler
* Akıcı ve birleşik bir geliştirme yaklaşımı
* Tek dil bileşenlerinin yeniden kullanılabilirliği nedeniyle kod yeniden kullanımı teşvik edilir
Full Stack
* Tasarımcılar, projenin gereksinimlerine göre farklı teknolojileri seçer
* Projeye bağlı olarak öğrenilmesi gereken daha geniş bir yetenek seti gerektirir
* Geliştirme için araç ve framework'ler seçme esnekliği daha fazladır
* Geliştiricilerin uygulamanın farklı yönlerini yönetebilmeleri nedeniyle esneklik ve çok yönlülük teşvik edilir
MERN Stack Ne Zaman Seçilmeli?
Proje zaman çizelgeleriniz sıkıysa ve gereksinimler iyi tanımlanmışsa, MERN stack, zaman ve maliyet tasarrufu sağlayacak ve geliştiricilerin hızlı bir şekilde projeye dahil olmasına yardımcı olacak ideal bir seçenektir, çünkü yalnızca tek bir teknolojiye odaklanmaları gerekir. Ayrıca, MERN stack'in yapılandırılmış, iyi kurulmuş bir yaklaşımı ve kapsamlı belgeleri sayesinde, projenin uzun vadeli bakımı daha kolay olabilir.
MERN stack, sahip olduğunuz herhangi bir kullanım durumu veya proje gereksinimi için iyi çalışır, çünkü (MERN) bileşenlerinin tümü güçlü yetenekler ve özellikler sunar. MERN stack'i seçemeyeceğiniz tek zaman, JavaScript dışındaki teknolojileri kullanmak istediğiniz zamandır.
Neden MERN Stack'i Seçmelisiniz?
MERN stack'in kökündeki belge veritabanı olan MongoDB ile başlayalım. MongoDB, JSON verilerini yerel olarak depolamak için tasarlanmıştır. (Teknik olarak, BSON olarak adlandırılan JSON'un ikili bir sürümünü kullanır.) Komut satırı arayüzünden sorgu diline kadar her şey JSON ve JavaScript üzerine inşa edilmiştir.
MongoDB, Node.js ile son derece iyi çalışır ve uygulamanızın her katmanında JSON verilerini depolamayı, manipüle etmeyi ve temsil etmeyi inanılmaz derecede kolaylaştırır. Bulut tabanlı uygulamalar için MongoDB Atlas, tercih ettiğiniz bulut sağlayıcısında otomatik ölçeklenen bir MongoDB kümesini sadece birkaç düğme tıklamasıyla sunarak işleri daha da kolaylaştırır.
Express.js (Node.js üzerinde çalışır) ve React.js, JavaScript/JSON uygulamasını MERN tam yığını yapar, yani tam. Express.js, HTTP isteklerini ve yanıtlarını saran bir sunucu tarafı uygulama framework'üdür ve URL'leri sunucu tarafı işlevlere eşlemeyi kolaylaştırır. React.js, HTML'de etkileşimli kullanıcı arayüzleri oluşturmak ve uzak bir sunucuyla iletişim kurmak için bir ön uç JavaScript framework'üdür.
Bu kombinasyon, JSON verilerinin önden arkaya doğal olarak akmasını sağlar ve üzerine inşa etmeyi kolaylaştırır ve nispeten basit bir şekilde hata ayıklamayı mümkün kılar. Ayrıca, tüm sistemi anlamak için yalnızca bir programlama dilini ve JSON belge yapısını bilmeniz yeterlidir!
MERN, özellikle React.js deneyimi olan web geliştiricileri için, bugün hızlı bir şekilde ilerlemek isteyenlerin tercih ettiği yığındır.
MERN Kullanım Durumları
Herhangi bir web yığını gibi, MERN ile istediğiniz her şeyi inşa edebilirsiniz. Ancak JSON ağırlıklı, bulut tabanlı ve dinamik web arayüzlerine sahip durumlar için idealdir. Örnekler arasında iş akışı yönetimi, haber toplama, yapılacaklar uygulamaları ve takvimler, etkileşimli forumlar veya sosyal ürünler ve hayal edebileceğiniz diğer her şey bulunur!
CyberRulz06 tarafından çevirilmiştir. Asıl makalede bulunan bâzı uzun detayları traşlayıp asıl çözümleri öne taşımaya çalıştım. Anlam bütünlüğü korunması için bazı kelimeler Türkçe de farklı çevirilmiştir ve orijinal görseller kullanılmıştır. İyi okumalar ve iyi forumlar
MongoDB, Inc. (2024). MERN stack explained. MongoDB. https://www.mongodb.com/resources/languages/mern-stack
MERN mimarisi, tamamen JavaScript ve JSON kullanarak üç katmanlı bir mimariyi (ön uç, arka uç, veritabanı) kolayca oluşturmanıza olanak tanır.
React.js Ön Ucu
MERN stack'in en üst katmanı, HTML'de dinamik istemci tarafı uygulamalar oluşturmak için beyan edici bir JavaScript framework'ü olan React.js'dir. React, basit bileşenler aracılığıyla karmaşık arayüzler oluşturmanıza, bunları arka uç sunucunuzdaki verilere bağlamanıza ve HTML olarak görüntülemenize olanak tanır.
React'in güçlü yönü, az kod ve minimum zahmetle durumsal, veri odaklı arayüzleri yönetmesidir ve modern bir web framework'ünden beklediğiniz tüm özelliklere sahiptir: form desteği, hata yönetimi, olaylar, listeler ve daha fazlası.
Express.js ve Node.js Sunucu Katmanı
Bir sonraki seviye, Node.js sunucusu içinde çalışan Express.js sunucu tarafı framework'üdür. Express.js, "hızlı, tarafsız, minimalist bir web framework'ü" olarak tanımlanır ve tam olarak budur. Express.js, URL yönlendirme (gelen bir URL'yi bir sunucu işleviyle eşleştirme) ve HTTP isteklerini ve yanıtlarını yönetme konusunda güçlü modellere sahiptir.
React.js ön ucundan XML HTTP İstekleri (XHR'ler), GET'ler veya POST'lar yaparak, uygulamanızı güçlendiren Express.js işlevlerine bağlanabilirsiniz. Bu işlevler, MongoDB'nin Node.js sürücüleri aracılığıyla MongoDB veritabanınızdaki verilere erişir ve günceller.
MongoDB Veritabanı Katmanı
Uygulamanız herhangi bir veri (kullanıcı profilleri, içerik, yorumlar, yüklemeler, etkinlikler vb.) depoluyorsa, React, Express ve Node.js kadar kolay çalışılabilecek bir veritabanına ihtiyacınız olacak.
İşte MongoDB burada devreye giriyor: React.js ön ucunuzda oluşturulan JSON belgeleri, Express.js sunucusuna gönderilebilir, burada işlenebilir ve (geçerli oldukları varsayılarak) daha sonra alınmak üzere doğrudan MongoDB'ye kaydedilebilir.
MERN Stack Kullanarak Basit Bir İstek/Yanıt Örneği
Tipik bir HTTP isteği (istemciden), veritabanı işlemlerine karşılık gelen dört işlemden birini gerçekleştirir - POST, GET, PUT, DELETE; bunlar sırasıyla Oluşturma, Okuma, Güncelleme ve Silme (CRUD) işlemlerine karşılık gelir. Bu isteklere hizmet vermek için, Express.js gerekli parametreleri depolayan istek ve yanıt nesneleri sağlar. HTTP isteği, son kullanıcı tarafından sağlanan verileri depolar ve HTTP yanıtı, veritabanından alınan verileri depolar.
MongoDB Node.js sürücüsü ile, MongoDB dağıtımlarınızı birkaç basit adımda uygulamanıza kolayca bağlayabilirsiniz.
MERN stack'in en önemli özelliklerinden biri, tüm teknolojilerin verileri aynı formatta depolamasıdır.
Ön uç katmanı olan React, verileri bir JavaScript nesnesi olarak depolar, arka uç (uygulama) katmanı JavaScript kodu kullanır ve veri katmanı MongoDB, verileri BSON (İkili JavaScript Nesne Gösterimi) formatında depolar. Express, verileri JS ile JSON arasında .json() yöntemiyle dönüştürür.
Node.js, geliştiricilerin sunucu tarafı (arka uç) uygulama mantığını JavaScript ile yazmasına olanak tanır. Node.js, temel HTTP modülleri sağlasa da, aynı kodu Express'te yazmak daha temiz bir kod deneyimi sunar. Express ayrıca, doğru uç noktadan gerekli verileri almak için güçlü yönlendirme özellikleri sağlar bu da geliştiricilerin yönlendirme için açıkça kod yazmaları gerekmeyen bir başka yerdir.
Kodun baştan sona aynı dilde (JavaScript) yazılması nedeniyle, katmandan katmana geçiş sırasında meydana gelebilecek dönüşümler için harcanacak çok zaman tasarruf edilir.
Diyelim ki bir müşteri (istemci) çevrimiçi bir portal üzerinden cep telefonu numarasını güncellemek istiyor. React.js kullanılarak oluşturulan ön uç, kullanıcının cep telefonu numarasını girebileceği bir forma sahip olacaktır. React, müşteri tarafından girilen cep telefonu numarasını istek parametresine ayarlamak için "useState" kancasını kullanır.
Express.js kodu, HTTP PUT isteğinden cep telefonu numarasını alır, uygulamanın veri modeli şemasına eşler ve güncelleme işlemini gerçekleştirmek için ilgili yöntemi (örneğin, findByIdAndUpdate()) uygular. Yanıt, başarı/başarısızlık mesajıyla birlikte HTTP yanıt nesnesi üzerinden gönderilir.
MERN Stack vs Full Stack Geliştirme
MERN stack, teknoloji katmanlarının önceden tanımlandığı bir tür tam yığınıdır. Bir tam yığın geliştiricisinin öğrenme eğrisi daha yüksektir, çünkü birden fazla teknoloji konusunda yetkin olmaları gerekirken, bir MERN stack geliştiricisi yalnızca ilgili teknolojileri bilmek zorundadır. Aşağıdaki belirgin farklar, proje gereksinimlerinize göre özelleştirilmiş bir tam yığın mı yoksa MERN stack mi seçeceğiniz konusunda size yardımcı olacaktır:
MERN Stack
* İyi bir şekilde birlikte çalışan teknolojilerden oluşan önceden tanımlanmış bir yığın
* Odak noktası JavaScript ve JavaScript tabanlı teknolojiler ve framework'ler
* Akıcı ve birleşik bir geliştirme yaklaşımı
* Tek dil bileşenlerinin yeniden kullanılabilirliği nedeniyle kod yeniden kullanımı teşvik edilir
Full Stack
* Tasarımcılar, projenin gereksinimlerine göre farklı teknolojileri seçer
* Projeye bağlı olarak öğrenilmesi gereken daha geniş bir yetenek seti gerektirir
* Geliştirme için araç ve framework'ler seçme esnekliği daha fazladır
* Geliştiricilerin uygulamanın farklı yönlerini yönetebilmeleri nedeniyle esneklik ve çok yönlülük teşvik edilir
MERN Stack Ne Zaman Seçilmeli?
Proje zaman çizelgeleriniz sıkıysa ve gereksinimler iyi tanımlanmışsa, MERN stack, zaman ve maliyet tasarrufu sağlayacak ve geliştiricilerin hızlı bir şekilde projeye dahil olmasına yardımcı olacak ideal bir seçenektir, çünkü yalnızca tek bir teknolojiye odaklanmaları gerekir. Ayrıca, MERN stack'in yapılandırılmış, iyi kurulmuş bir yaklaşımı ve kapsamlı belgeleri sayesinde, projenin uzun vadeli bakımı daha kolay olabilir.
MERN stack, sahip olduğunuz herhangi bir kullanım durumu veya proje gereksinimi için iyi çalışır, çünkü (MERN) bileşenlerinin tümü güçlü yetenekler ve özellikler sunar. MERN stack'i seçemeyeceğiniz tek zaman, JavaScript dışındaki teknolojileri kullanmak istediğiniz zamandır.
Neden MERN Stack'i Seçmelisiniz?
MERN stack'in kökündeki belge veritabanı olan MongoDB ile başlayalım. MongoDB, JSON verilerini yerel olarak depolamak için tasarlanmıştır. (Teknik olarak, BSON olarak adlandırılan JSON'un ikili bir sürümünü kullanır.) Komut satırı arayüzünden sorgu diline kadar her şey JSON ve JavaScript üzerine inşa edilmiştir.
MongoDB, Node.js ile son derece iyi çalışır ve uygulamanızın her katmanında JSON verilerini depolamayı, manipüle etmeyi ve temsil etmeyi inanılmaz derecede kolaylaştırır. Bulut tabanlı uygulamalar için MongoDB Atlas, tercih ettiğiniz bulut sağlayıcısında otomatik ölçeklenen bir MongoDB kümesini sadece birkaç düğme tıklamasıyla sunarak işleri daha da kolaylaştırır.
Express.js (Node.js üzerinde çalışır) ve React.js, JavaScript/JSON uygulamasını MERN tam yığını yapar, yani tam. Express.js, HTTP isteklerini ve yanıtlarını saran bir sunucu tarafı uygulama framework'üdür ve URL'leri sunucu tarafı işlevlere eşlemeyi kolaylaştırır. React.js, HTML'de etkileşimli kullanıcı arayüzleri oluşturmak ve uzak bir sunucuyla iletişim kurmak için bir ön uç JavaScript framework'üdür.
Bu kombinasyon, JSON verilerinin önden arkaya doğal olarak akmasını sağlar ve üzerine inşa etmeyi kolaylaştırır ve nispeten basit bir şekilde hata ayıklamayı mümkün kılar. Ayrıca, tüm sistemi anlamak için yalnızca bir programlama dilini ve JSON belge yapısını bilmeniz yeterlidir!
MERN, özellikle React.js deneyimi olan web geliştiricileri için, bugün hızlı bir şekilde ilerlemek isteyenlerin tercih ettiği yığındır.
MERN Kullanım Durumları
Herhangi bir web yığını gibi, MERN ile istediğiniz her şeyi inşa edebilirsiniz. Ancak JSON ağırlıklı, bulut tabanlı ve dinamik web arayüzlerine sahip durumlar için idealdir. Örnekler arasında iş akışı yönetimi, haber toplama, yapılacaklar uygulamaları ve takvimler, etkileşimli forumlar veya sosyal ürünler ve hayal edebileceğiniz diğer her şey bulunur!
CyberRulz06 tarafından çevirilmiştir. Asıl makalede bulunan bâzı uzun detayları traşlayıp asıl çözümleri öne taşımaya çalıştım. Anlam bütünlüğü korunması için bazı kelimeler Türkçe de farklı çevirilmiştir ve orijinal görseller kullanılmıştır. İyi okumalar ve iyi forumlar
MongoDB, Inc. (2024). MERN stack explained. MongoDB. https://www.mongodb.com/resources/languages/mern-stack


