2 Haziran 2013 Pazar

NodeJS ile Web Projelerinde İdeal Proje Yapısı


NodeJS ile web projesi yaparken en çok araştırılan noktalardan bir tanesi de ideal proje yapısının nasıl olacağıdır. Mesela, internette Express Framework ile yapılmış bir sürü web projesi var ve bununla birlikte onlarca proje yapısı mevcuttur. Peki en ideal olanı hangisidir? Bu yazıda 1 hafta süren araştırmayla ortaya çıkan ideal proje yapısını anlatmaya çalışacağım. 


Proje yapısının genel görünümü aşağıdaki gibidir:

Şimdi buradaki dosya ve klasörlerin ne işe yaradığına bir bakalım.

config: Bu klasörde projenizin ortama özel ya da genel ayar şeklinde  ayar dosyaları mevcuttur.

controllers: Web projelerinin olmazsa olmazlarından olan MVC yapısının controller dosyalarını bu klasörde tutuyoruz. Controller kısaca, model ile view arasında köprü işlevi gören yapıdır. 

lib: Bu klasörde projenin birçok yerinde kullanılan fonksiyonlar mevcuttur. Mesela veritabanına bağlanmak için kullanılan fonksiyon, ya da form verilerinin filtrelenmesi için kullanılan fonksiyonlar bu klasörde bulunur.

models: Bu klasörde projede yer alan modeller bulunur. Mesela, kullanıcı bilgilerinin yapısını içeren User adında bir model ya da yorum bilgilerinin yapısını içeren Comment adında bir model varsa bu klasörde tutulur.

node_modules: Bu klasörde projede kullanılan NodeJS eklentileri bulunur. Mesela, underscore, jade, ...

public: Burada javascript, css, resim gibi statik dosyalar bulunuyor.

view: Belirli bir işlemden sonra işlem sonucunun tarayıcıda nasıl gözükeceğini içeren dosyalar burada bulunur. Mesela, kullanıcı sistemden arama yaptı. Arama sonucunu bir tabloda göstermek isteyebilirsiniz. Bu tablonun HTML kodunu içeren dosya burada bulunur.

README.md: Projeniz hakkında bilgileri bu dosyada tutabilirsiniz. Bu bir projenizin yardım dosyası olabilir.

app.js: Projenin en önemli dosyalarından biridir. Burada, sistem çalışırken gereken ayalar, controller, model, view ayarları gibi bir çok yapılanma ayarı vardır.

package.json: Bu dosyada, projede kullanılan eklentilerin kısa bilgileri mevcuttur. Eklentinin adı, versiyonu, websitesi, ... gibi

Böyle bir yapı kurmamın sebeplerini şöyle sıralayabilirim;

  1. Proje büyüdükçe, model-view-controller bileşenlerinin yönetimi de oldukça karmaşıklaşıyor. Ama yukarıdaki gibi bir yapıyla bunu yönetmek çok daha kolay.
  2. Uygulama tek bir yerden yönetiliyor(app.js) ve projeye ait bütün kodlar değil de sadece gerekli ayarlar app.js de tutuluyor.
  3. Sık sık kullandığımız işlemleri heryerde tekrarlamaktansa, lib klasöründe tutup ordan çağırabiliyoruz.
Bunlara eklenecek çok neden var ama sizin bunu gerçek bir proje üzerinde görüp incelemeniz daha yararlı olacaktır diye düşünüyorum. Yukarıdaki gibi bir yapıyla oluşturulmuş basit bir örneğe şuradan ulaşabilirsiniz.

Bir sonraki derste görüşmek üzere...




Hiç yorum yok:

Yorum Gönder