SlideShare ist ein Scribd-Unternehmen logo
1 von 38
backbone.JS and his friends
Dima Tarasenko, 2013
Skull bone...
Phalanges bone…
Rib bone…
Yes! Backbone!!!

Addy Osmani thinks about JS framework
Framework shouldn’t be slow and fat
Community
Good Documented

Fast

Intuitive

Success projects

Small

Examples

Framework should be …
Backbone.js is a lightweight JavaScript library that adds
structure to your client-side code. It makes it easy to
manage
and
decouple
concerns
in
your
application, leaving you with code that is more
maintainable in the long term. It’s a library, rather than a
framework, that plays well with others and scales
well, from embedded widgets to large-scale applications.
© Addy Osmani
So, it’s great!!!
Butt!
It’s only a code organizer!
backbone.JS
Collections
Routers
Models
Events
Views
History

Real Application

≈ 6/26 ≈ 23%

OOP core
Dependencies
Collections/Routers/Models..
Controllers
Layouts
Utilities
DOM Query
Error handling
Validators
REST support
Internalization
Application class
Normalization layer
Session management
Data Readers/Writers
Permissions management
Integration of all modules
Build system
Unit test framework
…
AAAAAAAAA!!!
Session management
OOP core

Dependency manager
Base classes
Controllers Build system

Utilities

Integration

Layouts

Unit tests

Permissions

REST support

UI components

Error handling

Validators

Oh my goodness…

Other…
Time lack
No consistency
Long code reviews
Our solutions are bad

No unit tests

A lot of bugs…
bugs…
bugs…

Oooops
What should we do?
Scenario 1: do it like real cowboys!!!
For example, N13 - OOP Library
•
•
•
•
•
•
•
•
•
•

Mixins classes
Statics support
String namespaces
Classical inheritance
Class configuration
Constructors
Super method calls
Mixins methods calls
Dependencies manager
Other libraries compatibility
N13.define('App.View', {
extend : 'Backbone.View',
statics : {
prop: 'hello',
func: function () {
return this.prop;
}
},
configs : {cfg: 'default'},
requires: ['App.Class1'],
init
: function () {
this.callParent();
}
});

// String namespace
// Parent class

var cl = new App.View({
cfg: 'new value'
});

// Instantiates class
// Class configuration

// Static property
// Static method
// Correct this - App.Class

//
//
//
//

Сonfiguration property
Will be loaded first
Constructor function
Calls Backbone.View::init()
N13.define('Mixin', {method: function () {return ' mixed';}});
N13.define('Base', {method: function () {return ' base'; }});

N13.define('App.Class', {
extend: 'Base',
mixins: {mix: 'Mixin'},
method: function () {
return 'Hello' +
this.callMixin('mix') +
this.callParent();
}
});

//
//
//
//

App.Class is a function
Parent class
List of mixins
Overridden method

var cl = new App.Class();
cl.method();

// App.Class instantiation
// returns 'hello mixed base'

// Calls method() from Base
// Calls method() from Mixin
Looks great!!!
Butt!
OOP Library is 1/26 part of real application
And three weeks of work
How developer thinks about himself
The reality
So, it’s possible, but it took a lot of time
Scenario 2: do it like real developers!
OOP core

V

V

V

Dependencies

V

V

V

Collections/Models/Routers/Controllers

V

V

V

Embedded Widgets

V*

V

V

Layouts

V

V

V

DOM Query

V

V

V

Error handling

X

X

X

Validators

V

V

V

REST support

V

V

V

Internalization

V

V

V

Application class

V

V

V

Session manager

X

X

X

Data management

V

V

V

Build system

V

V

X

Unit test

V

V

V
* - powerful feature
ExtJs

Dojo toolkit
Yahoo UI
backbone.JS

1 dev - $595,
20 devs - $11 185
free
free
free
So, what???!!!
With backbone, you should be true developer!
Or, you will get this…
So, how can we measure our developers?
Developers skills* at SoftServe
T
J
M
S
L
A
C

(Trainee)
(Junior)
(Mid)
(Senior)
(Lead)
(Architect)
(Chuck Norris)

=
=
=
=
=
=
=

0
1
2
3
4
5
16

* Pro adds 0.5 for every value
Project success formula
SoftServe success range

[ 0.8; ∞)

My success range
(1; ∞)
For example
Summary:
• With backbone.JS, we should invent the
wheel. It tooks a lot of time
• Frameworks are better then our “hand made”
• Skilled people - are very important
Questions?

Weitere ähnliche Inhalte

Was ist angesagt?

AngularJS for designers and developers
AngularJS for designers and developersAngularJS for designers and developers
AngularJS for designers and developers
Kai Koenig
 
Creating the interfaces of the future with the APIs of today
Creating the interfaces of the future with the APIs of todayCreating the interfaces of the future with the APIs of today
Creating the interfaces of the future with the APIs of today
gerbille
 

Was ist angesagt? (20)

Client Side MVC & Angular
Client Side MVC & AngularClient Side MVC & Angular
Client Side MVC & Angular
 
AngularJS for designers and developers
AngularJS for designers and developersAngularJS for designers and developers
AngularJS for designers and developers
 
Backbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCBackbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVC
 
Protocol Oriented MVVM - Auckland iOS Meetup
Protocol Oriented MVVM - Auckland iOS MeetupProtocol Oriented MVVM - Auckland iOS Meetup
Protocol Oriented MVVM - Auckland iOS Meetup
 
AngularJS Architecture
AngularJS ArchitectureAngularJS Architecture
AngularJS Architecture
 
AngularJS Basic Training
AngularJS Basic TrainingAngularJS Basic Training
AngularJS Basic Training
 
Workshop 9: BackboneJS y patrones MVC
Workshop 9: BackboneJS y patrones MVCWorkshop 9: BackboneJS y patrones MVC
Workshop 9: BackboneJS y patrones MVC
 
Javascript Module Patterns
Javascript Module PatternsJavascript Module Patterns
Javascript Module Patterns
 
Workshop 12: AngularJS Parte I
Workshop 12: AngularJS Parte IWorkshop 12: AngularJS Parte I
Workshop 12: AngularJS Parte I
 
Building scalable applications with angular js
Building scalable applications with angular jsBuilding scalable applications with angular js
Building scalable applications with angular js
 
An Introduction To Testing In AngularJS Applications
An Introduction To Testing In AngularJS Applications An Introduction To Testing In AngularJS Applications
An Introduction To Testing In AngularJS Applications
 
The AngularJS way
The AngularJS wayThe AngularJS way
The AngularJS way
 
Creating the interfaces of the future with the APIs of today
Creating the interfaces of the future with the APIs of todayCreating the interfaces of the future with the APIs of today
Creating the interfaces of the future with the APIs of today
 
Swift Delhi: Practical POP
Swift Delhi: Practical POPSwift Delhi: Practical POP
Swift Delhi: Practical POP
 
Workshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design PatternsWorkshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design Patterns
 
Patterns Are Good For Managers
Patterns Are Good For ManagersPatterns Are Good For Managers
Patterns Are Good For Managers
 
Workshop 14: AngularJS Parte III
Workshop 14: AngularJS Parte IIIWorkshop 14: AngularJS Parte III
Workshop 14: AngularJS Parte III
 
Workshop 16: EmberJS Parte I
Workshop 16: EmberJS Parte IWorkshop 16: EmberJS Parte I
Workshop 16: EmberJS Parte I
 
BackboneJS + ReactJS
BackboneJS + ReactJSBackboneJS + ReactJS
BackboneJS + ReactJS
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 

Ähnlich wie Backbone.js and friends

Java Technology
Java TechnologyJava Technology
Java Technology
ifnu bima
 
How to disassemble one monster app into an ecosystem of 30
How to disassemble one monster app into an ecosystem of 30How to disassemble one monster app into an ecosystem of 30
How to disassemble one monster app into an ecosystem of 30
fiyuer
 
Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1
Michał Orman
 

Ähnlich wie Backbone.js and friends (20)

Writing a massive javascript app
Writing a massive javascript appWriting a massive javascript app
Writing a massive javascript app
 
Tuning and optimizing webcenter spaces application white paper
Tuning and optimizing webcenter spaces application white paperTuning and optimizing webcenter spaces application white paper
Tuning and optimizing webcenter spaces application white paper
 
Java Technology
Java TechnologyJava Technology
Java Technology
 
React & Redux JS
React & Redux JS React & Redux JS
React & Redux JS
 
Create an application with ember
Create an application with ember Create an application with ember
Create an application with ember
 
How to disassemble one monster app into an ecosystem of 30
How to disassemble one monster app into an ecosystem of 30How to disassemble one monster app into an ecosystem of 30
How to disassemble one monster app into an ecosystem of 30
 
Angular training - Day 3 - custom directives, $http, $resource, setup with ye...
Angular training - Day 3 - custom directives, $http, $resource, setup with ye...Angular training - Day 3 - custom directives, $http, $resource, setup with ye...
Angular training - Day 3 - custom directives, $http, $resource, setup with ye...
 
Backbone js
Backbone jsBackbone js
Backbone js
 
Os Haase
Os HaaseOs Haase
Os Haase
 
Backbone
BackboneBackbone
Backbone
 
Exploring Symfony's Code
Exploring Symfony's CodeExploring Symfony's Code
Exploring Symfony's Code
 
RequireJS
RequireJSRequireJS
RequireJS
 
Ionic framework one day training
Ionic framework one day trainingIonic framework one day training
Ionic framework one day training
 
Spring MVC 5 & Hibernate 5 Integration
Spring MVC 5 & Hibernate 5 IntegrationSpring MVC 5 & Hibernate 5 Integration
Spring MVC 5 & Hibernate 5 Integration
 
Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1
 
Persistence
PersistencePersistence
Persistence
 
I Heard React Was Good
I Heard React Was GoodI Heard React Was Good
I Heard React Was Good
 
Reactive application using meteor
Reactive application using meteorReactive application using meteor
Reactive application using meteor
 
Mobile optimization
Mobile optimizationMobile optimization
Mobile optimization
 
Content-Driven Apps with React
Content-Driven Apps with ReactContent-Driven Apps with React
Content-Driven Apps with React
 

Kürzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Kürzlich hochgeladen (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

Backbone.js and friends

Hinweis der Redaktion

  1. Здесь нужно рассказать о чем презентация и в чем её цель. Цель – показать, что backbone.JS является далеко не полным решением для построения средних и больших апликаций.
  2. Всё из вышеперечисленного есть в backbone.JS