Ember.js

Ember.js
Originalförfattare Yehuda Katz
Utvecklare Ember Core Team
Initial release 8 december 2011 ; för 11 år sedan ( 2011-12-08 )
Stabil frisättning
Edit this on Wikidata 4.10.0 / 12 januari 2023 ; 40 dagar sedan ( 12 januari 2023 )
Förvar Ember.js Repository
Skrivet i JavaScript
Operativ system Cross-plattform
Typ JavaScript-bibliotek
Licens MIT-licens
Hemsida emberjs .com

Ember.js är ett JavaScript- webbramverk med öppen källkod som använder ett komponenttjänstmönster . Det låter utvecklare skapa skalbara webbapplikationer på en sida genom att införliva vanliga idiom , bästa praxis och mönster från andra ekosystemmönster för ensidiga appar i ramverket.

Ember används på många webbplatser inklusive HashiCorp , DigitalOcean , Apple Music , Square, Inc. , Intercom , Discourse , Groupon , LinkedIn , Live Nation , Ghost , Nordstrom och Twitch . Även om det i första hand betraktas som ett ramverk för webben, är det också möjligt att bygga stationära och mobila applikationer med Ember när man använder ett hybridappmönster . Det mest anmärkningsvärda exemplet på en Ember-skrivbordsapplikation är Apple Music , en funktion i iTunes- skrivbordsapplikationen.

Ember-varumärket ägs av Tilde Inc.

Historia

I december 2011 döptes SproutCore 2.0-ramverket om till Ember.js för att minska förvirringen mellan applikationsramverket och widgetbiblioteket i SproutCore 1.0. Ramverket skapades av Yehuda Katz, en medlem av kärnteamen jQuery , Ruby on Rails och SproutCore .

Design

Enligt företaget designades Ember kring fyra nyckelidéer:

Webbapplikationer
Ember strävar efter att tillhandahålla en lösning på klientsidans applikationsproblem.
Mer produktivitet
Ember är en komponent i en uppsättning verktyg för att tillhandahålla en utvecklingsstack. Ember CLI tillhandahåller en applikationsstruktur och bygger pipeline med tillägg.
Stabilitet
Detta är tanken att bakåtkompatibilitet är viktigt och kan bibehållas samtidigt som man förnyar och utvecklar ramverket.
Framtida webbstandarder
Ember anammade standarder kring JavaScript och webben, inklusive löften, webbkomponenter och ES6-syntax. Yehuda Katz, en av Embers medgrundare, är medlem i TC39, som är den kommitté som ansvarar för framtida versioner av JavaScript-språket.

Liksom Ruby on Rails följer Ember konventionen över konfiguration (CoC) och principen om inte upprepa dig själv (DRY). Det har beskrivits som en mycket opinionsbildad ram byggd för att vara mycket flexibel.

Begrepp

Enligt företaget består Ember av fem nyckelbegrepp:

Rutter
I Ember representeras tillståndet för en applikation av en URL. Varje URL har ett motsvarande "ruttobjekt" som styr vad som är synligt för användaren.
Modeller
Varje rutt har en associerad modell som innehåller data som är associerade med applikationens aktuella tillstånd. Medan man kan använda window.fetch för att ladda JSON- objekt från en server och använda dessa objekt som modeller, använder de flesta applikationer ett modellbibliotek som Ember Data för att hantera detta.
Mallar
Mallar används för att bygga programmets HTML och är skrivna med HTMLBars mallspråk. (HTMLBars är en variant av Handlebars som bygger DOM-element snarare än en sträng.)
Komponenter
En komponent är en anpassad HTML-tagg. Beteende implementeras med JavaScript och dess utseende definieras med HTMLBars-mallar. Komponenter "äger" sina data. De kan också vara kapslade och kan kommunicera med sina överordnade komponenter genom åtgärder (händelser). Andra komponentbibliotek som Polymer kan också användas med Ember.
Tjänster
Tjänster är bara enstaka objekt för att hålla långlivade data såsom användarsessioner.
Ember tillhandahåller också beroendeinjektion , deklarativt enkelriktat dataflöde, spårade egenskaper och automatisk uppdatering av mallar .

Ember programvara / Tillägg

Ember.js är en komponent i en komplett frontend-stack byggd och stöds av Embers kärnteam.

Ember CLI

Ember-cli syftar till att skapa konvention om konfiguration för att bygga verktyg. Ett kommandoradsverktyg baserat på broccoli, som kör kommandot ember new <app-name> genererar en ny Ember-app med standardstacken. Detta ger:

  • En standardfil- och katalogstruktur
  • Utvecklingsserver med live reload
  • Ett testramverk
  • Beroenden hanteras via npm .
  • ES6/ES7+ syntaxstöd (med Babel)
  • Tillgångshantering (inklusive kombination, minifiering och versionshantering)

Andra funktioner inkluderar:

  • Blueprints, som är kodgeneratorer för att skapa modeller, styrenheter, komponenter och så vidare som behövs i en applikation. Anpassade ritningar kan också skapas.
  • Tillägg som ger möjligheten att utöka funktionerna i Ember CLI. Tillägg kan installeras genom att skriva ember install <addon-name> . Över tvåtusen tillägg är för närvarande tillgängliga inklusive tillägg för CoffeeScript , LESS , Sass , Compass och Mocha .

Ember Data

De flesta Ember-applikationer använder Ember Data, ett databeständighetsbibliotek som tillhandahåller många av faciliteterna för en objektrelationell mappning ( ORM). Men det är också möjligt att använda Ember utan Ember Data.

Ember Data mappar klientsidans modeller till serversidans data. Den kan sedan ladda och spara poster och deras relationer utan någon konfiguration via ett RESTful JSON API som implementerar JSON API-specifikationen, förutsatt att vissa konventioner följs. Men det är också konfigurerbart och kan fungera med servrar genom att använda adaptrar och tillägg. JSON API har serverbiblioteksimplementeringar för PHP , Node.js , Ruby , Python , Go , .NET och Java . Anslutning till en Java- Spring -baserad server är också dokumenterad.

Den första stabila versionen av Ember Data (märkt 1.13 för att anpassas till Ember själv) släpptes den 18 juni 2015.

Glödinspektör

Ember Inspector är ett tillägg som för närvarande är tillgängligt för webbläsarna Mozilla Firefox och Google Chrome för felsökning av Ember-applikationer. Funktioner inkluderar möjligheten att se vilka mallar, komponenter och vyer som för närvarande renderas, se egenskaperna för alla Ember-objekt med ett användargränssnitt som beräknar bindningar och beräknade egenskaper, och komma åt ens applikations objekt från konsolen. Om Ember Data används kan man också se posterna laddade för varje modell.

  • Objektinspektören tillåter visning och redigering av körtidsinnehållet i Ember-objekt och -klasser.
  • View Tree visar visuellt strukturen för den renderade Ember-applikationen.
  • På fliken Rutter kan man bestämma och följa routerns tillstånd och webbadresserna som används för att representera rutter.
  • Fliken Data visar modellerna i applikationen och posterna som laddats för varje modell.
  • Info-fliken visar beroendeversioner.
  • Fliken Utfasningar tillåter stackspår av utfasningsvarningar som inte utlöser undantag.
  • Fliken Löften tillåter spårning av kod genom asynkrona operationer.
  • Fliken Container används för att kontrollera vilka objekt som har laddats.
  • Fliken Render Performance är till för att avgöra vad som saktar ner en Ember-applikation.

Fastboot

Fastboot är ett Ember CLI-tillägg skapat av Embers kärnteam som ger Ember-utvecklare möjligheten att köra sina appar i Node.js. Den här funktionen låter slutanvändare se HTML och CSS direkt, med JavaScript som laddas ner i bakgrunden och tar över när det har laddats helt.

Flytande eld

Liquid Fire tillhandahåller animationsstöd för Ember-applikationer. Funktionerna inkluderar animerade övergångar mellan rutter och mellan modeller inom en enda rutt. Det tillhandahåller en DSL för att solidifiera rumsliga ruttrelationer, rent separerat från vyskiktsimplementeringsdetaljer. Ett exempel skulle vara att animera en skärmövergång så att den nya skärmen ser ut att glida in från ena kanten av webbläsaren.

Releaseprocess

Se releasebloggen för hela listan över releaser och detaljerad ändringslogg.

Släppcykel

Ember följer en sex-veckors release-cykel, inspirerad av den snabba release-cykeln av Google Chrome .

Från och med Ember 2.0 har relaterade projekt som stöds av kärnteamet sina releaser koordinerade och delar ett versionsnummer med Ember själv.

Uppgradering och bakåtkompatibilitet

Ember följer den semantiska versionskonventionen. I synnerhet introduceras brytande ändringar endast vid betydande versionsnummer som 1.0, 2.0, etc. Även om nya funktioner kan läggas till vid punktutgåvor (1.1, 1.2...), och funktioner föråldras, är inga brytande ändringar av de offentliga API:erna infördes. Verktyg var också under utveckling under 2015 för att effektivisera uppgraderingsprocessen.

Utöver denna process vidtogs ett antal steg för att mildra problem kring uppgradering till 2.0-versionen:

  • Alla större 2.0-funktioner introducerades faktiskt tidigt och spreds ut över ett antal utgåvor för att minska många av de problem som uppgraderingar orsakade.
  • De flesta funktioner som togs bort är fortfarande tillgängliga via tillägg.

Processen följer Embers kärnprincip om stabilitet utan stagnation och står i markant kontrast till uppgraderingsplanerna för liknande projekt som AngularJS .

Framtida utveckling

Projektstatus kan spåras via kärnteamets mötesprotokoll. Men stora ändringar av Ember går igenom processen för begäran om kommentarer. Detta ger Ember-gemenskapen en chans att ge feedback på nya förslag. Anmärkningsvärda RFC:er inkluderar:

  • Motorer. Motorer tillåter flera logiska applikationer att sammanställas till en enda applikation ur användarens perspektiv. För närvarande släppt som ett experimentellt tillägg.
  • Släpp cykelförbättringar. Bland annat föreslås ändringar av Ember CLI för att stödja "svelte builds", vilket kommer att ta bort föråldrade och oanvända funktioner.
  • Utloppsfokusering. Gör Ember tillgängligt som standard. Denna RFC syftar till att förbättra användarupplevelsen för personer som använder skärmläsare.

Sponsorskap

Till skillnad från andra projekt som AngularJS ( Google ) och React ( Facebook ) som har stöd från ett huvudföretag, har Ember.js en mängd olika sponsorer och backar. Dessa inkluderar användare av ramverket som Yahoo! , LinkedIn och Bustle .

Vidare läsning

externa länkar