Come progettare un'applicazione Ember.js.


105

È stato difficile tenere il passo con l'evoluzione di Ember JS quando si avvicinava (e raggiungeva!) La versione 1.0.0. Tutorial e documentazione sono andati e venuti, portando a molta confusione sulle migliori pratiche e sull'intento degli sviluppatori originali.

La mia domanda è esattamente questa: quali sono le migliori pratiche per Ember JS? Esistono tutorial aggiornati o esempi di lavoro che mostrano come deve essere utilizzato Ember JS? I campioni di codice sarebbero fantastici!

Grazie a tutti, specialmente agli sviluppatori di Ember JS!


7
Questa domanda è in cima alla ricerca su Google di "Tutorial EmberJS", ma in realtà non risponde a questa domanda. Questa è davvero una domanda su 2 link su Internet. Considereresti di cambiare questa domanda per adattarla al titolo? Penso che la risposta migliore sarebbe quella che ha effettivamente portato qualcuno attraverso il processo di creazione di un'applicazione con EmberJS.
George Stocker

Risposte:


17

C'è un progetto importante di cui gli sviluppatori Ember.js nuovi e veterani dovrebbero trarre vantaggio:

Ember-CLI

Sebbene richieda un certo livello di comfort con la riga di comando, puoi generare un moderno progetto Ember con le migliori pratiche consigliate dalla comunità in pochi secondi.

Sebbene sia vantaggioso configurare un progetto Ember.js nel modo più duro come nella risposta di Mike Grassotti, non dovresti farlo per il codice di produzione. Soprattutto quando abbiamo un progetto così potente e facile da usare che ci piace Ember-CLImostrarci il percorso felice approvato da Yehuda .


1
Grazie Matt! Ho reso questa la risposta accettata per indirizzare il traffico a Ember-CLI.
Craig Labenz

Ho appena iniziato a usare Ember per la prima volta un paio di giorni fa ed Ember-CLI è abbastanza facile da usare e da usare. L'unico svantaggio è che introduce molta complessità che potresti non volere / di cui hai bisogno (sebbene la complessità possa essere trascurata, se sei un tipo di persona fiduciosa). Bower e JSHint e Ember-CLI e Travis CI e EditorConfig e file di configurazione Git, insieme ad altre cose come Broccoli per le risorse e PhantomJS per i test ...
JKillian

Punto giusto @JKillian. So che c'è una preoccupazione per la curva di apprendimento di Ember, per questi motivi. Sebbene Ember-cli introduca una certa complessità (Ember-data e Broccoli), rimuove la confusione significativa sui requisiti del fornitore e sulla strutturazione del progetto. Quindi c'è un granello di sale.
Matt Jensen

1
Concordo pienamente con il percorso felice di Ember CLI! La guida rapida di Mike Grassotti di seguito sarebbe il perfetto "passo successivo" se non fosse così ... obsoleto. Per coloro che desiderano creare app Ember 2.0, la cosa migliore, per quanto riguarda le migliori pratiche, è assicurarsi di comprendere i concetti fondamentali: modelli, percorsi, servizi, componenti, ecc. I documenti di Ember sono una grande risorsa, ma poiché io non mi sono imbattuto in una singola guida aggiornata che colleghi
Frank Treacy

110

Guida rapida di Ember.js minima utilizzabile di Mike Grassotti

Questa guida rapida dovrebbe portarti da zero a leggermente più di zero in un paio di minuti. Al termine, dovresti sentirti un po 'sicuro che ember.js funzioni davvero e, si spera, sarai abbastanza interessato da saperne di più.

ATTENZIONE: Non limitarti a provare questa guida, quindi pensa che ember-fa schifo perché "potrei scrivere meglio quella guida rapida in jQuery o Fortran" o qualsiasi altra cosa. Non sto cercando di venderti su ember o altro, questa guida è poco più di un ciao-mondo.

Passaggio 0: controlla jsFiddle

questo jsFiddle ha tutto il codice da questa risposta

Passaggio 1: includi ember.js e altre librerie richieste

Ember.js richiede sia jQuery che Handlebars. Assicurati che quelle librerie siano caricate prima di ember.js:

<script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>
<script type='text/javascript' src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.3/handlebars.js"></script>
<script type='text/javascript' src="http://cdnjs.cloudflare.com/ajax/libs/ember.js/1.0.0-rc.1/ember.js"></script>

Passaggio 2: descrivere l'interfaccia utente dell'applicazione utilizzando uno o più modelli di manubri

Per impostazione predefinita, ember sostituirà il corpo della tua pagina html utilizzando il contenuto di uno o più modelli di handlbar. Un giorno questi modelli saranno in file .hbs separati assemblati da sprockets o forse grunt.js. Per ora terremo tutto in un file e utilizzeremo i tag di script.

Innanzitutto, aggiungiamo un singolo applicationmodello:

<script type="text/x-handlebars" data-template-name="application">
  <div class="container">
    <h1>Ember.js is easy?<small> Minimum Viable Ember.js QuickStart Guide</small></h1>
    <p>{{message}}</p>
  </div>
</script>

Passaggio 3: inizializza la tua applicazione Ember

Basta aggiungere un altro blocco di script con App = Ember.Application.create({});per caricare ember.js e inizializzare l'applicazione.

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

È tutto ciò di cui hai bisogno per creare un'applicazione Ember di base, ma non è molto interessante.

Passaggio 4: aggiungi un controller

Ember valuta ogni modello di manubrio nel contesto di un controller. Quindi il applicationmodello ha una corrispondenza ApplicationController. Ember crea è automaticamente se non ne definisci uno, ma qui personalizziamolo per aggiungere una proprietà del messaggio.

<script type='text/javascript'>
App.ApplicationController = Ember.Controller.extend({
    message: 'This is the application template' 
});
</script>

Passaggio 5: definire i percorsi + più controller e modelli

Il router Ember semplifica la combinazione di modelli / controller in un'applicazione.

<script type='text/javascript'>
  App.Router.map(function() {
    this.route("index", { path: "/" });
    this.route("list", { path: "/list" });
  });

  App.IndexController = Ember.Controller.extend({
    message: 'Hello! See how index.hbs is evaluated in the context of IndexController' 
  });

  App.ListRoute = Ember.Route.extend({
    setupController: function(controller) {
      controller.set('content', ['angular.js', 'backbone.js', 'ember.js']);
    }
  });

</script>

Per far funzionare questo, modifichiamo il nostro modello di applicazione aggiungendo un {{outlet}}helper. Il router Ember renderà il modello appropriato nella presa a seconda del percorso dell'utente. Useremo anche l' {{linkTo}}helper per aggiungere collegamenti di navigazione.

    <script type="text/x-handlebars" data-template-name="application">
      <div class="container">
          <h1>Ember.js is easy?<small> Minimum Viable Ember.js QuickStart Guide</small></h1>
        <p>{{message}}</p>
        <div class="row">
          {{#linkTo index class="span3 btn btn-large btn-block"}}Home{{/linkTo}}
          {{#linkTo list class="span3 btn btn-large btn-block"}}List{{/linkTo}}
        </div>
        {{outlet}}
      </div>
    </script>

    <script type="text/x-handlebars" data-template-name="list">
      <h3 class="demo-panel-title">This is the list template</h3>
      <ul>
      {{#each item in content}}
          <li>{{item}}</li>
      {{/each}}
       </ul>
    </script>

    <script type="text/x-handlebars" data-template-name="index">
      <h3 class="demo-panel-title">This is the index template</h3>
      <p>{{message}}</p>
    </script>

Fatto!

Un esempio funzionante di questa applicazione è disponibile qui .

Puoi usare questo jsFiddle come punto di partenza per le tue app ember

Prossimi passi...

  • Leggi le guide Ember
  • Magari compra lo screencast Peepcode
  • Poni domande qui su Stack Overflow o in ember IRC

Per riferimento, la mia risposta originale:


La mia domanda è per qualsiasi esperto di Ember.js, e certamente per i rispettivi autori del tutorial: quando dovrei usare i design pattern di un tutorial e quando dell'altro?

Questi due tutorial rappresentano le migliori pratiche al momento in cui sono stati scritti. Di sicuro c'è qualcosa che può essere imparato da ciascuno, entrambi sono tristemente destinati a diventare obsoleti perché ember.js si sta muovendo molto rapidamente. Dei due, quello di Trek è molto più attuale.

Quali componenti di ciascuno sono preferenze personali e quali componenti si riveleranno essenziali man mano che la mia app matura? Se stai sviluppando una nuova applicazione ember, non consiglierei di seguire l'approccio di Code Lab. È semplicemente troppo antiquato per essere utile.

Nel design di Code Lab, Ember sembra essere più vicino all'esistente all'interno dell'applicazione (anche se è al 100% del suo JS personalizzato), mentre l'applicazione di Trek sembra vivere più all'interno di Ember.

Il tuo commento è eccezionale. CodeLab sta sfruttando i componenti principali di Ember e accedendovi da un ambito globale. Quando è stato scritto (9 mesi fa) questo era abbastanza comune, ma oggi le migliori pratiche per scrivere applicazioni ember sono molto più vicine a ciò che Trek stava facendo.

Detto questo, anche il tutorial di Trek sta diventando obsoleto. Componenti necessari ApplicationViewe ApplicationControllerora generati dal framework stesso.

Di gran lunga la risorsa più recente è il set di guide pubblicate su http://emberjs.com/guides/ - sono state scritte da zero nelle ultime settimane e riflettono l'ultima versione (pre-rilascio) di ember.

Vorrei anche controllare il progetto wip di trek qui: https://github.com/trek/ember-todos-with-build-tools-tests-and-other-modern-conveniences

MODIFICA :

@ sly7_7: Fornirei anche un altro esempio, utilizzando ember-data https://github.com/dgeb/ember_data_example


1
Inizialmente ho scritto il Code Lab come un modo per far crescere le persone sui framework Ember e MVC, ma sfortunatamente non ho avuto il tempo di continuarlo da allora, e sembra che sia cambiato abbastanza da consentire ad altre persone di creare risorse migliori. Personalmente, da allora sono passato all'utilizzo di Angular per la maggior parte dei miei progetti, trovo che richieda meno JavaScript ed è un po 'più facile da capire. La tua scelta MVC è completamente personale, quindi non lasciarti influenzare.
PeteLe

1
Sono andato su emberjs.com/guides e mentre le spiegazioni erano estremamente ben fatte, gli esempi non erano abbastanza completi per essere eseguiti così come sono e soffrivano di riferimenti cognitivi in ​​avanti, il che è fastidioso per qualcuno che arriva completamente fresco. Sono ancora in fase di aggiornamento o esiste una risorsa gratuita?
Walt Stoneburner

1
Di sicuro sono ancora in fase di aggiornamento. Ad oggi probabilmente il modo migliore per iniziare rapidamente è controllare lo screencast di peepcode su: peepcode.com/products/emberjs
Mike Grassotti

2
@MikeGrassotti C'è un modo per modificare la tua risposta per mostrare il codice sorgente per iniziare con EmberJS? Magari indicazioni passo passo sulla creazione di un'app "Hello World" con EmberJS?
George Stocker

2
@MikeGrassotti Il wiki del tag ember.js dovrebbe essere aggiornato per includere questa domanda e risposta
MilkyWayJoe


4

Consiglio vivamente di utilizzare Yeoman e il suo generatore di brace. Fuori dagli schemi avrai tutti gli strumenti necessari per sviluppare, testare e preparare un'app per la produzione. Come bonus aggiuntivo, sarai in grado di dividere i tuoi modelli di visualizzazione in più file e iniziare con una struttura di directory intelligente che ti faciliterà nella creazione di una base di codice gestibile.

Ho scritto un tutorial su come farlo funzionare in circa 5 minuti. Basta installare node.js e seguire qui



1

Segui anche questo tutorial gratuito intitolato Let's Learn Ember da Tuts + Premium. È gratuito perché appartiene alla loro free coursesserie. Questo corso, come lo chiamano i tuts, è diviso in quattordici capitoli facili da seguire.

Spero che aiuti.

Saluti,


0

Preferisco l'approccio yeoman al carbone. Ti dà un sacco di cose fuori dagli schemi, tra cui:

  • una bella architettura di cartelle utilizzando un approccio "modulo".
  • neutro
  • ricarica dal vivo
  • minify
  • uglify
  • jshint

e altro ancora.

ed è semplicissimo da configurare, basta eseguire yo charcoalper creare un'app, quindi yo charcoal:module myModuleaggiungere un nuovo modulo.

maggiori informazioni qui: https://github.com/thomasboyt/charcoal


0

Ho appena creato uno Starter Kit, se desideri utilizzare l'ultimo EmberJS con Ember-Data, con il motore di modelli Emblem. Tutto racchiuso in Middleman, quindi puoi sviluppare con CoffeeScript. Tutto sul mio GitHub: http://goo.gl/a7kz6y



0

Ho iniziato a creare una serie di video che iniziano da prima di Ember e si sviluppano per utilizzare Ember con rabbia in casi d'uso seri per cose del mondo reale.

Se sei interessato a vedere questo colpo alla luce del giorno (sono più che felice di renderlo pubblico se c'è interesse) dovresti assolutamente andare al post che ho fatto e premere "mi piace" (o commentare qui, Suppongo):

http://discuss.emberjs.com/t/making-ember-easier-to-approach-aka-crazy-screencasts-videos-that-will-stick-in-your-mind-for-learning-ember/5284

Sono entusiasta di farlo per aiutare la comunità a prosperare, ma anche per aiutare le persone a imparare come creare siti web standard in modo semplice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.