MEAN Stack

Ömer Yiğit Aker

MEAN Stack Nedir?

MEAN Stack; MongoDb, ExpressJs, AngularJs ve NodeJs kullanılan full-stack proje geliştirmek için gerekli toollardır.

Neden MEAN Stack?

Herşey Javascript

Kullanılanlar

GitHub

Bir versiyon kontrol sisteminden çok daha fazlası.

Ne işe yarar:

- Kod Güvenliği

- Düzenli Geliştirme

- Ortak Yönetim

- Community Desteği

 

Repo'dan Görüntü

Mongo DB

Verileri JSON(JavaScript Object Notation) olarak tutan NoSQL(not only SQL) bir veritabanı.

- Klasik table yapısından kurtulun

- Collections

db.users.insert({
    name: 'Omer',
    age: 16,
    isDead: false
})

// Json Data Formatı
// Basit bir insert
db.users.find()
// Bütün kullanıcıları getir

NodeJs

Back-end taraflı kod geliştirilmesini sağlayan bir Javscript şeysi.

- Kendine özgü pm

- Bol kaynak

var http = require('http');
var server = http.createServer(function(request,response){
    response.writeHead(200,{'Content-type':'text/html'});
    response.end('<h1>Trabzon Hackerspace');
});

server.listen(3000);

// En basit http server

AngularJs

AngularJS, google'nin desteklediği, javascript MVC kütüphanesidir. MVC (Modal View Controller) verinin, görünümün ve kontrollerin ayrı tutulmasına dayanır.

- HTML’i geliştirmenin en kolay yolu: directive’ler.

- Google güveni ve hızlı büyüyen topluluk.

- Çift yönlü değişiklik dinleme.

- Çok eğlenceli, çok karizmatik.

'Murat Çorlu'

ExpressJs

Express, Nodejs ile hızlı ve düzenli proje gerçekleştirebilmemizi sağlayan web framework’üdür. Kurulumu da oldukça basit.

Yüklemek için:

npm install express --save

Nginx

Nginx, Igor Sysoev tarafından yazılan bir http, reserve ve mail proxy sunucudur. Güncel bir istatistiğe göre Nginx sunucusu bugün, dünya genelinde yayında olan web sitelerinin %15'inde kullanılmakta ve pazar konumunu büyütmektedir.

Test yazdım mı ?

Evet :)

Unit Tests

var supertest = require('supertest');
var should = require('should');

var server = supertest.agent('http://localhost:9091');

describe('Main Page Unit Test',function () {
  it('Ana sayfa düzgün dönmeli',function (done) {
    server
    .get('/')
    .expect('Content-type',/text/)
    .expect(200)
    .end(function (err,res) {
      res.status.should.equal(200);
      done();
    });
  });
});

describe('Articles Page Unit Test',function () {
  it('Makaleler düzgün dönmeli',function (done) {
    server
    .get('/articles')
    .expect('Content-type',/text/)
    .expect(200)
    .end(function (err,res) {
      res.status.should.equal(200);
      done();
    });
  });
});

describe('Login Page Unit Test',function () {
  it('Giriş sayfasına dönmeli',function (done) {
    server
    .get('/login')
    .expect('Content-type',/text/)
    .expect(200)
    .end(function (err,res) {
      res.status.should.equal(200);
      done();
    });
  });
});

describe('Signup Page Unit Test',function () {
  it('Kayıt sayfasına dönmeli',function (done) {
    server
    .get('/signup')
    .expect('Content-type',/text/)
    .expect(200)
    .end(function (err,res) {
      res.status.should.equal(200);
      done();
    });
  });
});

describe('API Unit Test(Status 200)',function () {
  it('Düzgün cevap gelmeli',function (done) {
    server
    .get('/api/all')
    .expect('Content-type',/text/)
    .expect(200)
    .end(function (err,res) {
      res.status.should.equal(200);
      done();
    });
  });
});

describe('API Unit Test(Status 404)',function () {
  it('Bulunamadı hatası gelmeli',function (done) {
    server
    .get('/api/login')
    .expect('Content-type',/text/)
    .expect(404)
    .end(function (err,res) {
      res.status.should.equal(404);
      done();
    });
  });
});

describe('API Unit Test(Status 500)',function () {
  it('Düzgün cevap gelmeli',function (done) {
    server
    .post('/api/login')
    .expect('Content-type',/text/)
    .expect(500)
    .end(function (err,res) {
      res.status.should.equal(500);
      done();
    });
  });
});

Jenkins CI

Jenkins bir “sürekli entegrasyon sunucusu”dur.

Yazdığınız kodu test eder (yazdığınız testleri çalıştırır), inşa eder sunucularınıza otomatik olarak yükler.

- Çok rahat

DEMO

Detaylar için...

mean

By Ömer Yiğit Aker