SlideShare a Scribd company logo
MEAN Stack Warmup
PeopleSpace 29 Nov 2016
Troy Miles
‱ Troy Miles aka the RocknCoder
‱ Over 37 years of programming
experience
‱ Speaker and author
‱ bit.ly/rc-jquerybook
‱ rockncoder@gmail.com
‱ @therockncoder
‱ Now a lynda.com Author!‹
Build Mobile Apps!
‱ Develop mobile apps with
Ionic and AngularJS
‱ Learn the Ionic CLI
‱ Fetch data via ajax
‱ Deploy your app to Android &
iOS
‱ bit.ly/ionicvideo
Affordable JavaScript Weekend
Workshops @PeopleSpace
‱ MEAN Stack / Jan 28 + 29‹
Create Full Stack Web Apps in JavaScript
‱ Intro to React / Feb 18 + 19‹
Deep dive into the Super Popular Library for Build
UIs
‱ Angular 2 / Mar 11 + 12 ‹
A Deep Dive into the Latest Version of the Popular
Front End Framework by Google
20% off 24 Hours Only
code: ROCKNCODER20
Expires 11/30/2016
meanstackweekend.eventbrite.com
Tonight’s Agenda
‱ What is the MEAN Stack?
‱ Heroku
‱ MongoDB
‱ NodeJS + Express
‱ Angular 2
‱ Some code
What is the MEAN Stack?
‱ MEAN is a free and open-source JavaScript
software stack for building dynamic web sites and
web applications.
‱ Term coined by Valeri Karpov
MongoDB
‱ MongoDB is an open-source, document database
designed for ease of development and scaling.
‱ v3.2
‱ Initial release - 2009
‱ https://www.mongodb.org/
Express
‱ Fast, unopinionated, minimalist web framework for
Node.js
‱ v4.14
‱ http://expressjs.com/
Angular
‱ HTML enhanced for web apps!
‱ v2.2.3
‱ https://angular.io/
NodeJS
‱ Node.js¼ is a platform built on Chrome's V8
JavaScript runtime for easily building fast, scalable
network applications.
‱ v7.2.0
‱ https://nodejs.org/
Git + GitHub
‱ Free and open source distributed version control
system
‱ v2.8
‱ https://git-scm.com/
‱ https://github.com/
BeneïŹts of the MEAN Stack
‱ Isomorphic JavaScript
‱ Open Source / Community Driven
‱ Performance
‱ Low Cost
Isomorphic JavaScript
‱ One language all the way thru
‱ Client/Server JavaScript
‱ JSON as the data transport format
‱ BSON as the data storage format
‱ JavaScript to control Mongo DB
Why is JavaScript Beautiful?
‱ It is a Functional Language - Closer to Lisp and
Scheme than Java or C
‱ First Class Functions
‱ Dynamic Objects
‱ Loose Typing
‱ and more...
ECMAScript Versions
Version Date
ES1 June 1997
ES2 June 1998
ES3 December 1999
ES4 DOA 2006
ES5 December 2009
ES6/ES2015 June 2015
ES2016 2016
How to use ES6 today?
‱ Use only the latest browsers
‱ Use a transpiler: Babel, Traceur, Closure,
TypeScript
‱ Use Node.js
‱ https://kangax.github.io/compat-table/es6/
Heroku
Installation
‱ Create a free heroku account at:
‱ https://www.heroku.com
‱ Download + install heroku toolbelt at:
‱ https://toolbelt.heroku.com/
‱ (the account is free, no credit card necessary)
Deploy to Heroku
‱ heroku login
‱ heroku create <app-name>
‱ (must be unique)
‱ git push heroku master
‱ heroku open
MongoDB
Top DB Engines
1. Oracle
2. MySQL
3. MS SQL Server
4. MongoDB
5. PostgreSQL
6. DB2
7. MS Access
8. Cassandra
9. Redis
10.SQLite
Who Uses It?
‱ Craigslist
‱ eBay
‱ Foursquare
‱ SourceForge
‱ Viacom
‱ Expedia
‱ LinkedIn
‱ Medtronic
‱ eHarmony
‱ CERN
‱ and more
When to Use Mongo?
‱ Document Database
‱ High Performance
‱ High Availability
‱ Easy Scalability
‱ Geospatial Data
What is a Document?
‱ An ordered set of keys and values
‱ Like JavaScript objects
‱ No duplicate keys allowed
‱ Type and case sensitive
‱ Field order is not important nor guaranteed
Node.js
Node v7
‱ Merged with the io.js project, which was at 3.x
‱ New version of Chrome V8
‱ Supports ES6
‱ Faster
‱ node -v
Node Package Manager
‱ Or npm for short
‱ version: npm -v
‱ upgrade npm: npm install npm -g
package.json
‱ required properties (error if missing)
‱ name & version
‱ optional properties (warning if missing)
‱ description, repository, & license
‱ other properties
‱ scripts, dependencies, conïŹg, etc.
Using Environment Vars
‱ process.env object holds environment vars
‱ Reading: var dbConnect =
process.env.dbConnect;
‱ Writing: process.env.mode = ‘test’;
Express
Installation
‱ npm install express-generator -g
‱ express <app name>
‱ cd <app name>
‱ npm install
‱ npm start
Angular
Angular 2 main concepts
‱ Component
‱ Data binding
‱ Service
‱ Directive
‱ Dependency injection
‱ Module
Metadata
‱ Metadata is extra information which gives angular
more info
‱ @Component tells angular the class is a
component
‱ @Directive tells angular the class is a directive
Component
‱ A class with component metadata
‱ Responsible for a piece of the screen referred to as
view.
‱ Template is a form HTML that tells angular how to
render the component.
‱ Metadata tells Angular how to process a class
Component
import {Component, OnInit} from 'angular2/core'‹
import {QuizService} from './quiz-service'‹
‹
@Component({‹
selector: 'quiz',‹
templateUrl: './templates/quiz.html',‹
providers: [QuizService]‹
})‹
export class QuizComponent implements OnInit {‹
quizList: IQuizList[];‹
‹
constructor(private _quizService:QuizService) {‹
}‹
‹
ngOnInit() {‹
this.getQuiz();‹
}‹
‹
getQuiz() {‹
this.quizList = this._quizService.getQuizzes();‹
}‹
}
Template/View
‱ Is a way to describe a view using HTML
‱ Templates can be included with the component
‱ Or as a URL link to an HTML ïŹle
‱ Best practice is to use an HTML ïŹle
Data Binding
C/D Attribute Binding type
—> {{ value }} one-way
—> [property] = “value” property
<— (event) = “handler” event
<—> [(ng-model)] = “property” two-way
Service
‱ “Substitutable objects that are wired together using
dependency injection (DI)”
‱ Used to share code across an app
‱ Lazily instantiated
‱ Angular has no “Service” deïŹned type
Directive
‱ A class with directive metadata
‱ Two kinds: attribute & structural
‱ Attribute directives alter the look or behavior of an
existing element
‱ Structural directives alter the layout by adding,
removing, and replacing elements in the DOM
‱ A component is a directive with a view
Directive
import {Directive, ElementRef, Renderer, Input, OnInit} from 'angular2/core';‹
‹
@Directive({‹
selector: '[sizer]'‹
})‹
export class Sizer implements OnInit {‹
@Input() sizer:string;‹
element:ELementRef;‹
renderer:Renderer;‹
‹
constructor(element:ElementRef, renderer:Renderer) {‹
this.element = element;‹
this.renderer = renderer;‹
}‹
‹
ngOnInit() {‹
this.renderer.setElementStyle(this.element.nativeElement,‹
'fontSize', this.sizer + '%');‹
}‹
}
Component + Directive
import {Directive, Component, ElementRef, Renderer} from ‘@angular/core';‹
import {Sizer} from './sizer'‹
‹
@Component({‹
selector: 'my-app',‹
providers: [],‹
template: `‹
<div>‹
<p [sizer]="200">Butter{{name}}</p> ‹
</div>‹
`,‹
directives: [Sizer]‹
})‹
export class App {‹
constructor() {‹
this.name = 'Monkey'‹
}‹
}
Dependency Injection
‱ A way to supply a new instance of a class with the
fully-formed dependencies it needs
‱ Most dependencies are services
‱ Angular know which services a components by
looking at the types of its constructor parameters
‱ Services are injected by an Injector which uses a
Provider to create the service
Module
‱ Modules are optional but a best practice
‱ export tells TypeScript that the resource is a
module available for other modules
‱ import tells TypeScript the resource in a module
‱ Angular ships a collection library modules
Links
‱ https://www.mongodb.org/
‱ http://expressjs.com/
‱ https://angular.io/
‱ https://nodejs.org/
‱ http://mongoosejs.com/
‱ https://www.heroku.com/
Summary
‱ The MEAN Stack build web apps and APIs
‱ It is composed of four main components
‱ Allows development in JavaScript throughout

More Related Content

PPTX
After the LAMP, it's time to get MEAN
PDF
AngularJS on Mobile with the Ionic Framework
PDF
Ionic framework one day training
PPTX
Mobile Applications with Angular 4 and Ionic 3
PDF
Creating an hybrid app in minutes with Ionic Framework
PPT
Ionic Framework
PPTX
Introduction to Ionic framework
PPTX
Creating books app with react native
After the LAMP, it's time to get MEAN
AngularJS on Mobile with the Ionic Framework
Ionic framework one day training
Mobile Applications with Angular 4 and Ionic 3
Creating an hybrid app in minutes with Ionic Framework
Ionic Framework
Introduction to Ionic framework
Creating books app with react native

What's hot (20)

PDF
Hybrid Apps with Angular & Ionic Framework
PPTX
React Native
PDF
Isomorphic web application
PDF
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
PDF
From MEAN to the MERN Stack
PDF
Ionic Framework
PDF
Mean Stack - An Overview
PPTX
Building mobile app with Ionic Framework
PDF
When to (use / not use) React Native.
PPTX
Developing Hybrid Applications with IONIC
PDF
React native-meetup-talk
PDF
АлДĐșсДĐč Đ’ĐŸĐ»ĐșĐŸĐČ "ВĐČĐ”ĐŽĐ”ĐœĐžĐ” ĐČ React Native"
 
PPTX
NativeScript Developer Day Keynote - Todd Anglin & Burke Holland
PPTX
Ionic 2 - Introduction
PPTX
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
PPTX
React Native - Unleash the power of React in your device - Eduard TomĂ s - Cod...
PDF
The MEAN Stack
PDF
Intro to react native
PPTX
IONIC - Hybrid Mobile App Development
PDF
Optimizing React Native views for pre-animation
Hybrid Apps with Angular & Ionic Framework
React Native
Isomorphic web application
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
From MEAN to the MERN Stack
Ionic Framework
Mean Stack - An Overview
Building mobile app with Ionic Framework
When to (use / not use) React Native.
Developing Hybrid Applications with IONIC
React native-meetup-talk
АлДĐșсДĐč Đ’ĐŸĐ»ĐșĐŸĐČ "ВĐČĐ”ĐŽĐ”ĐœĐžĐ” ĐČ React Native"
 
NativeScript Developer Day Keynote - Todd Anglin & Burke Holland
Ionic 2 - Introduction
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
React Native - Unleash the power of React in your device - Eduard TomĂ s - Cod...
The MEAN Stack
Intro to react native
IONIC - Hybrid Mobile App Development
Optimizing React Native views for pre-animation
Ad

Viewers also liked (8)

PDF
Beginning MEAN Stack
PDF
Introdução à MEAN Stack
PDF
Building an E-commerce website in MEAN stack
PDF
MEAN Stack
PPTX
Starting from Scratch with the MEAN Stack
PPTX
Mean full stack development
PDF
àč€àžŁàž”àžąàž™àžŁàžčàč‰ Node JS àčàžšàžšàžȘàžšàžČàžąàč† àžȘàžłàž«àžŁàž±àžšàžœàžčàč‰àč€àžŁàžŽàčˆàžĄàž•àč‰àž™
PDF
The MEAN stack - SoCalCodeCamp - june 29th 2014
Beginning MEAN Stack
Introdução à MEAN Stack
Building an E-commerce website in MEAN stack
MEAN Stack
Starting from Scratch with the MEAN Stack
Mean full stack development
àč€àžŁàž”àžąàž™àžŁàžčàč‰ Node JS àčàžšàžšàžȘàžšàžČàžąàč† àžȘàžłàž«àžŁàž±àžšàžœàžčàč‰àč€àžŁàžŽàčˆàžĄàž•àč‰àž™
The MEAN stack - SoCalCodeCamp - june 29th 2014
Ad

Similar to MEAN Stack Warm-up (20)

PDF
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
PPTX
Tech io spa_angularjs_20130814_v0.9.5
PPTX
Introduction to React native
PPTX
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
PPTX
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
PDF
MEAN Stack WeNode Barcelona Workshop
PDF
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
KEY
Google App Engine Java, Groovy and Gaelyk
PDF
Infinum android talks_10_android_libraries_used_on_daily_basis
PDF
Masterin Large Scale Java Script Applications
PPTX
ASP .Net Core SPA Templates
PDF
PDF
What is Angular version 4?
PDF
An introduction to Node.js
PDF
Mastering react with redux
PDF
Angular Meetup 1 - Angular Basics and Workshop
PDF
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
 
PDF
The future of web development write once, run everywhere with angular js an...
PPTX
The future of web development write once, run everywhere with angular.js and ...
KEY
Rapid development with Rails
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Tech io spa_angularjs_20130814_v0.9.5
Introduction to React native
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
MEAN Stack WeNode Barcelona Workshop
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Google App Engine Java, Groovy and Gaelyk
Infinum android talks_10_android_libraries_used_on_daily_basis
Masterin Large Scale Java Script Applications
ASP .Net Core SPA Templates
What is Angular version 4?
An introduction to Node.js
Mastering react with redux
Angular Meetup 1 - Angular Basics and Workshop
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
 
The future of web development write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular.js and ...
Rapid development with Rails

More from Troy Miles (20)

PDF
Fast C++ Web Servers
PDF
Node Boot Camp
PDF
AWS Lambda Function with Kotlin
PDF
React Native One Day
PDF
React Native Evening
PDF
Intro to React
PDF
React Development with the MERN Stack
PDF
Angular Application Testing
PDF
ReactJS.NET
PDF
Angular Weekend
PDF
Functional Programming in JavaScript
PDF
Functional Programming in Clojure
PDF
The JavaScript You Wished You Knew
PDF
Game Design and Development Workshop Day 1
PDF
Build a Game in 60 minutes
PDF
Quick & Dirty & MEAN
PDF
A Quick Intro to ReactiveX
PDF
JavaScript Foundations Day1
PDF
AngularJS Beginner Day One
PDF
Building Cross-Platform Mobile Apps
Fast C++ Web Servers
Node Boot Camp
AWS Lambda Function with Kotlin
React Native One Day
React Native Evening
Intro to React
React Development with the MERN Stack
Angular Application Testing
ReactJS.NET
Angular Weekend
Functional Programming in JavaScript
Functional Programming in Clojure
The JavaScript You Wished You Knew
Game Design and Development Workshop Day 1
Build a Game in 60 minutes
Quick & Dirty & MEAN
A Quick Intro to ReactiveX
JavaScript Foundations Day1
AngularJS Beginner Day One
Building Cross-Platform Mobile Apps

Recently uploaded (20)

PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Digital Systems & Binary Numbers (comprehensive )
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
AutoCAD Professional Crack 2025 With License Key
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PPTX
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
DOCX
Greta — No-Code AI for Building Full-Stack Web & Mobile Apps
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
iTop VPN Free 5.6.0.5262 Crack latest version 2025
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
Advanced SystemCare Ultimate Crack + Portable (2025)
PDF
iTop VPN 6.5.0 Crack + License Key 2025 (Premium Version)
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Odoo Companies in India – Driving Business Transformation.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Navsoft: AI-Powered Business Solutions & Custom Software Development
Wondershare Filmora 15 Crack With Activation Key [2025
Digital Systems & Binary Numbers (comprehensive )
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
AutoCAD Professional Crack 2025 With License Key
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Monitoring Stack: Grafana, Loki & Promtail
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
Greta — No-Code AI for Building Full-Stack Web & Mobile Apps
Why Generative AI is the Future of Content, Code & Creativity?
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
iTop VPN Free 5.6.0.5262 Crack latest version 2025
Design an Analysis of Algorithms I-SECS-1021-03
Advanced SystemCare Ultimate Crack + Portable (2025)
iTop VPN 6.5.0 Crack + License Key 2025 (Premium Version)
CHAPTER 2 - PM Management and IT Context
Odoo Companies in India – Driving Business Transformation.pdf

MEAN Stack Warm-up

  • 2. Troy Miles ‱ Troy Miles aka the RocknCoder ‱ Over 37 years of programming experience ‱ Speaker and author ‱ bit.ly/rc-jquerybook ‱ [email protected] ‱ @therockncoder ‱ Now a lynda.com Author!‹
  • 3. Build Mobile Apps! ‱ Develop mobile apps with Ionic and AngularJS ‱ Learn the Ionic CLI ‱ Fetch data via ajax ‱ Deploy your app to Android & iOS ‱ bit.ly/ionicvideo
  • 4. Affordable JavaScript Weekend Workshops @PeopleSpace ‱ MEAN Stack / Jan 28 + 29‹ Create Full Stack Web Apps in JavaScript ‱ Intro to React / Feb 18 + 19‹ Deep dive into the Super Popular Library for Build UIs ‱ Angular 2 / Mar 11 + 12 ‹ A Deep Dive into the Latest Version of the Popular Front End Framework by Google
  • 5. 20% off 24 Hours Only code: ROCKNCODER20 Expires 11/30/2016 meanstackweekend.eventbrite.com
  • 6. Tonight’s Agenda ‱ What is the MEAN Stack? ‱ Heroku ‱ MongoDB ‱ NodeJS + Express ‱ Angular 2 ‱ Some code
  • 7. What is the MEAN Stack? ‱ MEAN is a free and open-source JavaScript software stack for building dynamic web sites and web applications. ‱ Term coined by Valeri Karpov
  • 8. MongoDB ‱ MongoDB is an open-source, document database designed for ease of development and scaling. ‱ v3.2 ‱ Initial release - 2009 ‱ https://www.mongodb.org/
  • 9. Express ‱ Fast, unopinionated, minimalist web framework for Node.js ‱ v4.14 ‱ http://expressjs.com/
  • 10. Angular ‱ HTML enhanced for web apps! ‱ v2.2.3 ‱ https://angular.io/
  • 11. NodeJS ‱ Node.jsÂź is a platform built on Chrome's V8 JavaScript runtime for easily building fast, scalable network applications. ‱ v7.2.0 ‱ https://nodejs.org/
  • 12. Git + GitHub ‱ Free and open source distributed version control system ‱ v2.8 ‱ https://git-scm.com/ ‱ https://github.com/
  • 13. BeneïŹts of the MEAN Stack ‱ Isomorphic JavaScript ‱ Open Source / Community Driven ‱ Performance ‱ Low Cost
  • 14. Isomorphic JavaScript ‱ One language all the way thru ‱ Client/Server JavaScript ‱ JSON as the data transport format ‱ BSON as the data storage format ‱ JavaScript to control Mongo DB
  • 15. Why is JavaScript Beautiful? ‱ It is a Functional Language - Closer to Lisp and Scheme than Java or C ‱ First Class Functions ‱ Dynamic Objects ‱ Loose Typing ‱ and more...
  • 16. ECMAScript Versions Version Date ES1 June 1997 ES2 June 1998 ES3 December 1999 ES4 DOA 2006 ES5 December 2009 ES6/ES2015 June 2015 ES2016 2016
  • 17. How to use ES6 today? ‱ Use only the latest browsers ‱ Use a transpiler: Babel, Traceur, Closure, TypeScript ‱ Use Node.js ‱ https://kangax.github.io/compat-table/es6/
  • 19. Installation ‱ Create a free heroku account at: ‱ https://www.heroku.com ‱ Download + install heroku toolbelt at: ‱ https://toolbelt.heroku.com/ ‱ (the account is free, no credit card necessary)
  • 20. Deploy to Heroku ‱ heroku login ‱ heroku create <app-name> ‱ (must be unique) ‱ git push heroku master ‱ heroku open
  • 22. Top DB Engines 1. Oracle 2. MySQL 3. MS SQL Server 4. MongoDB 5. PostgreSQL 6. DB2 7. MS Access 8. Cassandra 9. Redis 10.SQLite
  • 23. Who Uses It? ‱ Craigslist ‱ eBay ‱ Foursquare ‱ SourceForge ‱ Viacom ‱ Expedia ‱ LinkedIn ‱ Medtronic ‱ eHarmony ‱ CERN ‱ and more
  • 24. When to Use Mongo? ‱ Document Database ‱ High Performance ‱ High Availability ‱ Easy Scalability ‱ Geospatial Data
  • 25. What is a Document? ‱ An ordered set of keys and values ‱ Like JavaScript objects ‱ No duplicate keys allowed ‱ Type and case sensitive ‱ Field order is not important nor guaranteed
  • 27. Node v7 ‱ Merged with the io.js project, which was at 3.x ‱ New version of Chrome V8 ‱ Supports ES6 ‱ Faster ‱ node -v
  • 28. Node Package Manager ‱ Or npm for short ‱ version: npm -v ‱ upgrade npm: npm install npm -g
  • 29. package.json ‱ required properties (error if missing) ‱ name & version ‱ optional properties (warning if missing) ‱ description, repository, & license ‱ other properties ‱ scripts, dependencies, conïŹg, etc.
  • 30. Using Environment Vars ‱ process.env object holds environment vars ‱ Reading: var dbConnect = process.env.dbConnect; ‱ Writing: process.env.mode = ‘test’;
  • 32. Installation ‱ npm install express-generator -g ‱ express <app name> ‱ cd <app name> ‱ npm install ‱ npm start
  • 34. Angular 2 main concepts ‱ Component ‱ Data binding ‱ Service ‱ Directive ‱ Dependency injection ‱ Module
  • 35. Metadata ‱ Metadata is extra information which gives angular more info ‱ @Component tells angular the class is a component ‱ @Directive tells angular the class is a directive
  • 36. Component ‱ A class with component metadata ‱ Responsible for a piece of the screen referred to as view. ‱ Template is a form HTML that tells angular how to render the component. ‱ Metadata tells Angular how to process a class
  • 37. Component import {Component, OnInit} from 'angular2/core'‹ import {QuizService} from './quiz-service'‹ ‹ @Component({‹ selector: 'quiz',‹ templateUrl: './templates/quiz.html',‹ providers: [QuizService]‹ })‹ export class QuizComponent implements OnInit {‹ quizList: IQuizList[];‹ ‹ constructor(private _quizService:QuizService) {‹ }‹ ‹ ngOnInit() {‹ this.getQuiz();‹ }‹ ‹ getQuiz() {‹ this.quizList = this._quizService.getQuizzes();‹ }‹ }
  • 38. Template/View ‱ Is a way to describe a view using HTML ‱ Templates can be included with the component ‱ Or as a URL link to an HTML ïŹle ‱ Best practice is to use an HTML ïŹle
  • 39. Data Binding C/D Attribute Binding type —> {{ value }} one-way —> [property] = “value” property <— (event) = “handler” event <—> [(ng-model)] = “property” two-way
  • 40. Service ‱ “Substitutable objects that are wired together using dependency injection (DI)” ‱ Used to share code across an app ‱ Lazily instantiated ‱ Angular has no “Service” deïŹned type
  • 41. Directive ‱ A class with directive metadata ‱ Two kinds: attribute & structural ‱ Attribute directives alter the look or behavior of an existing element ‱ Structural directives alter the layout by adding, removing, and replacing elements in the DOM ‱ A component is a directive with a view
  • 42. Directive import {Directive, ElementRef, Renderer, Input, OnInit} from 'angular2/core';‹ ‹ @Directive({‹ selector: '[sizer]'‹ })‹ export class Sizer implements OnInit {‹ @Input() sizer:string;‹ element:ELementRef;‹ renderer:Renderer;‹ ‹ constructor(element:ElementRef, renderer:Renderer) {‹ this.element = element;‹ this.renderer = renderer;‹ }‹ ‹ ngOnInit() {‹ this.renderer.setElementStyle(this.element.nativeElement,‹ 'fontSize', this.sizer + '%');‹ }‹ }
  • 43. Component + Directive import {Directive, Component, ElementRef, Renderer} from ‘@angular/core';‹ import {Sizer} from './sizer'‹ ‹ @Component({‹ selector: 'my-app',‹ providers: [],‹ template: `‹ <div>‹ <p [sizer]="200">Butter{{name}}</p> ‹ </div>‹ `,‹ directives: [Sizer]‹ })‹ export class App {‹ constructor() {‹ this.name = 'Monkey'‹ }‹ }
  • 44. Dependency Injection ‱ A way to supply a new instance of a class with the fully-formed dependencies it needs ‱ Most dependencies are services ‱ Angular know which services a components by looking at the types of its constructor parameters ‱ Services are injected by an Injector which uses a Provider to create the service
  • 45. Module ‱ Modules are optional but a best practice ‱ export tells TypeScript that the resource is a module available for other modules ‱ import tells TypeScript the resource in a module ‱ Angular ships a collection library modules
  • 46. Links ‱ https://www.mongodb.org/ ‱ http://expressjs.com/ ‱ https://angular.io/ ‱ https://nodejs.org/ ‱ http://mongoosejs.com/ ‱ https://www.heroku.com/
  • 47. Summary ‱ The MEAN Stack build web apps and APIs ‱ It is composed of four main components ‱ Allows development in JavaScript throughout