Webové aplikácie

  • Nárast počtu webových aplikácií
  • Presúvanie logiky na front-end
  • Dôraz na UX, malý response time
  • Vznik SPA - single page application

SPA

  • Komplikovanie kódu na front-ende
    • organizácia kódu
    • manipulácia s DOM
    • interakcia s používateľom
  • Vznik JavaScript frameworkov

JavaScript frameworky

  • organizácia kódu
  • znovupoužiteľnosť - komponenty
  • šablóny - vykresľovanie html

Ember

  • Open-source
  • Prvý commit - 30. apríl 2011
  • Veľká komunita
  • 15,894 stars na Githube
  • Neustály vývoj
  • Ale významne menej používaný ako ostatné JS frameworky

Title Text

  • Bullet One
  • Bullet Two
  • Bullet Three

Architektúra
aplikácie

Template

  • Šablóna používateľského rozhrania
  • Html
  • {{handlebars}}
  • Dynamické generovanie obsahu stránky
<html>
   <head>
      <title>Emberjs Template</title>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/3.0.1/handlebars.min.js"></script>
      <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/ember.js/1.10.0/ember.min.js"></script>
      <script src="http://builds.emberjs.com/tags/v1.10.0-beta.3/ember-template-compiler.js"></script>
      <script src="http://builds.emberjs.com/release/ember.debug.js"></script>
      <script src="http://builds.emberjs.com/beta/ember-data.js"></script>
   </head>
   <body>
      <script type="text/x-handlebars" data-template-name="application">
         <!-- name of the template is application and it is default template -->
         <div>
            {{outlet}}
         </div>
      </script>
   </body>
</html>

Component

  • UI Widget
  • Špeciálny typ template-u
  • components/ + názov
      <script type="text/x-handlebars" data-template-name="index">
         <h2>Using setupController function:</h2>
         {{content}}
      </script>

      <script type="text/javascript">
         App = Ember.Application.create();

         App.IndexRoute = Ember.Route.extend({
            //set up the controller and its content
            setupController: function(controller) {
               controller.set('content','Welcome to Tutorials Point');
            }
         });
      </script>

Router

  • Preklad URL na template-y
  • Aktuálnosť URL
  • Parsuje query parametre
  • Rieši chyby

Model

  • Perzistencia
  • Viazaný na konkrétnu cestu (route)
  • Zobrazený pomocou template-ov
  • Umožňuje cache

Controller

  • definuje interakcie s template-om
  • poskytuje template-om dáta
      <script type="text/x-handlebars" data-template-name="index">
         <h2>Using setupController function:</h2>
         {{content}}
      </script>

      <script type="text/javascript">
         App = Ember.Application.create();

         App.IndexRoute = Ember.Route.extend({
            //set up the controller and its content
            setupController: function(controller) {
               controller.set('content','Welcome to Tutorials Point');
            }
         });
      </script>

Kto používa Ember

  • Travi CI
  • Yahoo
  • LinkedIn
  • Vine
  • ...

    http://emberjs.com/ember-users/

Ember

By patrikgallik

Ember

Small presentation about ember

  • 380