Saturday, October 8, 2016

NodeJS-3: Socket.io ve MongoDB ile MVC Chat Uygulaması

Daha önceki yayında package.json dosyasını oluşturmuş express kütüphanesini eklemiştik. Bu yayında artık proje kodlarını göreceğiz. Önceki yayınlar için http://emresolugan.blogspot.com.tr/search/label/NodeJS adresini ziyaret edebilirsiniz. İlk önce işimize yarayacak npmleri açıklayarak kuralım.

Socket.io her client-server uygulamada olması gereken bir npm. Mongodb ve Mongoose veritabanını eklerken kullanıyoruz. Body-parse ise viewlardan veri çekerken req.body özelliğini kullanmamıza olanak sağlıyor. Express'i açıklamıştım kalanlar fazla önemli değil.

Şimdi proje klasörümüzün içine app.js isiminde bir dosya, içinde siteye ait her türlü resim, css, javascript dosyalarını tutacağımız public isminde bir klasör, controller klasörü ve veritabanı bağlantımızı gerçekleştireceğimiz models klasörünü oluşturuyoruz. Models kalsöründen başlayalım anlatmaya. İlk önce bir tane Users isminde javascript dosyası oluşturalım ve içine resimdeki kodları ekleyelim.


Kodları açıklamak gerekirse, 1. satırda mongoose kütüphenesini require komutuyla çağırıyoruz bir nevi tanıtıyoruz. Sonrasında bir şema oluşturuyoruz ve içinde veritabanındaki nesnelere ithafen tutacağımız girdileri yazıyoruz. Sonrasında User isminde bu şemaya örnek bir obje oluşturyoruz ve ensonda ise User'i exports ediyoruz. Şimdi gelelim controllerımıza:

2 tane controller dosyamız var home_controller ve account_controller. Home _controller dosyasında sadece anasayfayı alıyoruz oluşturduğumuz getIndex metodu ile bu metodu daha sonra app.js dosyasında tanımlıcaz.


Buda 2. controller dosyamız account_controller burada da register ve login sayfalarını get ve post yapıyoruz. Post ederken de tipik mongodb sorgularını ve veritabanı kodlarını kullanıyoruz. Sayfadan ise verileri req.body ile alıyoruz. En sonunda querystring metodu ile kullanıcının kullanıcı adını alarak chat sayfasına yönlendiriyoruz. Şimdi gelelim nodeJS'in bel kemiği olan app.js dosyasına.

Yukarıda görülen app.js dosyası projeyi çalıştırmamızı sağlar. Komut istemcisin de projemizin olduğu kısıma gelip node app.js komutunu yazarsak projemiz çalışıp browserda görünmeye başlayacaktır. Koda gelirsek ilk 11 satırda yüklediğimiz npmleri çağırdık. Sonrasında controllerlarımızı belirtip Mongodb bağlantımızı gerçekleştirdik gerçekleşmez ise hata mesajı ayarladık. 44. satıra geldiğimizde sayfaların post ve get durumlarında kullanacağı route yi ayarladık controllerlarda yazdığımız fonksiyonları gösterterek. En son kısımda ise socket bağlantılarını yapıyoruz. Bu  kısımdaki kodları socket.io sitesinden alabilirsiniz. Proje buraya kadardı. Proje ile ilgili bütün kodları https://github.com/emresolugan/NodeJS-Chat-Application-with-MongoDB github adresimden bulabilirsiniz. Ayrıca yanda bulunan sosyal ağ seçeneklerinden takip edebilirsiniz. Bir sonraki yayınımda görüşmek üzere takipte kalın.




Saturday, September 24, 2016

NodeJS-2: Proje ve Npm Kurulumu

  Şimdi daha önceden bahsettiğimiz chat projesini kurmaya başlayalım. Command prompt penceresini yönetici olarak çalıştıralım ve resimde görünen kodları yazalım.

  Mkdir ile projemizi kuracağımız klasörü oluşturduk sonrasında ise npm init ile  NodeJS'nin can damarı olan NodeJS Packae Manager (npm) başlatıyoruz. NPM'yi biraz açıklamak gerekirse NPM node.js için hazırlanmış olan scriptleri bir nevi kütüphaneleri otomatik olarak projenize yüklemenizi,  sağlayan, command prompt'tan çalışan, bir program. Command promp' ta npm yazarak kurulup kurulmadığını güncelliğini kontrol edebiliriz. Diyelim ki projemize önceden hazır yazılmış bir paket eklemek istedik buda chat uygulaması yazarken ihtiyacımız olan socket.io olsun. "npm install socket.io" söz dizimi bize en güncel paketi yüklemeye yardımcı olur, silmek için ise "npm uninstall socket.io" kodu, eğer paketi güncellemek istiyorsak "npm update socket.io" söz dizimini kullanmalıyız. Npm init dedikten sonra enter'a basalım ve resmi inceleyelim.


Çıkan yazıda ilk cümle npm init sizin için bir package.json dosyası oluşturacaktır diyor. Package.json dosyası her projede bulunan sizin uygulamanızın çeşitli meta bilgileri ve npm ile yüklediğiniz paketlerin dependency (bağımlılık) bilgilerini içeren bir dosyadır. ASP.NET'te web.config dosyasına benzer. Yazılardan sonra sizden name, version gibi bilgiler istenir, isterseniz bu bilgileri doldurabilirsiniz ama genelde boş bırakılır. Burada tek önemli olan:

bu satırdır. Genelde app.js olarak adlandırılır ama istediğinizi seçebilirsiniz. En son bilgiler kontrol edildikten sonra enter tuşuna basıp çıkılır. Şimdi proje klasörünü açalım: 


   Görüldüğü üzere sadece package.json dosyası oluştu. Bundan sonraki bütün dosyaları elle oluşturacağız. Şimdi tekrar command prompt penceresine dönelim proje klasörünü seçelim ve npm install express --save    söz dizimini yazalım ve express paketini yükleyelim. Express nodejs için bir web framework' üdür ve nodejs ile çalışan bütün web projelerinde bulunması gerekir rahatlık ve profesyonellik için. Bu arada --save ile kalıcı olarak ve package.json dosyasına otomatik olarak dependency ekledik.