Gli sviluppatori del noto framework JavaScript EmberJS hanno reso disponibile la versione 2.7 e, nel contempo, la beta dell'aggiornamento 2.8 che una volta stabile sarà anche la nuova LTS del progetto dopo la 2.4. Se da una parte EmberJS 2.7 rappresenta una minor release che verrà archiviata rapidamente con il futuro rilascio della 2.9, la 2.8 riceverà bugfix per un periodo di 36 settimane e security patch per 5 anni.
Ad accomunare i due upgrade è la disponibilità di API aggiuntive, nel caso di EmberJS 2.7 abbiamo quindi Ember.computed.uniqBy
dove uniqBy() è una proprietà, utilizzabile anche come metodo per gli array, che attraverso l'utilizzo di una chiave (come per esempio un identificatore) restituisce un nuovo array costituito da tutti gli elementi presenti all'interno di un vettore, senza ripetizioni:
javascript var Simpson = Ember.Object.extend({ theSimpsons: Ember.computed.uniqBy('simpsons', 'id') });
var simpson = Simpson.create(
{ simpsons: [ { id: 1, 'homer' },
{ id: 2, 'marge' },
{ id: 3, 'bart' },
{ id: 1, 'homer' } ] }
);
simpson.get('theSimpsons');
// [ { id: 1, 'homer' }, { id: 2, 'marge' }, { id: 3, 'bart' }]
Tra i costrutti deprecati abbiamo invece Ember.Backburner
, destinato alla rimozione in EmberJS 2.8, e Ember.Binding
che non sarà più presente a partire dalla release 3.0.
Gli engine sono probabilmente la novità più rilevante di EmberJS 2.8. Essi in pratica consentono di comporre più applicazioni da mettere a disposizione degli utilizzatori come unica applicazione. Gli engine sono già utilizzabili in EmberJS grazie ad un'apposita estensione ancora in via sperimentale, ma questa volta l'intenzione degli sviluppatori è quella di un'integrazione definitiva a livello di core.
Quattro i costrutti implementati e resi pubblici per gli engine:
- la classe
Ember.Engine
, base diEmber.Application
; - la classe
Ember.EngineInstance
, base diEmber.ApplicationInstance
; - la keyword
mount
per il mounting dei routeless engine nei template; mount
(router DSL).
Interessante anche l'introduzione del metodo Ember.String.isHTMLSafe
per il controllo di validazione sulle stringhe passate a Ember.String.htmlSafe:
var plainString = 'testo testo testo',
safeString = Ember.String.htmlSafe('
BlahBlah
');
Ember.String.isHTMLSafe(plainString); // false
Ember.String.isHTMLSafe(safeString); // true
Via EmberJS