SlideShare une entreprise Scribd logo
1  sur  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?

Contenu connexe

Tendances

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
 

Tendances (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
 

Similaire à 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
 

Similaire à 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
 

Dernier

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Dernier (20)

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 

Backbone.js and friends

Notes de l'éditeur

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