SlideShare a Scribd company logo
Intro	to	Front	End
Development
Building	Web	Applications	for	the	Browser

http:/
/bit.ly/ben-fs-219
About	Me
@bendrucker
github/bendrucker
bendrucker.me
bvdrucker@gmail.com
Columbia	-	Class	of	TBD
Valet.io

Fundraising	technology	that	doesn't	suck
Realtime	DBaaS

NYC	Evangelist

ORM	for	Node.js

Co-Lead
The	JavaScript	Ecosytstem

Reuse	your	server	code	in	the	browser
nodeJS	===	webScale
Solve	world	hunger!
So	What	Happened?
Server	vs.	Browser
Server

Browser

Consistent	environment

Untrusted	environment

Optimize	for:	Concurrency

Optimize	for:	file	size

Optimize	for:	Response
time

Optimize	for:	paint
time

Services:

Services:

Databases

DOM

Caches

Cookies

HTTP	web	services

window
Remote	APIs
jQuery	is	the	PHP	of	the	Web

var	userTemplate	=	function	(user)	{
		return	'<ul><li	class="user-first-name">'	+	user.name.first	+	'</li><li	class="use
$.getJSON('/api/user/1',	function	(data)	{
		var	template	=	userTemplate(data);
		$('ul.users').append(template);
});

Keeping	the	DOM	in	sync	with	our
models	is	hard.	jQuery	doesn't	help.
What	Can	a	Front	End	Framework	Do?

Templating
Event	management
Routing
Dependency	management
Two	way	data	binding
Framework	Overload!
Why	Do	We	Need	2	Way	Binding?
Forms
	BAD!	
	<form>
		<input	id="first-name"	/>
		<input	id="last-name"	/>
		<input	id="username"	/>
</form>
	var	user	=	{
		firstName:	$('#first-name').val(),
		lastName:	$('#last-name').val(),
		username:	$('#username').val()
};
Forms
	GOOD!	
<form>
		<input	ng-model="user.firstName"	/>
		<input	ng-model="user.lastName"	/>
		<input	ng-model="user.username"	/>
</form>
var	user	=	$scope.user;
Getters/Setters	vs.	Dirty	Checking
Dirty	Checking	Explained
POJO	Models	–	$scope
Watchers	–	$scope.$watch
Digest	cycles	–	$scope.$digest
Integrate	external	code	–	$scope.$apply
Further	Reading:	Build	Your	Own	Angular
Advantages	of	Getters/Setters
No	digest	cycles
No	$scope.digest
No		$scope.watch
No	$scope.$apply

UA	for	free	(Uniform	Access	Principle)
Computed	properties
Native	UAP
Object.defineProperty	(ES5)
Object.defineProperty(User.prototype,	'fullName',	{
		get:	function	()	{
				return	this.firstName	+	'	'	+	this.lastName
		},
		set:	function	(fullName)	{
				var	nameParts	=	fullName.split('	');
				this.firstName	=	nameParts[0];
				this.lastName	=	nameParts[1];
		}
});
Angular/Ember
vs.
Everything	Else
vs.
Let's	Write	Some	Code!
Real	Time	Web:	Challenges
Event	handling	is	much	harder	than	request-reply
Multiple	simultaneous	writes	create	conflicts/overwrites
Example:	[].push
Heartbeating
Scoped	subscriptions
Network	latency
Firebase	to	the	Rescue!
REST	vs.	Event	Driven	Data
No	more	GET,	POST,	PUT,	DELETE
Endpoints,	just	like	REST	(references)
Use	data	events	to	keep	models	in	sync:
value
child_added
child_changed
child_removed
REST	Style
$.getJSON('/users',	function	(users)	{
		$.each(users,	appendUser;
});

Event	Style
usersRef.on('child_added',	appendUser);
AngularFire:	Angular	+	Firebase
$firebase
Auto-registers	listeners	to	update	the	model	with	remote	changes
Adds	methods	for	saving	local	changes	to	remote
Optional:	set	up	$watch	to	auto	sync	local	changes
More	Code!

More Related Content

What's hot (20)

The State of Rust Web Frameworks
The State of Rust Web Frameworks
IanWagner10
 
Getting Started With WP REST API
Getting Started With WP REST API
Kishor Kumar
 
node-webkit : Make a magic from your a desktop app to desktop app!
node-webkit : Make a magic from your a desktop app to desktop app!
욱진 양
 
Preprocessor Workflow with Grunt
Preprocessor Workflow with Grunt
Vlad Filippov
 
How to make your Webpack builds 10x faster
How to make your Webpack builds 10x faster
trueter
 
MEAN Stack - Google Developers Live 10/03/2013
MEAN Stack - Google Developers Live 10/03/2013
Valeri Karpov
 
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
CodeValue
 
The MEAN Stack
The MEAN Stack
Md. Ziaul Haq
 
We come in peace hybrid development with web assembly - Maayan Hanin
We come in peace hybrid development with web assembly - Maayan Hanin
CodeValue
 
NodeSummit - MEAN Stack
NodeSummit - MEAN Stack
Valeri Karpov
 
Supercharge your app with Cloud Functions for Firebase
Supercharge your app with Cloud Functions for Firebase
Bret McGowen - NYC Google Developer Advocate
 
Modern web application devlopment workflow
Modern web application devlopment workflow
Hamdi Hmidi
 
Advanced front-end automation with npm scripts
Advanced front-end automation with npm scripts
k88hudson
 
Modern Static Site with GatsbyJS
Modern Static Site with GatsbyJS
Riza Fahmi
 
Dictionary Within the Cloud
Dictionary Within the Cloud
gueste4978b94
 
WordCamp IL 2016 - WordPress Scale on AWS
WordCamp IL 2016 - WordPress Scale on AWS
Boaz Ziniman
 
Super tools to boost productivity in React dev env!
Super tools to boost productivity in React dev env!
Souvik Basu
 
A faster web
A faster web
Bakani Pilime
 
Presentation on Gatsby to SF Static Web Tech Meetup
Presentation on Gatsby to SF Static Web Tech Meetup
Kyle Mathews
 
Progressive Web Apps. What, why and how
Progressive Web Apps. What, why and how
Riza Fahmi
 
The State of Rust Web Frameworks
The State of Rust Web Frameworks
IanWagner10
 
Getting Started With WP REST API
Getting Started With WP REST API
Kishor Kumar
 
node-webkit : Make a magic from your a desktop app to desktop app!
node-webkit : Make a magic from your a desktop app to desktop app!
욱진 양
 
Preprocessor Workflow with Grunt
Preprocessor Workflow with Grunt
Vlad Filippov
 
How to make your Webpack builds 10x faster
How to make your Webpack builds 10x faster
trueter
 
MEAN Stack - Google Developers Live 10/03/2013
MEAN Stack - Google Developers Live 10/03/2013
Valeri Karpov
 
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
CodeValue
 
We come in peace hybrid development with web assembly - Maayan Hanin
We come in peace hybrid development with web assembly - Maayan Hanin
CodeValue
 
NodeSummit - MEAN Stack
NodeSummit - MEAN Stack
Valeri Karpov
 
Modern web application devlopment workflow
Modern web application devlopment workflow
Hamdi Hmidi
 
Advanced front-end automation with npm scripts
Advanced front-end automation with npm scripts
k88hudson
 
Modern Static Site with GatsbyJS
Modern Static Site with GatsbyJS
Riza Fahmi
 
Dictionary Within the Cloud
Dictionary Within the Cloud
gueste4978b94
 
WordCamp IL 2016 - WordPress Scale on AWS
WordCamp IL 2016 - WordPress Scale on AWS
Boaz Ziniman
 
Super tools to boost productivity in React dev env!
Super tools to boost productivity in React dev env!
Souvik Basu
 
Presentation on Gatsby to SF Static Web Tech Meetup
Presentation on Gatsby to SF Static Web Tech Meetup
Kyle Mathews
 
Progressive Web Apps. What, why and how
Progressive Web Apps. What, why and how
Riza Fahmi
 

Viewers also liked (16)

Efficient Data Storage for Analytics with Parquet 2.0 - Hadoop Summit 2014
Efficient Data Storage for Analytics with Parquet 2.0 - Hadoop Summit 2014
Julien Le Dem
 
Node.js Workshop - Sela SDP 2015
Node.js Workshop - Sela SDP 2015
Nir Noy
 
Creating MVC Application with backbone js
Creating MVC Application with backbone js
Mindfire Solutions
 
Burgas Conf 21.06.2014 - Single page application Angularjs and Nodejs
Burgas Conf 21.06.2014 - Single page application Angularjs and Nodejs
Dimitar Danailov
 
Node js introduction
Node js introduction
Joseph de Castelnau
 
Parquet Strata/Hadoop World, New York 2013
Parquet Strata/Hadoop World, New York 2013
Julien Le Dem
 
Introduction to Node js
Introduction to Node js
Akshay Mathur
 
Best node js course
Best node js course
bestonlinecoursescoupon
 
AngularJS application architecture
AngularJS application architecture
Gabriele Falace
 
Node.js 101
Node.js 101
FITC
 
AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)
Gary Arora
 
AngularJS Basics with Example
AngularJS Basics with Example
Sergey Bolshchikov
 
AngularJS Architecture
AngularJS Architecture
Eyal Vardi
 
Nodejs Explained with Examples
Nodejs Explained with Examples
Gabriele Lana
 
API Driven Application - AngulatJS, NodeJS and MongoDB | JCertif Tunisia 2015
API Driven Application - AngulatJS, NodeJS and MongoDB | JCertif Tunisia 2015
Hamdi Hmidi
 
Bhasma - Nano Medicine (Ancient India - Ayurveda)
Bhasma - Nano Medicine (Ancient India - Ayurveda)
Piyush Kapil
 
Efficient Data Storage for Analytics with Parquet 2.0 - Hadoop Summit 2014
Efficient Data Storage for Analytics with Parquet 2.0 - Hadoop Summit 2014
Julien Le Dem
 
Node.js Workshop - Sela SDP 2015
Node.js Workshop - Sela SDP 2015
Nir Noy
 
Creating MVC Application with backbone js
Creating MVC Application with backbone js
Mindfire Solutions
 
Burgas Conf 21.06.2014 - Single page application Angularjs and Nodejs
Burgas Conf 21.06.2014 - Single page application Angularjs and Nodejs
Dimitar Danailov
 
Parquet Strata/Hadoop World, New York 2013
Parquet Strata/Hadoop World, New York 2013
Julien Le Dem
 
Introduction to Node js
Introduction to Node js
Akshay Mathur
 
AngularJS application architecture
AngularJS application architecture
Gabriele Falace
 
Node.js 101
Node.js 101
FITC
 
AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)
Gary Arora
 
AngularJS Architecture
AngularJS Architecture
Eyal Vardi
 
Nodejs Explained with Examples
Nodejs Explained with Examples
Gabriele Lana
 
API Driven Application - AngulatJS, NodeJS and MongoDB | JCertif Tunisia 2015
API Driven Application - AngulatJS, NodeJS and MongoDB | JCertif Tunisia 2015
Hamdi Hmidi
 
Bhasma - Nano Medicine (Ancient India - Ayurveda)
Bhasma - Nano Medicine (Ancient India - Ayurveda)
Piyush Kapil
 
Ad

Similar to Intro to Front End Development with Angular + Firebase (20)

Frontend Developer Roadmap PDF By Scholarhat
Frontend Developer Roadmap PDF By Scholarhat
Scholarhat
 
Front End Development | Introduction
Front End Development | Introduction
JohnTaieb
 
Javascript for Wep Apps
Javascript for Wep Apps
Michael Puckett
 
Use Your WebDev Skills to Create Mobile Apps in Telerik Appbuilder (Jonathan ...
Use Your WebDev Skills to Create Mobile Apps in Telerik Appbuilder (Jonathan ...
ITCamp
 
FrontEnd.pdf
FrontEnd.pdf
stephanedjeukam1
 
Build tons of multi-device JavaScript applications - Part 1 : Boilerplate, de...
Build tons of multi-device JavaScript applications - Part 1 : Boilerplate, de...
Skilld
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwist
Mark Fayngersh
 
Understanding Front-End Development: Skills, Tools, and Trends
Understanding Front-End Development: Skills, Tools, and Trends
StudySection
 
Sugarcoating your frontend one ViewModel at a time
Sugarcoating your frontend one ViewModel at a time
Einar Ingebrigtsen
 
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
Prasid Pathak
 
Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.Web
Chris Canal
 
Frontend developer Roadmap .pdf
Frontend developer Roadmap .pdf
DurgeshSinghLodhi1
 
"Progressive Web Apps" by Riza Fahmi (Hacktiv8)
"Progressive Web Apps" by Riza Fahmi (Hacktiv8)
Tech in Asia ID
 
Intro to-html-backbone
Intro to-html-backbone
zonathen
 
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
Prasid Pathak
 
Web Development with AngularJS, NodeJS and ExpressJS
Web Development with AngularJS, NodeJS and ExpressJS
João Rocha da Silva
 
Essential Skills and Tools for Successful Frontend Development
Essential Skills and Tools for Successful Frontend Development
medtechno1999
 
Roadmap to Frontend Development.pdf
Roadmap to Frontend Development.pdf
Sohan Singh
 
Mastering Front-End: A Developer's Journey
Mastering Front-End: A Developer's Journey
awareness traffic
 
f8db413453b33e4ffrointend development bbasics.pptx
f8db413453b33e4ffrointend development bbasics.pptx
vallabhdeshpande7499
 
Frontend Developer Roadmap PDF By Scholarhat
Frontend Developer Roadmap PDF By Scholarhat
Scholarhat
 
Front End Development | Introduction
Front End Development | Introduction
JohnTaieb
 
Use Your WebDev Skills to Create Mobile Apps in Telerik Appbuilder (Jonathan ...
Use Your WebDev Skills to Create Mobile Apps in Telerik Appbuilder (Jonathan ...
ITCamp
 
Build tons of multi-device JavaScript applications - Part 1 : Boilerplate, de...
Build tons of multi-device JavaScript applications - Part 1 : Boilerplate, de...
Skilld
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwist
Mark Fayngersh
 
Understanding Front-End Development: Skills, Tools, and Trends
Understanding Front-End Development: Skills, Tools, and Trends
StudySection
 
Sugarcoating your frontend one ViewModel at a time
Sugarcoating your frontend one ViewModel at a time
Einar Ingebrigtsen
 
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
Prasid Pathak
 
Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.Web
Chris Canal
 
Frontend developer Roadmap .pdf
Frontend developer Roadmap .pdf
DurgeshSinghLodhi1
 
"Progressive Web Apps" by Riza Fahmi (Hacktiv8)
"Progressive Web Apps" by Riza Fahmi (Hacktiv8)
Tech in Asia ID
 
Intro to-html-backbone
Intro to-html-backbone
zonathen
 
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
Prasid Pathak
 
Web Development with AngularJS, NodeJS and ExpressJS
Web Development with AngularJS, NodeJS and ExpressJS
João Rocha da Silva
 
Essential Skills and Tools for Successful Frontend Development
Essential Skills and Tools for Successful Frontend Development
medtechno1999
 
Roadmap to Frontend Development.pdf
Roadmap to Frontend Development.pdf
Sohan Singh
 
Mastering Front-End: A Developer's Journey
Mastering Front-End: A Developer's Journey
awareness traffic
 
f8db413453b33e4ffrointend development bbasics.pptx
f8db413453b33e4ffrointend development bbasics.pptx
vallabhdeshpande7499
 
Ad

Recently uploaded (20)

Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
Down the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training Roadblocks
Rustici Software
 
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
Safe Software
 
Artificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdf
OnBoard
 
Enabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FME
Safe Software
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
Introduction to Typescript - GDG On Campus EUE
Introduction to Typescript - GDG On Campus EUE
Google Developer Group On Campus European Universities in Egypt
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
Crypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdf
Stephen Perrenod
 
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
Safe Software
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
SOFTTECHHUB
 
“Addressing Evolving AI Model Challenges Through Memory and Storage,” a Prese...
“Addressing Evolving AI Model Challenges Through Memory and Storage,” a Prese...
Edge AI and Vision Alliance
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
Oracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI Professional
VICTOR MAESTRE RAMIREZ
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
Down the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training Roadblocks
Rustici Software
 
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
Safe Software
 
Artificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdf
OnBoard
 
Enabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FME
Safe Software
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
Crypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdf
Stephen Perrenod
 
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
Safe Software
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
SOFTTECHHUB
 
“Addressing Evolving AI Model Challenges Through Memory and Storage,” a Prese...
“Addressing Evolving AI Model Challenges Through Memory and Storage,” a Prese...
Edge AI and Vision Alliance
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
Oracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI Professional
VICTOR MAESTRE RAMIREZ
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
 

Intro to Front End Development with Angular + Firebase