際際滷

際際滷Share a Scribd company logo
&

ako vytvori泥 邸k叩lovate直n炭 Javascript web-aplik叩ciu
Preo Reqire.JS?

    Web str叩nky => Web aplik叩cie
   st炭pa komplexita k坦du ako aplik叩cia rastie



    Run箪 wiring sa st叩va nemo転n箪
   developeri potrebuj炭 n叩stroje na modulariz叩ciu



    Optimalizovan箪 deployment
   v箪sledn箪 build s p叩r HTTP rqs
Web str叩nky => Web aplik叩cie
klasick辿 web str叩nky vr叩tia v転dy cel箪 dokument
Web str叩nky => Web aplik叩cie
klasick辿 web str叩nky vr叩tia v転dy cel箪 dokument
Web str叩nky => Web aplik叩cie
klasick辿 web str叩nky vr叩tia v転dy cel箪 dokument
Web str叩nky => Web aplik叩cie
klasick辿 web str叩nky vr叩tia v転dy cel箪 dokument
Web str叩nky => Web aplik叩cie
klasick辿 web str叩nky vr叩tia v転dy cel箪 dokument
Web str叩nky => Web aplik叩cie
klasick辿 web str叩nky vr叩tia v転dy cel箪 dokument
Web str叩nky => Web aplik叩cie
Web-app bootstrapne, potom u転 posiela iba payload
Web str叩nky => Web aplik叩cie
Web-app bootstrapne, potom u転 posiela iba payload
Web str叩nky => Web aplik叩cie
Web-app bootstrapne, potom u転 posiela iba payload
Web str叩nky => Web aplik叩cie
Web-app bootstrapne, potom u転 posiela iba payload
Web str叩nky => Web aplik叩cie
Web-app bootstrapne, potom u転 posiela iba payload
Web str叩nky => Web aplik叩cie
Web-app bootstrapne, potom u転 posiela iba payload
Preo web-aplik叩cie
R箪chlos泥
Preo web-aplik叩cie
R箪chlos泥
 Jacob Nielsen o asoch odozvy

 0.1 seconds gives the feeling of instantaneous response  that is, the outcome feels
  like it was caused by the user, not the computer. This level of responsiveness is
  essential to support the feeling of direct manipulation.

 1 second keeps the user's 鍖ow of thought seamless. Users can sense a delay, and thus
  know the computer is generating the outcome, but they still feel in control of the
  overall experience and that they're moving freely rather than waiting on the computer.

 10 seconds keeps the user's attention. From 110 seconds, users de鍖nitely feel at the
  mercy of the computer and wish it was faster, but they can handle it. After 10 seconds,
  they start thinking about other things, making it harder to get their brains back on
  track once the computer 鍖nally does respond.
Preo web-aplik叩cie
Tun箪 klient je r箪chlej邸鱈

  Spracova泥 a posla泥 JSON je jednoduch邸ie ako HTML

  Niektor辿 interakcie nepotrebuj炭 spolupr叩cu servera

  Optimistick辿 server oper叩cie
Preo web-aplik叩cie
Server je mtvy

 Je jednoduch辿 zaa泥 tun箪 projekt:
   statick辿 HTML
   engine v Javascripte
   odozvy servera z pripraven箪ch .JSON
Preo web-aplik叩cie
Server je mtvy

 Je jednoduch辿 zaa泥 tun箪 projekt:
   statick辿 HTML
   engine v Javascripte
   odozvy servera z pripraven箪ch .JSON


 Prida泥 転iv箪 server
 m担転ete kedyko直vek!
Run箪 wiring sa st叩va nemo転n箪
V辰邸ie JS aplik叩cie rast炭 v chaos
Run箪 wiring sa st叩va nemo転n箪
Run箪 wiring sa st叩va nemo転n箪
Kto by toto chcel rune wirova泥?
Front-end devs po転aduj炭 pekn辿
API pre <script> loading
Front-end devs po転aduj炭 pekn辿
API pre <script> loading
Front-end devs po転aduj炭 pekn辿
API pre <script> loading




  require() nem担転e by泥 synchr坦nna oper叩cia
inak browser bude blokova泥
Front-end devs po転aduj炭 pekn辿
API pre <script> loading
Dostupn辿 mo転nosti
<script> loadingu v prehliadaoch
Dostupn辿 mo転nosti
<script> loadingu v prehliadaoch
XHR




                  /js/types/person.js




      var Person = function() { /* foo bar */ };
Dostupn辿 mo転nosti
<script> loadingu v prehliadaoch
XHR

 Potrebuje eval(), k坦d modulu je string!

 Podora cross-origin-resource-sharing (CORS) nie je 炭pln叩

 Poas ladenia nesedia 鱈sla riadkov s p担vodn箪m k坦dom
Dostupn辿 mo転nosti
<script> loadingu v prehliadaoch
XHR

 Potrebuje eval(), k坦d modulu je string!

 Podora cross-origin-resource-sharing (CORS) nie je 炭pln叩

 Poas ladenia nesedia 鱈sla riadkov s p担vodn箪m k坦dom

 D担le転it叩 issue:
   potrebujeme pozna泥 z叩vislosti modulu pred spusten鱈m
Dostupn辿 mo転nosti
<script> loadingu v prehliadaoch
Webworkers
Dostupn辿 mo転nosti
<script> loadingu v prehliadaoch
Webworkers
Dostupn辿 mo転nosti
<script> loadingu v prehliadaoch
Webworkers
Dostupn辿 mo転nosti
<script> loadingu v prehliadaoch
Webworkers

 Potrebuje eval(), k坦d modulu je string!

 Podpora je e邸te slab邸ia ako pri CORS

 Poas ladenia nesedia 鱈sla riadkov s p担vodn箪m k坦dom
Dostupn辿 mo転nosti
<script> loadingu v prehliadaoch
document.write()
Dostupn辿 mo転nosti
<script> loadingu v prehliadaoch
document.write()

 Nefunguje po na鱈tan鱈 str叩nky

 document.write() blokuje
Dostupn辿 mo転nosti
<script> loadingu v prehliadaoch
M叩me v担bec nejak炭 mo転nos泥?
Dostupn辿 mo転nosti
<script> loadingu v prehliadaoch
NO!
dynamick辿 vkladanie do DOMu
A o to d担le転it辿 issue?
potrebujeme pozna泥 z叩vislosti modulu pred spusten鱈m
A o to d担le転it辿 issue?
potrebujeme pozna泥 z叩vislosti modulu pred spusten鱈m

obal鱈me k坦d modulu volan鱈m predpripravenej funkcie
A o to d担le転it辿 issue?
potrebujeme pozna泥 z叩vislosti modulu pred spusten鱈m

obal鱈me k坦d modulu volan鱈m predpripravenej funkcie




        vytvorili sme prv箪 *AMD modul, hey!

                                *asynchronous module de鍖nition
Require.JS
Require.JS
Require.JS
 require() - natiahni 邸peci鍖kovan辿 z叩vislosti
a spusti callback, ke je v邸etko pripraven辿




                                         *app.js
Require.JS
 require() - natiahni 邸peci鍖kovan辿 z叩vislosti
a spusti callback, ke je v邸etko pripraven辿

                        Require.JS ct鱈
                        convention over con鍖guration

                        umiestnenie z叩vislosti je relat鱈vne
                        voi volaniu require()
Require.JS
 define() - zaregistruj argument ako AMD modul,
natiahni 邸peci鍖kovan辿 z叩vislosti
a spusti callback, ke je v邸etko pripraven辿
Require.JS
statick箪 hash
Require.JS
modul bez 噛叩厩庄壊鉛看壊岳鱈
Require.JS
pomenovan箪 modul bez 噛叩厩庄壊鉛看壊岳鱈
Require.JS
modul so 噛叩厩庄壊鉛看壊泥温馨庄
Require.JS
pomenovan箪 modul so 噛叩厩庄壊鉛看壊泥温馨庄
Require.JS
pluginy
Require.JS
oslate si 転ivot 一叩厩看顎
Require.JS
require.con鍖g




                *app.js
Require.JS
require.con鍖g




                *app.js
Require.JS
require.con鍖g




      *types/student.js


                          *app.js
Require.JS
zhrnutie, preo AMD


 AMD moduly s炭 鍖exibiln辿 a async
 funguj炭 v browseri u転 teraz, aj bez zbuildenia
 podpora pluginov, je mo転n辿 natiahnu泥 aj in辿 typy ako JS
 path aliasy, viac verzi鱈 modulu (jquery1.6, jquery1.7)
 jednoznan叩 vidite直nos泥 噛叩厩庄壊鉛看壊岳鱈 modulu
 ist箪 global-namespace, de鍖n鱈cia modulu je closure
 podpora ve直k箪ch hr叩ov (jQuery, Dojo, Mootools)
Reqire.JS + Backbone.JS
ako sa kua rob鱈 v辰邸ia aplik叩cia

    Organizujte pod直a funkn箪ch celkov
   foldre Models, Views, Controllers s炭 antipattern



    Modul Application
   deffered initializers, event aggregator



    Optimalizovan箪 deployment
   v箪sledn箪 build s p叩r HTTP rqs
Organizujte pod直a funkn箪ch celkov
foldre Models, Views, Controllers s炭 antipattern
Organizujte pod直a funkn箪ch celkov
Organizujte pod直a funkn箪ch celkov
Modul Application
deffered initializers




                        *bootstrap.js
Modul Application
deffered initializers



                            *app.js




                        *category.js
Modul Application
event aggregator

Ako na komunik叩ciu
medzi dvoma views
(funkn箪mi celkami),
ktor辿 s炭 izolovan辿
initializermi?
Modul Application
event aggregator

Ako na komunik叩ciu
medzi dvoma views
(funkn箪mi celkami),
ktor辿 s炭 izolovan辿
initializermi?

Pou転ijeme in邸tanciu
app, cez ktor炭 si
moduly posielaj炭
spr叩vy
Modul Application
event aggregator




                   *category/categoryView.js
Modul Application
event aggregator




                   *category/categoryView.js
Modul Application
event aggregator




                    *predetail/collection.js
Modul Application
event aggregator




                    *predetail/collection.js
Modul Application
event aggregator, PUB-SUB pattern




                     http://blog.responsivenews.co.uk/post/21021136520/how-we-build-our-javascript
Optimalizovan箪 deployment
v箪sledn箪 build s p叩r HTTP rqs
neoptimalizovan叩
verzia je priam
hroziv叩
Optimalizovan箪 deployment
v箪sledn箪 build s p叩r HTTP rqs
r.js

  concatenation - build AMD modulov, inlining text!
  ugli鍖ing - mini鍖k叩cia js [uglify.js, google compiler (std)]
  CSS optimizing
Optimalizovan箪 deployment
v箪sledn箪 build s p叩r HTTP rqs
r.js

  concatenation - build AMD modulov, inlining text!
  ugli鍖ing - mini鍖k叩cia js
  CSS optimizing
*build.js
Optimalizovan箪 deployment
v箪sledn箪 build s p叩r HTTP rqs

 much better :)
Preo Reqire.JS?
 u転 mus鱈 by泥 jasn辿 ka転d辿mu


    AMD greatest bene鍖t isnt being able to load
    scripts on-demand, as some people may think.

    The greatest bene鍖t is the increase of the code
    organization/modularity and also the reduced
    need for globals/namespacing.




http://blog.millermedeiros.com/amd-is-better-for-the-web-than-commonjs-modules/
Zdroje
Javascript
  Prototypes and Inheritance in JavaScript

Require.JS
  adobe.com/.../javascript-architecture-requirejs-dependency-management.html
  requirejs.org/docs/api.html
  github.com/jrburke/r.js
  github.com/requirejs/example-libglobal

Backbone.JS
  lostechies.com/derickbailey/category/backbone/
  addyosmani.github.com/backbone-fundamentals/
  github.com/hautelook/vertebrae
Preo Javascript?
Preo Javascript?
THX




      @srigi

More Related Content

Similar to Require.JS & Backbone.JS (20)

Node.js @ Rubyslava
Node.js @ RubyslavaNode.js @ Rubyslava
Node.js @ Rubyslava
Ivan Srba
Mne to na notebooku funguje
Mne to na notebooku fungujeMne to na notebooku funguje
Mne to na notebooku funguje
Juraj Bednar
Academy vol.4
Academy vol.4Academy vol.4
Academy vol.4
blueweb_sk
Academy vol.4
Academy vol.4Academy vol.4
Academy vol.4
blueweb_sk
V箪kon webov箪ch anim叩ci鱈
V箪kon webov箪ch anim叩ci鱈V箪kon webov箪ch anim叩ci鱈
V箪kon webov箪ch anim叩ci鱈
blueweb_sk
GWT Workshop
GWT WorkshopGWT Workshop
GWT Workshop
seges
o s炭 to webov辿 aplik叩cie ?
o s炭 to webov辿 aplik叩cie ?o s炭 to webov辿 aplik叩cie ?
o s炭 to webov辿 aplik叩cie ?
Drahoslav Madar
Ako si vybra泥 programovac鱈 jazyk a framework?
Ako si vybra泥 programovac鱈 jazyk a framework?Ako si vybra泥 programovac鱈 jazyk a framework?
Ako si vybra泥 programovac鱈 jazyk a framework?
Jano Suchal
N叩vrh a realiz叩cia web str叩nky skriptovac鱈m jazykom PHP vr叩tane administran辿...
N叩vrh a realiz叩cia web str叩nky skriptovac鱈m jazykom PHP vr叩tane administran辿...N叩vrh a realiz叩cia web str叩nky skriptovac鱈m jazykom PHP vr叩tane administran辿...
N叩vrh a realiz叩cia web str叩nky skriptovac鱈m jazykom PHP vr叩tane administran辿...
Catana0605
V箪voj pre Google Android
V箪voj pre Google AndroidV箪voj pre Google Android
V箪voj pre Google Android
Juraj Mich叩lek
Ak箪 programovac鱈 jazyk a framework si vybra泥 a preo?
Ak箪 programovac鱈 jazyk a framework si vybra泥 a preo?Ak箪 programovac鱈 jazyk a framework si vybra泥 a preo?
Ak箪 programovac鱈 jazyk a framework si vybra泥 a preo?
Jano Suchal
Webov辿 prostredie na v箪uku refaktoriz叩cii
Webov辿 prostredie na v箪uku refaktoriz叩ciiWebov辿 prostredie na v箪uku refaktoriz叩cii
Webov辿 prostredie na v箪uku refaktoriz叩cii
samxkafejesik
qweqweqweqweqweqweqweqweqweqweqweqweqweqwe
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
qweqweqweqweqweqweqweqweqweqweqweqweqweqwe
samxkafejesik
Bezpenos泥 v kontexte RIA technol坦gi鱈
Bezpenos泥 v kontexte RIA technol坦gi鱈Bezpenos泥 v kontexte RIA technol坦gi鱈
Bezpenos泥 v kontexte RIA technol坦gi鱈
Juraj Mich叩lek
Apex day 1.0 vicejazycne aplikace lokalizace_kamil schvarcz
Apex day 1.0 vicejazycne aplikace lokalizace_kamil schvarczApex day 1.0 vicejazycne aplikace lokalizace_kamil schvarcz
Apex day 1.0 vicejazycne aplikace lokalizace_kamil schvarcz
APEX Solutions - Natural Intelligence
Codecon.sk - Ako 邸k叩lova泥 PHP str叩nky? Od malej str叩nky a転 po datacentrum
Codecon.sk - Ako 邸k叩lova泥 PHP str叩nky? Od malej str叩nky a転 po datacentrumCodecon.sk - Ako 邸k叩lova泥 PHP str叩nky? Od malej str叩nky a転 po datacentrum
Codecon.sk - Ako 邸k叩lova泥 PHP str叩nky? Od malej str叩nky a転 po datacentrum
Tomas Srnka
vod do v箪voja pre Windows Phone 7 II
vod do v箪voja pre Windows Phone 7 IIvod do v箪voja pre Windows Phone 7 II
vod do v箪voja pre Windows Phone 7 II
Igor Kulman
AppMonitor Insight Edition
AppMonitor Insight EditionAppMonitor Insight Edition
AppMonitor Insight Edition
Adam Lieskovsky
Libraries and tools for C++
Libraries and tools for C++Libraries and tools for C++
Libraries and tools for C++
Juraj Mich叩lek
Node.js @ Rubyslava
Node.js @ RubyslavaNode.js @ Rubyslava
Node.js @ Rubyslava
Ivan Srba
Mne to na notebooku funguje
Mne to na notebooku fungujeMne to na notebooku funguje
Mne to na notebooku funguje
Juraj Bednar
Academy vol.4
Academy vol.4Academy vol.4
Academy vol.4
blueweb_sk
Academy vol.4
Academy vol.4Academy vol.4
Academy vol.4
blueweb_sk
V箪kon webov箪ch anim叩ci鱈
V箪kon webov箪ch anim叩ci鱈V箪kon webov箪ch anim叩ci鱈
V箪kon webov箪ch anim叩ci鱈
blueweb_sk
GWT Workshop
GWT WorkshopGWT Workshop
GWT Workshop
seges
o s炭 to webov辿 aplik叩cie ?
o s炭 to webov辿 aplik叩cie ?o s炭 to webov辿 aplik叩cie ?
o s炭 to webov辿 aplik叩cie ?
Drahoslav Madar
Ako si vybra泥 programovac鱈 jazyk a framework?
Ako si vybra泥 programovac鱈 jazyk a framework?Ako si vybra泥 programovac鱈 jazyk a framework?
Ako si vybra泥 programovac鱈 jazyk a framework?
Jano Suchal
N叩vrh a realiz叩cia web str叩nky skriptovac鱈m jazykom PHP vr叩tane administran辿...
N叩vrh a realiz叩cia web str叩nky skriptovac鱈m jazykom PHP vr叩tane administran辿...N叩vrh a realiz叩cia web str叩nky skriptovac鱈m jazykom PHP vr叩tane administran辿...
N叩vrh a realiz叩cia web str叩nky skriptovac鱈m jazykom PHP vr叩tane administran辿...
Catana0605
V箪voj pre Google Android
V箪voj pre Google AndroidV箪voj pre Google Android
V箪voj pre Google Android
Juraj Mich叩lek
Ak箪 programovac鱈 jazyk a framework si vybra泥 a preo?
Ak箪 programovac鱈 jazyk a framework si vybra泥 a preo?Ak箪 programovac鱈 jazyk a framework si vybra泥 a preo?
Ak箪 programovac鱈 jazyk a framework si vybra泥 a preo?
Jano Suchal
Webov辿 prostredie na v箪uku refaktoriz叩cii
Webov辿 prostredie na v箪uku refaktoriz叩ciiWebov辿 prostredie na v箪uku refaktoriz叩cii
Webov辿 prostredie na v箪uku refaktoriz叩cii
samxkafejesik
qweqweqweqweqweqweqweqweqweqweqweqweqweqwe
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
qweqweqweqweqweqweqweqweqweqweqweqweqweqwe
samxkafejesik
Bezpenos泥 v kontexte RIA technol坦gi鱈
Bezpenos泥 v kontexte RIA technol坦gi鱈Bezpenos泥 v kontexte RIA technol坦gi鱈
Bezpenos泥 v kontexte RIA technol坦gi鱈
Juraj Mich叩lek
Codecon.sk - Ako 邸k叩lova泥 PHP str叩nky? Od malej str叩nky a転 po datacentrum
Codecon.sk - Ako 邸k叩lova泥 PHP str叩nky? Od malej str叩nky a転 po datacentrumCodecon.sk - Ako 邸k叩lova泥 PHP str叩nky? Od malej str叩nky a転 po datacentrum
Codecon.sk - Ako 邸k叩lova泥 PHP str叩nky? Od malej str叩nky a転 po datacentrum
Tomas Srnka
vod do v箪voja pre Windows Phone 7 II
vod do v箪voja pre Windows Phone 7 IIvod do v箪voja pre Windows Phone 7 II
vod do v箪voja pre Windows Phone 7 II
Igor Kulman
AppMonitor Insight Edition
AppMonitor Insight EditionAppMonitor Insight Edition
AppMonitor Insight Edition
Adam Lieskovsky
Libraries and tools for C++
Libraries and tools for C++Libraries and tools for C++
Libraries and tools for C++
Juraj Mich叩lek

Require.JS & Backbone.JS

Editor's Notes