Přejít k navigační liště

Zdroják » JavaScript » Ember.JS – k čemu slouží a proč se o něj zajímat

Ember.JS – k čemu slouží a proč se o něj zajímat

Články JavaScript

Javascriptový MVC framework, který nabírá na popularitě – to je Ember.JS. V dnešním článku vám ho představíme.

Tento článek je překladem textu Ember.JS – What it is and why we need to care about it, jehož autorem je Sourav Lahoti, a je zveřejněn pod licencí CC BY-SA 3.0.

Vývojáři se stále víc kloní k používání frameworků pro zjednodušení vývoje na klientské straně a chtějí ty opravdu dobré. Na tomto poli najdeme řadu hráčů, ale jen málo jich skutečně vyniká — a mezi takové patří Ember.js.

Co to je, ten Ember.js?

Ember.js je javascriptový MVC (Model–View–Controller) framework, udržovaný Ember Core týmem (v něm je Tom Dale, Yehuda Katz a další). Pomáhá vývojářům ve tvorbě ambiciózních jednostránkových webových aplikací (SPA) s důrazem na prvky, ve kterých celý web vyniká: sémantické URI, „REST“ architektura a napiš-jednou-spusť-kdekoliv trio HTML, CSS a JavaScript.

Proč se zajímat o Ember.JS?

Ember.js je pevně svázán s technologiemi, které dělají dnešní web webem. Nesnaží se od nich abstrahovat. Ember.js přináší čistý a konzistentní aplikační vývojový model. Pokud někdy bude potřeba migrovat z HTML na jinou technologii, Ember.js framework se bude vyvíjet podle aktuálních trendů na poli webových technologií.

Snadno v něm vytvoříte své vlastní “komponenty” a “šablony”, které jsou snadno srozumitelné a udržovatelné. Spolu s konzistentním způsobem pro správu vazeb (bindings) a computed vlastností nabízí Ember.js hromadu kódu, které takový framework potřebuje.

Základní koncept

Nejprve několik termínů, se kterými se při vývoji s Ember.js často setkáte, protože tvoří jeho základní stavební kameny:

Routy
Objekt Route reprezentuje stav aplikace a korespondující url.
Modely
Ke každé routě je asociovaný objekt Model, který obsahuje data asociovaná s aktuálním stavem aplikace.
Controllery
Controllery se používají pro propojení modelů a zobrazovací logiky.

Objekt Controller obvykle dědí od ObjectController, v případě, že je šablona asociovaná s jedním záznamem modelu, anebo od ArrayController, v případě, že je šablona asociovaná s polem záznamů.

Pohledy (Views)
Pohledy šablonám přidávají sofistikovanou obsluhu uživatelských událostí anebo nějaké znovupoužitelné chování.
Komponenty
Komponenty jsou specializované pohledy sloužící k tvorbě vlastních elementů, které pak můžete snadno používat v šablonách.

Tak a začínáme

Data binding:

<script type=”text/x-handlebars”>
  <p>
    <label>Insert your name:</label>
    {{input type=”text” value=name}}
  </p>

  <p><strong>Echo: {{name}}</strong></p>
</script>
App = Ember.Application.create();

Ember.js podporuje data binding, jak můžete vidět v ukázce výše. Jméno, které napíšeme do pole input, je vázáno s položkou name, která se vypíše za nápis Echo: . Když text na jednom místě změníte, automaticky bude všude aktualizován.

Jenže, jak to ten Ember.js dělá? Ember.js používá šablony Handlebars pro obousměrný data binding. Šablony získávají data ze svého controlleru. Pokaždé, když něco napíšete do inputu, bude aktualizovaná vlastnost name našeho controlleru. Následně bude aktualizována šablona, protože se změnila její provázaná data.

Jednoduché demo – vizitka

Vytvoříme si v Handlebars vlastní elementy.

HTML

<script type="text/x-handlebars">

  {{v-card myname=name street-address=address locality=city zip=zipCode email=email}}

  <h2 class="subheader">Enter Your information:</h2>

  <label>Enter Your Name:</label>
  {{input type="text" value=name}}

  <label>Enter Your Address:</label>
  {{input type="text" value=address}}

  <label>Enter Your City:</label>
  {{input type="text" value=city}}

  <label>Enter Your Zip Code:</label>
  {{input type="text" value=zipCode}}

  <label>Enter Your Email address:</label>
  {{input type="text" value=email}}

</script>

<script type="text/x-handlebars" data-template-name="components/v-card">

  <ul class="vcard">
    <li class="myname">{{myname}}</li>
    <li class="street-address">{{street-address}}</li>
    <li class="locality">{{locality}}</li>
    <li><span class="state">{{usState}}</span>, <span class="zip">{{zip}}</span></li>
    <li class="email">{{email}}</li>
  </ul>

</script>

CSS

.vcard {
  border: 1px solid #dcdcdc;
  max-width: 12em;
  padding: 0.5em;
}

.vcard li {
  list-style: none;
}

.vcard .name {
  font-weight: bold;
}

.vcard .email {
  font-family: monospace;
}

label {
  display: block;
  margin-top: 0.5em;
}

JavaScript

App = Ember.Application.create();

App.ApplicationController = Ember.Controller.extend({
    name: 'Sourav',
    address: '123 M.G Road.',
    city: 'Kolkata',
    zipCode: '712248',
    email: 'me@me.com'
});

Komponenta je definována otevírající značkou <script type="text/x-handlebars">, které nastavíme atribut data-template-name na components/[JMÉNO].

Měli bychom zmínit, že specifikace web component vyžaduje, aby jméno obsahovalo pomlčku a bylo tak snadno odlišitelné od existujících HTML značek.

A to je všechno. Ve skutečnosti je toho mnohem víc, další informace najdete v Ember.js Guides. (Pokud bude zájem, můžeme se frameworku Ember.JS tady na Zdrojáku věnovat více. – pozn. red.)

Komentáře

Odebírat
Upozornit na
guest
7 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
Václav Pávek

Uvítal bych nějaké pokračování o Ember.js. Myslím, že to je dobrý framework a mé zkušenosti jsou jen kladné.

Pavel Lang

+1

Karel

Me osobne by se vice libylo nejake vetsi srovnani knockout angular ember, ci neco dalsiho plusi minusy, a podivat se na to treba i z krapet jinych pohledu co na to google a jine vyhledavace, jak daleko jsme se oddalili od validiniho html atd …

juhy

Mám nějakou zkušenost s EmberJs a Angular

Angular

  • výrazně rychlejší vývoj
  • velká komunita, tudíž co nevím lze dohledat
  • slušná dokumentace

Ember

  • jednoduché šablony – díky omezením funkcionality, mnohem přehlednější než v Angular
  • pekne jsou calculated properties a observery
  • mizerná dokumetace
  • malá komunita
  • spousta postupů je „přes ruku“
  • validita html se ma zlepsit v nektere s novych verzi se zmenou templatovaciho engine
  • Ember data vypada robustne, lec neustale narazim na problemy, ze neco nefunguje a neni to vubec zdokumentovano

Cili na rychle jednorazove projekty bych preferoval Angular, na projekty dlouhodobejsi asi spise EmberJs.

A tohle je treba zminit v souvislosti s Ember.js http://iamstef.net/ember-app-kit/.

filip.jirsak

Nějak mi nejde dohromady sémantické URI a REST na straně jedné, a SPA na straně druhé. Sémantické URI a REST podle mne řeší, jak mají pro uživatele vypadat jednotlivá URL, zatímco SPA má pouze jedno URL viditelné uživateli. Samozřejmě ta aplikace může používat další URL interně, ale to už pak není sémantické URI nebo REST…

Přístupnost není jen o splnění norem: nový pohled na inkluzivní design

Přístupnost a inkluze možná nepatří mezi nejžhavější témata digitálního světa – dokud o nich nezačne mluvit Vitaly Friedman. Na WebExpo 2024 předvedl, že inkluzivní design není jen o splněných checkboxech, ale hlavně o lidech. S energií sobě vlastní obrátil zažité přístupy naruby a ukázal, že skutečně přístupný web je nejen možný, ale i nezbytný.

Efektivnější vývoj UI nebo API: Co si odnést z WebExpo 2025?

Různé
Komentáře: 0
Jak snadno implementovat moderní uživatelské rozhraní? Které funkce brzdí rychlost vašeho webu? A kdy raději sami přibrzdit, abychom využitím AI nepřekročili etické principy? Debatu aktuálních dev témat rozdmýchá sedmnáctý ročník technologické konference WebExpo, která proběhne v Praze od 28. do 30. května. Který talk či workshop si rozhodně nenechat ujít? Toto je náš redakční výběr z vývojářských hroznů.

Zapřáhněte AI jako nikdy předtím. Květnová konference WebExpo přivítá hvězdy technologického světa

Od 28. do 30. května 2025 promění pražský Palác Lucerna na tři dny technologická konference WebExpo. Na programu je více než 80 přednášek a workshopů od expertů z celého světa. WebExpo tradičně propojuje vývojáře, designéry, marketéry i byznysové lídry a nabízí praktické dovednosti, strategické myšlení a přináší nejnovější trendy nejen v oblasti AI.