SlideShare a Scribd company logo
1 of 35
Download to read offline
AngularJS: Good parts
Евгений Жарков
DOOR3
@2j2e
eu.zharkov@gmail.com
Watchers ]:>
Track Watchers
Angular adds a watcher to the digest cycle for each of these:
• {{expression}} — templates
• $scope.$watch — in the code
Track Watchers
function	getWatchers(root)	{	
		root	=	angular.element(root	||	document.documentElement);	
		var	watcherCount	=	0;	
		
		function	getElemWatchers(element)	{	
				var	isolateWatchers	=	getWatchersFromScope(element.data().$isolateScope);	
				var	scopeWatchers	=	getWatchersFromScope(element.data().$scope);	
				var	watchers	=	scopeWatchers.concat(isolateWatchers);	
				angular.forEach(element.children(),	function	(childElement)	{	
						watchers	=	watchers.concat(getElemWatchers(angular.element(childElement)));	
				});	
				return	watchers;	
		}	
			
		function	getWatchersFromScope(scope)	{	
				if	(scope)	{	
						return	scope.$$watchers	||	[];	
				}	else	{	
						return	[];	
				}	
		}	
		
		return	getElemWatchers(root);	
}	
https://gist.github.com/kentcdodds/31c90402750572107922
Track Watchers
//	get	all	watchers	on	the	whole	page	
getWatchers();	
//	get	watchers	of	a	specific	element	(and	its	children)	
getWatchers(document.body);	
//	select	the	element	of	interest	in	Chrome	Dev	tools	
getWatchers($0);
Track Watchers
https://github.com/kentcdodds/ng-stats
AngularJS > ES6
ES6, require.js
function	MainController	()	{	
……………	
			
}	
export	{	MainController	}	
—————————————————————————————————————	
import	{	MainController	}	from	‘./path/to/MainController';	
……………
ES6, require.js
class	MainController	{	
				constructor(searchService)	{	
								this.searchService	=	searchService;	
				}	
				search	()	{	
								this.searchService	
												.fetch(this.searchTerm)	
												.then(response	=>	{	
																this.items	=	response.data.items;	
												});	
				}	
}	
export	{	MainController	}
ES6, require.js
import	{	MainController	}	from	'./MainController';	
import	{	SearchService	}	from	'./SearchService';	
angular	
				.module('app',	[])	
				.controller('mainController',	MainController)	
				.service('searchService',	SearchService);
Inheritance
class	PageController	{	
				constructor(title)	{	
								this._title	=	title;	
				}	
				title	()	{	
								return	'Title:	'	+	this._title;	
				}	
}	
export	{	PageController	}
Inheritance
import	{	PageController	}	from	'./PageController';	
class	ProductPageController	extends	PageController	{	
				constructor()	{	
								super('ES6	inheritance	with	Angular’);	
				}	
}	
export	{	ProductPageController	}
Inheritance
import	{	ProductPageController	}	from	'./ProductPageController';	
angular	
				.module('app',	[])	
				.controller('ProductPageController',	ProductPageController);
Service Inheritance
myModule.service(fn)	
YES, instantiated with the new operator under the hood
myModule.factory(fn)
NO
Don’t forget about minification
MainController.$inject	=	['SearchService'];
and/or ng-annotate
export	default	class	NameService	{	
		/*@ngInject*/	
		constructor($q)	{	..	}	
}
ES6 Babel Browserify Boilerplate
https://github.com/thoughtram/es6-babel-browserify-boilerplate
Angular ES6
https://github.com/michaelbromley/angular-es6
AngularJS > ES6 > Tests
ES5, Karma, Jasmine, PhantomJS
describe('TodoService',	function()	{	
				var	TodoService,	InitialTodosMock;	
				//	Instantiate	Angular	JS	context	
				beforeEach(module("app"));	
				//	Register	mocks	in	Angular	JS	context	
				beforeEach(module(function($provide)	{	
								InitialTodosMock	=	[	
												{	
																label:	'Test	todo',	
																done:	false	
												}	
								];	
								$provide.value('initialTodos',	InitialTodosMock);	
				}));	
				//	Get	instance	of	TodoService	with	mocked	dependencies	from	Angular	JS	context	
				beforeEach(inject(function	(_TodoService_)	{	
								TodoService	=	_TodoService_;	
				}));	
				//	Oh,	...	do	the	actual	testing	!!!	
				it('should	have	initial	todo',	function()	{	
								expect(TodoService.todos.length).toBe(1);	
								expect(TodoService.todos[0].label]).toBe('Test	todo');	
								expect(TodoService.todos[0].done]).toBe(false);								
				});	
});
ES5, Karma, Jasmine, PhantomJS
describe('TodoController',	function()	{	
				var	scope,	$rootScope,	$controller;	
				//	Instantiate	Angular	JS	context	
				beforeEach(module('app'));	
				//	Register	mocks	in	Angular	JS	context		
				//	(sometimes	not	necessary,	we	can	use	real	services	too,	but	the	Angular	context	grows...)	
				beforeEach(module(function($provide)	{	
								var	TodoServiceMock	=	{	
												todos:	[],	
												addTodo:	function()	{	/*……*/	},	
												toggleTodo:	function()	{	/*……*/	},	
												removeDoneTodost()	{	/*……*/	}	
								};	
								$provide.value('TodoService',	TodoServiceMock);	
				}));	
				//	Get	instance	of	TodoController,	you	know,	create	new	$scope	from	$rootScope	by	yourself	and	stuff...	
				//	It	is	possible	to	not	use	$scope	when	using	'controllerAs'	syntax,		
				//	but	you	still	have	to	use	at	least	$controller	to	get	the	refference	to	controller	itself	
				beforeEach(inject(function(_$rootScope_,	_$controller_,	_TodoService_){	
								$controller	=	_$controller_;	
								$rootScope	=	_$rootScope_;	
								scope	=	$rootScope.$new();	
								$controller('TodoController',	{	
												$scope:	scope	
												TodoService:	_TodoService_	
								});	
				}));	
					
				//	Oh,	...	do	the	actual	testing	!!!	
				it('should	have	initial	todos',	function()	{	
								expect(scope.todos.length).toBe(1);	
				});	
});
Issues
• Angular context module(‘app’) must be instantiated to be able to do any
testing. Without Angular context you can’t get access (reference) to your
controllers / services.
• Angular and all other used libraries must be included during testing so that it
is even possible to instantiate Angular context.
• Angular context can grow quite large so that it’s creation will consume
considerable amount of time for every test file.

• Karma exclusion syntax doesn’t follow standard node glob pattern which
can make you go crazy when you try to solve timeout errors caused by
insufficient memory on PhantomJS by splitting test execution into
multiple batches, while supporting dev mode single test execution
(karma uses extra exclude property instead of supporting standard “!”)
ES6, Mocha, chai
import	{	assert	}	from	'chai';	
import	TodoService	from	'./todo.service.js';	
let	service;	
describe('TodoService',	function()	{	
				beforeEach(function()	{	
								service	=	TodoService();	
				});	
				it('should	contain	empty	todos	after	initialization',	function	()	{	
								assert.equal(service.todos.length,	0);	
				});	
				it('should	toggle	todo',	function	()	{	
								service.addTodo('Finish	example	project');	
								assert.equal(service.todos[0].done,	false);	
								service.toggleTodo('Finish	example	project');	
								assert.equal(service.todos[0].done,	true);	
								service.toggleTodo('Finish	example	project');	
								assert.equal(service.todos[0].done,	false);	
				});	
});
ES6, Mocha, chai
import	{	assert	}	from	'chai';	
import	SomeComponent	from	‘./some-component';	
let	component;	
describe('some-component',	function()	{	
				beforeEach(function()	{	
								component	=	new	SomeComponent();	
				});	
				it('should	start	with	counter	value	20',	function	()	{	
								assert.equal(component.counter,	20);	
				});	
				it('should	accept	initial	counter	value	as	dependency',	function	()	{	
								component	=	new	SomeComponent(30);	
								assert.equal(component.counter,	30);	
				});	
				it('should	increment	counter	value	after	increment	is	called',	function	()	{	
								assert.equal(component.counter,	20);	
								component.increment();	
								assert.equal(component.counter,	21);	
				});	
});
Dependencies are passed explicitly as a parameter of function
Dig, read, criticise
• Pagination

https://github.com/michaelbromley/angularUtils/tree/master/src/directives/pagination
• angular-formly 

http://angular-formly.com/
• angular-translate

https://angular-translate.github.io
• LumX (material design) 

http://ui.lumapps.com

angular-formly
<formly-form	model="vm.user"	fields="vm.userFields">	
		<button	type="submit"	class="btn	btn-default"		
ng-click="vm.submit(vm.user)">Submit</button>	
</formly-form>
angular-formly
vm.userFields	=	[	
				{	
						key:	'email',	
						type:	'input',	
						templateOptions:	{	
								type:	'email',	
								label:	'Email	address',	
								placeholder:	'Enter	email'	
						}	
				},	{	
						key:	'password',	
						type:	'input',	
						templateOptions:	{	
								type:	'password',	
								label:	'Password',	
								placeholder:	'Password'	
						}	
				},		
{	
						key:	'file',	
						type:	'file',	
						templateOptions:	{	
								label:	'File	input',	
								description:	'Example	block-
level	help	text	here',	
								url:	'https://example.com/
upload'	
						}	
				},	{	
						key:	'checked',	
						type:	'checkbox',	
						templateOptions:	{	
								label:	'Check	me	out'	
						}	
				}	
		];
Pagination
<ANY	
				dir-paginate="expression	|	itemsPerPage:	(int|
expression)	[:	paginationId	(string	literal)]"	
				[current-page=""]	
				[pagination-id=""]	
				[total-items=""]>	
				...	
				</ANY>
Pagination
<dir-pagination-controls	
				[max-size=""]	
				[direction-links=""]	
				[boundary-links=""]	
				[on-page-change=""]	
				[pagination-id=""]	
				[template-url=""]	
				[auto-hide=""]>	
				</dir-pagination-controls>
AngularJS: Good parts

More Related Content

What's hot

The redux saga begins
The redux saga beginsThe redux saga begins
The redux saga beginsDaniel Franz
 
Using Android Things to Detect & Exterminate Reptilians
Using Android Things to Detect & Exterminate ReptiliansUsing Android Things to Detect & Exterminate Reptilians
Using Android Things to Detect & Exterminate ReptiliansNilhcem
 
Client-side Rendering with AngularJS
Client-side Rendering with AngularJSClient-side Rendering with AngularJS
Client-side Rendering with AngularJSDavid Lapsley
 
Art & music vs Google App Engine
Art & music vs Google App EngineArt & music vs Google App Engine
Art & music vs Google App Enginethomas alisi
 
Owl: The New Odoo UI Framework
Owl: The New Odoo UI FrameworkOwl: The New Odoo UI Framework
Owl: The New Odoo UI FrameworkOdoo
 
Redux Sagas - React Alicante
Redux Sagas - React AlicanteRedux Sagas - React Alicante
Redux Sagas - React AlicanteIgnacio Martín
 
Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Ben Lesh
 
Source Code for Dpilot
Source Code for Dpilot Source Code for Dpilot
Source Code for Dpilot Nidhi Chauhan
 
Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots DeepAnshu Sharma
 
Swift Montevideo Meetup - iPhone, una herramienta medica
Swift Montevideo Meetup - iPhone, una herramienta medicaSwift Montevideo Meetup - iPhone, una herramienta medica
Swift Montevideo Meetup - iPhone, una herramienta medicaWashington Miranda
 
Tweaking the interactive grid
Tweaking the interactive gridTweaking the interactive grid
Tweaking the interactive gridRoel Hartman
 
Redux saga: managing your side effects. Also: generators in es6
Redux saga: managing your side effects. Also: generators in es6Redux saga: managing your side effects. Also: generators in es6
Redux saga: managing your side effects. Also: generators in es6Ignacio Martín
 
The evolution of redux action creators
The evolution of redux action creatorsThe evolution of redux action creators
The evolution of redux action creatorsGeorge Bukhanov
 
You will learn RxJS in 2017
You will learn RxJS in 2017You will learn RxJS in 2017
You will learn RxJS in 2017名辰 洪
 
Get started with YUI
Get started with YUIGet started with YUI
Get started with YUIAdam Lu
 
Home Automation with Android Things and the Google Assistant
Home Automation with Android Things and the Google AssistantHome Automation with Android Things and the Google Assistant
Home Automation with Android Things and the Google AssistantNilhcem
 

What's hot (17)

The redux saga begins
The redux saga beginsThe redux saga begins
The redux saga begins
 
Using Android Things to Detect & Exterminate Reptilians
Using Android Things to Detect & Exterminate ReptiliansUsing Android Things to Detect & Exterminate Reptilians
Using Android Things to Detect & Exterminate Reptilians
 
Client-side Rendering with AngularJS
Client-side Rendering with AngularJSClient-side Rendering with AngularJS
Client-side Rendering with AngularJS
 
Art & music vs Google App Engine
Art & music vs Google App EngineArt & music vs Google App Engine
Art & music vs Google App Engine
 
Side effects-con-redux
Side effects-con-reduxSide effects-con-redux
Side effects-con-redux
 
Owl: The New Odoo UI Framework
Owl: The New Odoo UI FrameworkOwl: The New Odoo UI Framework
Owl: The New Odoo UI Framework
 
Redux Sagas - React Alicante
Redux Sagas - React AlicanteRedux Sagas - React Alicante
Redux Sagas - React Alicante
 
Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016
 
Source Code for Dpilot
Source Code for Dpilot Source Code for Dpilot
Source Code for Dpilot
 
Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots
 
Swift Montevideo Meetup - iPhone, una herramienta medica
Swift Montevideo Meetup - iPhone, una herramienta medicaSwift Montevideo Meetup - iPhone, una herramienta medica
Swift Montevideo Meetup - iPhone, una herramienta medica
 
Tweaking the interactive grid
Tweaking the interactive gridTweaking the interactive grid
Tweaking the interactive grid
 
Redux saga: managing your side effects. Also: generators in es6
Redux saga: managing your side effects. Also: generators in es6Redux saga: managing your side effects. Also: generators in es6
Redux saga: managing your side effects. Also: generators in es6
 
The evolution of redux action creators
The evolution of redux action creatorsThe evolution of redux action creators
The evolution of redux action creators
 
You will learn RxJS in 2017
You will learn RxJS in 2017You will learn RxJS in 2017
You will learn RxJS in 2017
 
Get started with YUI
Get started with YUIGet started with YUI
Get started with YUI
 
Home Automation with Android Things and the Google Assistant
Home Automation with Android Things and the Google AssistantHome Automation with Android Things and the Google Assistant
Home Automation with Android Things and the Google Assistant
 

Viewers also liked

Inspirational research medea
Inspirational research medeaInspirational research medea
Inspirational research medeaepgober
 
Our classroom policies
Our classroom policiesOur classroom policies
Our classroom policiesfowler210
 
Angular.JS: Do it right
Angular.JS: Do it rightAngular.JS: Do it right
Angular.JS: Do it rightEugene Zharkov
 
Medea: elements and principles
Medea: elements and principlesMedea: elements and principles
Medea: elements and principlesepgober
 
Medea: Final Light Design
Medea: Final Light DesignMedea: Final Light Design
Medea: Final Light Designepgober
 
Medea: Set Design
Medea: Set DesignMedea: Set Design
Medea: Set Designepgober
 
Final collage
Final collageFinal collage
Final collageepgober
 
Final Medea Set Design
Final Medea Set DesignFinal Medea Set Design
Final Medea Set Designepgober
 
Theatre metaphor
Theatre metaphorTheatre metaphor
Theatre metaphorepgober
 
Design tools
Design toolsDesign tools
Design toolsepgober
 
FINAL MEDEA LIGHT DESIGN
FINAL MEDEA LIGHT DESIGNFINAL MEDEA LIGHT DESIGN
FINAL MEDEA LIGHT DESIGNepgober
 
How to be a good frontend developer
How to be a good frontend developerHow to be a good frontend developer
How to be a good frontend developerEugene Zharkov
 
Medea: Costume design
Medea: Costume designMedea: Costume design
Medea: Costume designepgober
 
Что там в summary
Что там в summaryЧто там в summary
Что там в summaryEugene Zharkov
 
Mnrega & clotehes as a scenario
Mnrega & clotehes as a scenarioMnrega & clotehes as a scenario
Mnrega & clotehes as a scenariohyderali123
 
Internal appraisal of the firm
Internal appraisal of the firmInternal appraisal of the firm
Internal appraisal of the firmhyderali123
 

Viewers also liked (19)

Inspirational research medea
Inspirational research medeaInspirational research medea
Inspirational research medea
 
Our classroom policies
Our classroom policiesOur classroom policies
Our classroom policies
 
Angular.JS: Do it right
Angular.JS: Do it rightAngular.JS: Do it right
Angular.JS: Do it right
 
Welcome to Health Managing Group
Welcome to Health Managing GroupWelcome to Health Managing Group
Welcome to Health Managing Group
 
WinRT Holy COw
WinRT Holy COwWinRT Holy COw
WinRT Holy COw
 
Medea: elements and principles
Medea: elements and principlesMedea: elements and principles
Medea: elements and principles
 
Medea: Final Light Design
Medea: Final Light DesignMedea: Final Light Design
Medea: Final Light Design
 
Medea: Set Design
Medea: Set DesignMedea: Set Design
Medea: Set Design
 
Final collage
Final collageFinal collage
Final collage
 
Final Medea Set Design
Final Medea Set DesignFinal Medea Set Design
Final Medea Set Design
 
Theatre metaphor
Theatre metaphorTheatre metaphor
Theatre metaphor
 
Design tools
Design toolsDesign tools
Design tools
 
FINAL MEDEA LIGHT DESIGN
FINAL MEDEA LIGHT DESIGNFINAL MEDEA LIGHT DESIGN
FINAL MEDEA LIGHT DESIGN
 
How to be a good frontend developer
How to be a good frontend developerHow to be a good frontend developer
How to be a good frontend developer
 
Medea: Costume design
Medea: Costume designMedea: Costume design
Medea: Costume design
 
Что там в summary
Что там в summaryЧто там в summary
Что там в summary
 
Mnrega & clotehes as a scenario
Mnrega & clotehes as a scenarioMnrega & clotehes as a scenario
Mnrega & clotehes as a scenario
 
Elm: give it a try
Elm: give it a tryElm: give it a try
Elm: give it a try
 
Internal appraisal of the firm
Internal appraisal of the firmInternal appraisal of the firm
Internal appraisal of the firm
 

Similar to AngularJS: Good parts

Tech Talk #4 : RxJava and Using RxJava in MVP - Dương Văn Tới
Tech Talk #4 : RxJava and Using RxJava in MVP - Dương Văn TớiTech Talk #4 : RxJava and Using RxJava in MVP - Dương Văn Tới
Tech Talk #4 : RxJava and Using RxJava in MVP - Dương Văn TớiNexus FrontierTech
 
Angular2 & ngrx/store: Game of States
Angular2 & ngrx/store: Game of StatesAngular2 & ngrx/store: Game of States
Angular2 & ngrx/store: Game of StatesOren Farhi
 
AngularJS for Java Developers
AngularJS for Java DevelopersAngularJS for Java Developers
AngularJS for Java DevelopersLoc Nguyen
 
Understanding backbonejs
Understanding backbonejsUnderstanding backbonejs
Understanding backbonejsNick Lee
 
Angular js 2.0, ng poznań 20.11
Angular js 2.0, ng poznań 20.11Angular js 2.0, ng poznań 20.11
Angular js 2.0, ng poznań 20.11Kamil Augustynowicz
 
Modules and injector
Modules and injectorModules and injector
Modules and injectorEyal Vardi
 
Swift Montevideo Meetup - iPhone, una herramienta medica
Swift Montevideo Meetup - iPhone, una herramienta medicaSwift Montevideo Meetup - iPhone, una herramienta medica
Swift Montevideo Meetup - iPhone, una herramienta medicaWashington Miranda
 
Angular the Good Parts
Angular the Good PartsAngular the Good Parts
Angular the Good PartsKrzysztof Kula
 
Ultimate Introduction To AngularJS
Ultimate Introduction To AngularJSUltimate Introduction To AngularJS
Ultimate Introduction To AngularJSJacopo Nardiello
 
How Angular2 Can Improve Your AngularJS Apps Today!
How Angular2 Can Improve Your AngularJS Apps Today!How Angular2 Can Improve Your AngularJS Apps Today!
How Angular2 Can Improve Your AngularJS Apps Today!Nir Kaufman
 
Migrating to Angular 2
Migrating to Angular 2Migrating to Angular 2
Migrating to Angular 2FITC
 
Commit University - Exploring Angular 2
Commit University - Exploring Angular 2Commit University - Exploring Angular 2
Commit University - Exploring Angular 2Commit University
 
Angular1x and Angular 2 for Beginners
Angular1x and Angular 2 for BeginnersAngular1x and Angular 2 for Beginners
Angular1x and Angular 2 for BeginnersOswald Campesato
 
Opinionated AngularJS
Opinionated AngularJSOpinionated AngularJS
Opinionated AngularJSprabhutech
 
MEAN - Notes from the field (Full-Stack Development with Javascript)
MEAN - Notes from the field (Full-Stack Development with Javascript)MEAN - Notes from the field (Full-Stack Development with Javascript)
MEAN - Notes from the field (Full-Stack Development with Javascript)Chris Clarke
 
Introduction to Angular js 2.0
Introduction to Angular js 2.0Introduction to Angular js 2.0
Introduction to Angular js 2.0Nagaraju Sangam
 

Similar to AngularJS: Good parts (20)

Tech Talk #4 : RxJava and Using RxJava in MVP - Dương Văn Tới
Tech Talk #4 : RxJava and Using RxJava in MVP - Dương Văn TớiTech Talk #4 : RxJava and Using RxJava in MVP - Dương Văn Tới
Tech Talk #4 : RxJava and Using RxJava in MVP - Dương Văn Tới
 
Munchkin
MunchkinMunchkin
Munchkin
 
Angular2 & ngrx/store: Game of States
Angular2 & ngrx/store: Game of StatesAngular2 & ngrx/store: Game of States
Angular2 & ngrx/store: Game of States
 
AngularJS for Java Developers
AngularJS for Java DevelopersAngularJS for Java Developers
AngularJS for Java Developers
 
Understanding backbonejs
Understanding backbonejsUnderstanding backbonejs
Understanding backbonejs
 
Angular js 2.0, ng poznań 20.11
Angular js 2.0, ng poznań 20.11Angular js 2.0, ng poznań 20.11
Angular js 2.0, ng poznań 20.11
 
I os 04
I os 04I os 04
I os 04
 
Modules and injector
Modules and injectorModules and injector
Modules and injector
 
Swift Montevideo Meetup - iPhone, una herramienta medica
Swift Montevideo Meetup - iPhone, una herramienta medicaSwift Montevideo Meetup - iPhone, una herramienta medica
Swift Montevideo Meetup - iPhone, una herramienta medica
 
Angular the Good Parts
Angular the Good PartsAngular the Good Parts
Angular the Good Parts
 
Ultimate Introduction To AngularJS
Ultimate Introduction To AngularJSUltimate Introduction To AngularJS
Ultimate Introduction To AngularJS
 
How Angular2 Can Improve Your AngularJS Apps Today!
How Angular2 Can Improve Your AngularJS Apps Today!How Angular2 Can Improve Your AngularJS Apps Today!
How Angular2 Can Improve Your AngularJS Apps Today!
 
Vue js and Dyploma
Vue js and DyplomaVue js and Dyploma
Vue js and Dyploma
 
AngularJs
AngularJsAngularJs
AngularJs
 
Migrating to Angular 2
Migrating to Angular 2Migrating to Angular 2
Migrating to Angular 2
 
Commit University - Exploring Angular 2
Commit University - Exploring Angular 2Commit University - Exploring Angular 2
Commit University - Exploring Angular 2
 
Angular1x and Angular 2 for Beginners
Angular1x and Angular 2 for BeginnersAngular1x and Angular 2 for Beginners
Angular1x and Angular 2 for Beginners
 
Opinionated AngularJS
Opinionated AngularJSOpinionated AngularJS
Opinionated AngularJS
 
MEAN - Notes from the field (Full-Stack Development with Javascript)
MEAN - Notes from the field (Full-Stack Development with Javascript)MEAN - Notes from the field (Full-Stack Development with Javascript)
MEAN - Notes from the field (Full-Stack Development with Javascript)
 
Introduction to Angular js 2.0
Introduction to Angular js 2.0Introduction to Angular js 2.0
Introduction to Angular js 2.0
 

More from Eugene Zharkov

Monorepo: React + React Native. React Alicante
Monorepo:  React + React Native. React Alicante Monorepo:  React + React Native. React Alicante
Monorepo: React + React Native. React Alicante Eugene Zharkov
 
Monorepo: React Web & React Native
Monorepo: React Web & React NativeMonorepo: React Web & React Native
Monorepo: React Web & React NativeEugene Zharkov
 
Create React Native App vs Expo vs Manually
Create React Native App vs Expo vs ManuallyCreate React Native App vs Expo vs Manually
Create React Native App vs Expo vs ManuallyEugene Zharkov
 
Build automation with Fastlane
Build automation with FastlaneBuild automation with Fastlane
Build automation with FastlaneEugene Zharkov
 
React Native Animation
React Native AnimationReact Native Animation
React Native AnimationEugene Zharkov
 
React Native: Hurdle Race
React Native: Hurdle RaceReact Native: Hurdle Race
React Native: Hurdle RaceEugene Zharkov
 
Burn your grass with react native
Burn your grass with react nativeBurn your grass with react native
Burn your grass with react nativeEugene Zharkov
 
Фронтенд сказки
Фронтенд сказкиФронтенд сказки
Фронтенд сказкиEugene Zharkov
 
Cycle.js: Functional and Reactive
Cycle.js: Functional and ReactiveCycle.js: Functional and Reactive
Cycle.js: Functional and ReactiveEugene Zharkov
 
Switch to React.js from AngularJS developer
Switch to React.js from AngularJS developerSwitch to React.js from AngularJS developer
Switch to React.js from AngularJS developerEugene Zharkov
 
Mobile applications in a new way with React Native
Mobile applications in a new way with React NativeMobile applications in a new way with React Native
Mobile applications in a new way with React NativeEugene Zharkov
 
Angular 2: Всех переиграл
Angular 2: Всех переигралAngular 2: Всех переиграл
Angular 2: Всех переигралEugene Zharkov
 
Angular 2.0: Brighter future?
Angular 2.0: Brighter future?Angular 2.0: Brighter future?
Angular 2.0: Brighter future?Eugene Zharkov
 
Как объяснить на платьях процесс разработки?
Как объяснить на платьях процесс разработки?Как объяснить на платьях процесс разработки?
Как объяснить на платьях процесс разработки?Eugene Zharkov
 
SignalR: Add real-time to your applications
SignalR: Add real-time to your applicationsSignalR: Add real-time to your applications
SignalR: Add real-time to your applicationsEugene Zharkov
 
Roslyn compiler as a service
Roslyn compiler as a serviceRoslyn compiler as a service
Roslyn compiler as a serviceEugene Zharkov
 
Creating windows store java script apps
Creating windows store java script appsCreating windows store java script apps
Creating windows store java script appsEugene Zharkov
 
Big Bang Theory of JavaScript Metro Applications
Big Bang Theory of JavaScript Metro ApplicationsBig Bang Theory of JavaScript Metro Applications
Big Bang Theory of JavaScript Metro ApplicationsEugene Zharkov
 
Windows 8 app java script dark side
Windows 8 app java script dark sideWindows 8 app java script dark side
Windows 8 app java script dark sideEugene Zharkov
 

More from Eugene Zharkov (20)

Monorepo: React + React Native. React Alicante
Monorepo:  React + React Native. React Alicante Monorepo:  React + React Native. React Alicante
Monorepo: React + React Native. React Alicante
 
Monorepo: React Web & React Native
Monorepo: React Web & React NativeMonorepo: React Web & React Native
Monorepo: React Web & React Native
 
Create React Native App vs Expo vs Manually
Create React Native App vs Expo vs ManuallyCreate React Native App vs Expo vs Manually
Create React Native App vs Expo vs Manually
 
Build automation with Fastlane
Build automation with FastlaneBuild automation with Fastlane
Build automation with Fastlane
 
GraphQL and/or REST
GraphQL and/or RESTGraphQL and/or REST
GraphQL and/or REST
 
React Native Animation
React Native AnimationReact Native Animation
React Native Animation
 
React Native: Hurdle Race
React Native: Hurdle RaceReact Native: Hurdle Race
React Native: Hurdle Race
 
Burn your grass with react native
Burn your grass with react nativeBurn your grass with react native
Burn your grass with react native
 
Фронтенд сказки
Фронтенд сказкиФронтенд сказки
Фронтенд сказки
 
Cycle.js: Functional and Reactive
Cycle.js: Functional and ReactiveCycle.js: Functional and Reactive
Cycle.js: Functional and Reactive
 
Switch to React.js from AngularJS developer
Switch to React.js from AngularJS developerSwitch to React.js from AngularJS developer
Switch to React.js from AngularJS developer
 
Mobile applications in a new way with React Native
Mobile applications in a new way with React NativeMobile applications in a new way with React Native
Mobile applications in a new way with React Native
 
Angular 2: Всех переиграл
Angular 2: Всех переигралAngular 2: Всех переиграл
Angular 2: Всех переиграл
 
Angular 2.0: Brighter future?
Angular 2.0: Brighter future?Angular 2.0: Brighter future?
Angular 2.0: Brighter future?
 
Как объяснить на платьях процесс разработки?
Как объяснить на платьях процесс разработки?Как объяснить на платьях процесс разработки?
Как объяснить на платьях процесс разработки?
 
SignalR: Add real-time to your applications
SignalR: Add real-time to your applicationsSignalR: Add real-time to your applications
SignalR: Add real-time to your applications
 
Roslyn compiler as a service
Roslyn compiler as a serviceRoslyn compiler as a service
Roslyn compiler as a service
 
Creating windows store java script apps
Creating windows store java script appsCreating windows store java script apps
Creating windows store java script apps
 
Big Bang Theory of JavaScript Metro Applications
Big Bang Theory of JavaScript Metro ApplicationsBig Bang Theory of JavaScript Metro Applications
Big Bang Theory of JavaScript Metro Applications
 
Windows 8 app java script dark side
Windows 8 app java script dark sideWindows 8 app java script dark side
Windows 8 app java script dark side
 

Recently uploaded

SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Recently uploaded (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

AngularJS: Good parts