Your SlideShare is downloading. ×
  • Like
JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac

  • 1,150 views
Published

Description and analysis of MEAN stack and underlying technologies (Mongo DB, Express, Angular and Node JS). Review of development tools & techniques. Performance, best practices. Common usage …

Description and analysis of MEAN stack and underlying technologies (Mongo DB, Express, Angular and Node JS). Review of development tools & techniques. Performance, best practices. Common usage scenarios, pros and cons. How to use it, when to use it, when not to use it.

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,150
On SlideShare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
4
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. MEAN StackMEAN Stack Kako i kada? Nenad Pećanac Serengeti
  • 2. Sadržaj 1) O MEAN-u 2) Mongo DB 3) Node.JS & Express 4) Angular4) Angular 5) Kada koristiti MEAN? 6) Kada ne koristiti MEAN? 7) Mean.IO & Mean JS 8) Reference
  • 3. 1) O MEAN-u
  • 4. MEAN MEAN je Full stack JS framework - potpuni razvojni okvir za izradu modernih internetskih stranica i aplikacija. Sastoji se od 4 tehnologije: Mongo DB, Express, Angular i Node.JS.Mongo DB, Express, Angular i Node.JS. Naziv je 2013. godine smislio Valeri Karpov, član razvojnog tima Mongo DB-a. MEAN omogućava ubrzan razvoj JS aplikacija.
  • 5. MEAN MEAN je pogodan za brzu izradu prototipova aplikacija. JS se koristi na serverskoj i klijentskoj strani, podaci u bazi zapisani su u JSON formatu. Unaprijed konfigurirani projekti dostupni su za preuzimanje na MEAN.JS i MEAN.IO stranicama. Yeoman – alat za generiranje predložaka za razvoj internetskih aplikacija.
  • 6. 2) Mongo DB
  • 7. Mongo DB Mongo DB – najraširenija NoSQL baza podataka. Podaci se zapisuju u binarnom JSON formatu – BSON. BSON format je vrlo efikasan za spremanje i pretraživanje.
  • 8. Mongo DB Svaki podatak u bazi zapisan je kao Dokument: Dokumenti se spremaju u Kolekcije. Kolekcije imaju funkciju kao tablice u relacijskim bazama. Kolekcije omogućavaju fleksibilniji podatkovni model.
  • 9. Mongo DB Kolekcije nemaju kolone kao tablice, ne definiraju hijerarhijske odnose me u podacima. Podatkovni model moguće je realizirati ugra ivanjem ili referenciranjem podataka. Podatkovni modeli koji koriste ugra ivanjePodatkovni modeli koji koriste ugra ivanje su denormalizirani, omogućavaju brže čitanje. Podatkovni modeli koji koriste referenciranje su normalizirani, koriste se za definiranje hijerarhije.
  • 10. Mongo DB Ugra ivanje podataka:
  • 11. Mongo DB Referenciranje podataka:
  • 12. Mongo DB Nad kolekcijama se grade indeksi i vrše upiti:
  • 13. Mongo DB Operacije za agregiranje/sortiranje koriste Map/Reduce algoritme, čime se postižu visoke performanse. Mongo DB ima ugra enu podršku za klastering, replikaciju, backup, monitoring i HA. Mongo DB usluge dostupne su u cloudu: Amazon, IBM, Red Heat, VMWare, MongoLab ... NoSQL baza nije primjerena kod programskih rješenja koja zahtjevaju strogu hijerarhiju i kontrolu nad podacima. U MEAN-u ju je po potrebi moguće zamijeniti sa MySQL-om.
  • 14. 3) Node.JS & Express
  • 15. Node JS Node.JS je platforma za izradu brzih i skalabilnih mrežnih aplikacija, izgra ena na Chrome-ovom JS V8 runtime-u. Node.JS je platforma za server-side JS. Sadrži asinhrone biblioteke za upravljanje datotekama, soketima, te za HTTP komunikaciju.soketima, te za HTTP komunikaciju. Node.JS koristi efikasan, neblokirajući I/O model obrade podataka. Prikladan je za brzu razmjenu velike količine podataka i izradu aplikacija za rad u realnom vremenu, distribuiranih na različitim ure ajima.
  • 16. Node JS Node.JS izgra en je kao platforma, koja se sastoji od raznih modula, koji implementiraju odre ene funkcionalnosti. Npr. za obradu HTTP zahtjeva, potrebno je koristiti HTTP modul: var http = require('http'); NPM je Node-ov upravljač modulima, koristi se izNPM je Node-ov upravljač modulima, koristi se iz komandne linije. Instaliranje novog modula: npm install module_name
  • 17. Node JS Primjer >Node.JS HTTP server; file: http.js: var http = require("http"); http.createServer(function (request, response) { request.on("end", function () {request.on("end", function () { response.writeHead( 200, { 'Content-Type': 'text/plain' }); response.end('Hello HTTP!'); }); }).listen(8080); Exec: node http.js
  • 18. Express Express je minimalističan, brz i efikasan razvojni okvir za izradu internet aplikacija na Node.JS-u. Express podržava sve potrebne funkcionalnosti za izradu single-page, multi-page ili hibridnih web aplikacija. Tako er implementira dodatne funkcionalnosti za:Tako er implementira dodatne funkcionalnosti za: - korištenje ostalih protokola pored HTTP-a, - za autentifikaciju korisnika, - upravljanje greškama, - parsiranje POST zahtjeva ...
  • 19. Express Primjer >Node.JS + Express HTTP server: var express = require('express'); var app = express(); app.get('/helloworld', function(req, res){app.get('/helloworld', function(req, res){ res.send('Hello World'); }); var server = app.listen(3000, function() { console.log('Listening on port %d', server.address().port); });
  • 20. Node JS - performanse Trajanje operacija na serveru:
  • 21. Node JS - performanse Mrežne operacije traju višestruko duže od svih ostalih. Razlog tome je čekanje na izvršavanje I/O operacija na serveru. Node.JS obra uje I/O operacije asinkrono, korištenjem internog thread-poola ili asinkronih I/O API-ja OS-a.
  • 22. Node JS - performanse Node.JS ima najbolje performanse kad obrada zahtjeva ne uključuje CPU intenzivne operacije.
  • 23. 4) Angular
  • 24. Angular JS MVC framework za izradu dinamičkih HTML predložaka. Omogućava efikasan razvoj klijentskih aplikacija. Angular koristi Ajax i JSON za komunikaciju sa Node-om.
  • 25. Angular http://tutorialzine.com/2013/08/learn-angularjs-5-examples/
  • 26. Angular <form ng-app ng-controller="OrderFormController"> <h1>Services</h1> <ul><li ng-repeat="service in services" ng-click="toggleActive(service)" ng-class="{active:service.active}"> {{service.name}} <span>{{service.price | currency}}</span> </li></ul> <div class="total">Total: <span>{{total() | currency}}</span> </div> </form>
  • 27. 5) Kada koristiti MEAN?
  • 28. Kada koristiti MEAN? Prilikom izrade prototipova aplikacija. Ukoliko se koristi u produkciji, potrebno je ukloniti CPU-intenzivne operacije iz Event-Loopa i veliku pažnju posvetiti obradi grešaka, koja ukoliko je neispravno implementirana možekoja ukoliko je neispravno implementirana može srušiti server. Za izradu višekorisničkih, real-time aplikacija kao npr. CHAT. Za izradu CRUD aplikacija, npr. BLOG. Za izradu Data-streaming aplikacija. Za izradu Proxy-a.
  • 29. 6) Kada ne koristiti MEAN?
  • 30. Kada ne koristiti MEAN? Za izradu enterprise aplikacija. Kada su potrebne transakcijske servisne operacije. Kada je potrebno obavljati CPU-intenzive operacije na serveru. Kad se zahtjeva stroga relacijska hijerarhija nad modelom podataka (može se, ali vjerojatno nije dobra ideja).podataka (može se, ali vjerojatno nije dobra ideja). Node.JS je “mlada” tehnologija, trenutna verzija je 0.10.26. Mnoga rješenja koje su u drugim tehnologijama već implementirana tek treba implementirati na Node-u.
  • 31. 7) MEAN.IO & MEAN.JS
  • 32. MEAN.IO
  • 33. MEAN.JS
  • 34. 8) Reference
  • 35. Reference MEAN.IO: http://www.mean.io/ MEAN.JS: http://meanjs.org/ MONGO DB: http://www.mongodb.org/ NODE JS: http://nodejs.org/NODE JS: http://nodejs.org/ EXPRESS: http://expressjs.com/ ANGULAR: https://angularjs.org/ YEOMAN.IO: http://yeoman.io/ SCOTCH.IO: http://scotch.io/