Ember.js is an
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
JavaScript
JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
web framework
A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build an ...
that utilizes a component-service
pattern
A pattern is a regularity in the world, in human-made design, or in abstract ideas. As such, the elements of a pattern repeat in a predictable manner. A geometric pattern is a kind of pattern formed of geometric shapes and typically repeated li ...
. It allows developers to create scalable
single-page web applications by incorporating common
idioms
An idiom is a phrase or expression that typically presents a figurative, non-literal meaning attached to the phrase; but some phrases become figurative idioms while retaining the literal meaning of the phrase. Categorized as formulaic language, ...
, best practices, and patterns from other single-page-app ecosystem patterns into the framework.
Ember is used on many websites including
HashiCorp,
DigitalOcean
DigitalOcean Holdings, Inc. () is an American multinational technology company and cloud service provider. The company is headquartered in New York City, New York, USA, with 15 globally distributed data centers worldwide. DigitalOcean provide ...
,
Apple Music
Apple Music is a music, audio and video streaming service developed by Apple Inc. Users select music to stream to their device on-demand, or they can listen to existing playlists. The service also includes the Internet radio stations Apple ...
,
Square, Inc.,
Intercom
An intercom, also called an intercommunication device, intercommunicator, or interphone, is a stand-alone voice communications system for use within a building or small collection of buildings which functions independently of the public telepho ...
,
Discourse
Discourse is a generalization of the notion of a conversation to any form of communication. Discourse is a major topic in social theory, with work spanning fields such as sociology, anthropology, continental philosophy, and discourse analysis. ...
,
Groupon
Groupon is an American global e-commerce marketplace connecting subscribers with local merchants by offering activities, travel, goods and services in 13 countries. Based in Chicago, Groupon was launched there in November 2008, launching soon af ...
,
LinkedIn
LinkedIn () is an American business and employment-oriented online service that operates via websites and mobile apps. Launched on May 5, 2003, the platform is primarily used for professional networking and career development, and allows job s ...
,
Live Nation
Live Nation Entertainment, Inc. is an American global entertainment company and monopoly that was founded in 2010 following the merger of Live Nation and Ticketmaster. The company promotes, operates, and manages ticket sales for live entertain ...
,
Ghost
A ghost is the soul (spirit), soul or spirit of a dead Human, person or animal that is believed to be able to appear to the living. In ghostlore, descriptions of ghosts vary widely from an invisible presence to translucent or barely visibl ...
,
Nordstrom
Nordstrom, Inc. () is an American luxury department store chain headquartered in Seattle, Washington, and founded by John W. Nordstrom and Carl F. Wallin in 1901. The original Wallin & Nordstrom store operated exclusively as a shoe store, a ...
, and
Twitch
Twitch may refer to:
Biology
* Muscle contraction
** Convulsion, rapid and repeated muscle contraction and relaxation
** Fasciculation, a small, local, involuntary muscle contraction
** Myoclonic twitch, a jerk usually caused by sudden muscle co ...
. Although primarily considered a framework for the web, it is also possible to build desktop and mobile applications with Ember when utilizing a
hybrid app pattern. The most notable example of an Ember desktop application is
Apple Music
Apple Music is a music, audio and video streaming service developed by Apple Inc. Users select music to stream to their device on-demand, or they can listen to existing playlists. The service also includes the Internet radio stations Apple ...
, a feature of the
iTunes desktop application.
The Ember trademark is owned by Tilde Inc.
History
In December 2011, the
SproutCore 2.0 framework was renamed to Ember.js, to reduce confusion between the application framework and the widget library of
SproutCore 1.0. The framework was created by Yehuda Katz, a member of the
jQuery
jQuery is a JavaScript library designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax. It is free, open-source software using the permissive MIT License. As of Aug 2022, jQuery is ...
,
Ruby on Rails
Ruby on Rails (simplified as Rails) is a server-side web application framework written in Ruby under the MIT License. Rails is a model–view–controller (MVC) framework, providing default structures for a database, a web service, and web ...
and
SproutCore core teams.
Design
According to the company, Ember was designed around four key ideas:
; Web applications
: Ember sets out to provide a solution to the client-side application problem.
; More productivity
: Ember is one component of a set of tools to provide a development stack. Ember CLI provides an application structure and build pipeline with addons.
; Stability
: This is the idea that backward compatibility is important and can be maintained while still innovating and evolving the framework.
; Future web standards
: Ember was an adopter of standards around JavaScript and the web, including promises,
web components
Web Components are a set of features that provide a standard component model for the Web allowing for encapsulation and interoperability of individual HTML elements.
Primary technologies used to create them include:
* Custom Elements: APIs to ...
and ES6 syntax. Yehuda Katz, one of Ember's co founders, is a member on TC39, which is the committee responsible for future versions of the JavaScript language.
Like Ruby on Rails, Ember follows ''
convention over configuration
Convention over configuration (also known as coding by convention) is a software design paradigm used by software frameworks that attempts to decrease the number of decisions that a developer using the framework is required to make without necess ...
'' (CoC), and the ''
don't repeat yourself
"Don't repeat yourself" (DRY) is a principle of software development aimed at reducing repetition of software patterns, replacing it with abstractions or using data normalization to avoid redundancy.
The DRY principle is stated as "Every piece o ...
'' (DRY) principle. It has been described as a highly opinionated framework built to be very flexible.
Concepts
According to the company, Ember consists of five key concepts:
; Routes
: In Ember, the state of an application is represented by a URL. Each URL has a corresponding "route object" that controls what is visible to the user.
; Models
: Every route has an associated model, containing the data associated with the current state of the application. While one can use window.fetch to load
JSON
JSON (JavaScript Object Notation, pronounced ; also ) is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays (or other s ...
objects from a server and use those objects as models, most applications use a model library such as Ember Data to handle this.
; Templates
: Templates are used to build the application's HTML and are written with the
HTMLBars templating language. (HTMLBars is a variation of
Handlebars that builds DOM elements rather than a String.)
; Components
: A component is a custom HTML tag. Behavior is implemented using JavaScript and its appearance is defined using HTMLBars templates. Components "own" their data. They can also be nested and can communicate with their parent components through actions (events). Other component libraries such as Polymer can also be used with Ember.
; Services
: Services are just singleton objects to hold long-lived data such as user sessions.
: Ember also provides
dependency injection,
declarative one-way data-flow, tracked properties, and automatically updating
templates.
Ember software / Addons
Ember.js is one component of a complete front end stack built and supported by the Ember core team.
Ember CLI
Ember-cli aims to bring convention over configuration to build tools. A command line utility based on
broccoli
Broccoli (''Brassica oleracea'' var. ''italica'') is an edible green plant in the cabbage family (family Brassicaceae, genus ''Brassica'') whose large flowering head, stalk and small associated leaves are eaten as a vegetable. Broccoli is clas ...
, running the command
ember new
generates a new Ember app with the default stack. This provides:
* A standard file and directory structure
* Development server with live reload
* A testing framewor
* Dependencies managed via
npm.
* ES6/ES7+ syntax support (using Babel)
* Asset management (including combining, minifying, and versioning)
Other features include:
*Blueprints, which are code generators for creating models, controllers, components, and so on that are needed in an application. Custom blueprints can also be created.
*Addons which provide the ability to extend the features of Ember CLI. Addons can be installed by typing
ember install
. Over two thousand addons are currently available including add ons for
CoffeeScript
CoffeeScript is a programming language that compiles to JavaScript. It adds syntactic sugar inspired by Ruby, Python, and Haskell in an effort to enhance JavaScript's brevity and readability. Specific additional features include list comprehen ...
,
LESS,
Sass
Sass, Saß or SASS may refer to:
SASS
* M110 Semi-Automatic Sniper System (or M110 SASS)
* Safe Amplification Site Society, a non-profit organization that promotes music and the arts within Vancouver, British Columbia, Canada
* Shanghai Academ ...
, Compass and
Mocha.
Ember Data
Most Ember applications use Ember Data, a data-persistence library providing many of the facilities of an
object-relational mapping (ORM). However it is also possible to use Ember without Ember Data.
Ember Data maps client-side models to server-side data. It can then load and save records and their relationships without any configuration via a
REST
Rest or REST may refer to:
Relief from activity
* Sleep
** Bed rest
* Kneeling
* Lying (position)
* Sitting
* Squatting position
Structural support
* Structural support
** Rest (cue sports)
** Armrest
** Headrest
** Footrest
Arts and ente ...
ful
JSON
JSON (JavaScript Object Notation, pronounced ; also ) is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays (or other s ...
API that implements the JSON API specification, provided certain conventions are followed. However it is also configurable and can work with servers through the use of adapters and addons. JSON API has server library implementations for
PHP
PHP is a General-purpose programming language, general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementati ...
,
Node.js,
Ruby
A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum (aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sapp ...
,
Python,
Go,
.NET and
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
. Connecting to a Java-
Spring
Spring(s) may refer to:
Common uses
* Spring (season), a season of the year
* Spring (device), a mechanical device that stores energy
* Spring (hydrology), a natural source of water
* Spring (mathematics), a geometric surface in the shape of a h ...
-based server is also documented.
The first stable version of Ember Data (labelled 1.13 to align with Ember itself) was released on 18 June 2015.
Ember Inspector
The Ember Inspector is an extension currently available for the
Mozilla Firefox
Mozilla Firefox, or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. It uses the Gecko rendering engine to display web pages, which implements current a ...
and
Google Chrome
Google Chrome is a cross-platform web browser developed by Google. It was first released in 2008 for Microsoft Windows, built with free software components from Apple WebKit and Mozilla Firefox. Versions were later released for Linux, macO ...
web browsers for debugging Ember applications. Features include the ability to see which templates, components, and views are currently rendered, see the properties of any Ember object with a UI that computes bindings and computed properties, and access one's application's objects from the console. If Ember Data is used, one can also see the records loaded for each model.
* The Object Inspector allows viewing and editing of the runtime contents of Ember Objects and Classes.
* The View Tree visually displays the structure of the rendered Ember application.
* The Routes tab allows one to determine and follow the router state and the URLs used to represent routes.
* The Data tab shows the models in the application and the records loaded for each model.
* The Info tab displays dependency versions.
* The Deprecations tab allows for stack traces of deprecation warnings that do not trigger exceptions.
* The Promises tab allows for the tracing of code through asynchronous operations.
* The Container tab is used to check which objects have been loaded.
* The Render Performance tab is for determining what is slowing down an Ember application.
Fastboot
Fastboot is an Ember CLI addon created by the Ember core team that gives Ember developers the ability to run their apps in
Node.js. This feature allows end users to see HTML and CSS right away, with the JavaScript downloading in the background and taking over once it has fully loaded.
Liquid Fire
Liquid Fire provides animation support for Ember applications. Features include animated transitions between routes and between models within a single route. It provides a DSL for solidifying spatial route relationships, cleanly separated from view-layer implementation details. An example would be to animate a screen transition so that the new screen appears to slide in from one edge of the browser.
Release process
See the releases blog for the full list of releases and detailed changelog.
Release cycle
Ember follows a six-week release cycle, inspired by the rapid release cycle of
Google Chrome
Google Chrome is a cross-platform web browser developed by Google. It was first released in 2008 for Microsoft Windows, built with free software components from Apple WebKit and Mozilla Firefox. Versions were later released for Linux, macO ...
.
Starting with Ember 2.0, related projects supported by the core team have their releases coordinated, and share a version number with Ember itself.
Upgrading and backward compatibility
Ember follows the
semantic versioning convention. In particular, breaking changes are only introduced at significant version numbers such as 1.0, 2.0, etc. While new features can be added at point releases (1.1, 1.2...), and features deprecated, no breaking changes to the public APIs are introduced. Tooling was also under development in 2015 to help streamline the upgrade process.
In addition to this process a number of steps were taken to mitigate issues around upgrading to the 2.0 release:
*All major 2.0 features were in fact introduced early and spread out over a number of releases in order to reduce many of the issues caused by upgrades.
*Most features that were removed are still available through addons.
The process follows the core Ember principle of Stability without Stagnation and is in marked contrast to the upgrade plans of similar projects such as
AngularJS
AngularJS is a discontinued free and open-source JavaScript-based web framework for developing single-page applications. It was maintained mainly by Google and a community of individuals and corporations. It aimed to simplify both the developm ...
.
Future development
Project status can be tracked via the core team meeting minutes. However, major changes to Ember go through the Request For Comment process. This gives the Ember community a chance to give feedback on new proposals. Notable RFCs include:
*Engines. Engines allow multiple logical applications to be composed together into a single application from the user's perspective. Currently released as an experimental addon.
*Release cycle improvements. Among other things it proposes changes to Ember CLI to support "svelte builds", which will strip out deprecated and unused features.
*Outlet Focusing. Making Ember accessible by default. This RFC aims to improves the user experience for people using screen readers.
Sponsorship
Unlike other projects such as
AngularJS
AngularJS is a discontinued free and open-source JavaScript-based web framework for developing single-page applications. It was maintained mainly by Google and a community of individuals and corporations. It aimed to simplify both the developm ...
(
Google
Google LLC () is an American Multinational corporation, multinational technology company focusing on Search Engine, search engine technology, online advertising, cloud computing, software, computer software, quantum computing, e-commerce, ar ...
) and
React (
Facebook
Facebook is an online social media and social networking service owned by American company Meta Platforms. Founded in 2004 by Mark Zuckerberg with fellow Harvard College students and roommates Eduardo Saverin, Andrew McCollum, Dustin ...
) which have the backing of one main company, Ember.js has a variety of sponsors and backers. These include users of the framework such as
Yahoo!
Yahoo! (, styled yahoo''!'' in its logo) is an American web services provider. It is headquartered in Sunnyvale, California and operated by the namesake company Yahoo! Inc. (2017–present), Yahoo Inc., which is 90% owned by investment funds ma ...
,
LinkedIn
LinkedIn () is an American business and employment-oriented online service that operates via websites and mobile apps. Launched on May 5, 2003, the platform is primarily used for professional networking and career development, and allows job s ...
and
Bustle
A bustle is a padded undergarment used to add fullness, or support the drapery, at the back of women's dresses in the mid-to-late 19th century. Bustles are worn under the skirt in the back, just below the waist, to keep the skirt from dragging. ...
.
References
Further reading
* Regularly updated.
* Regularly updated.
*
External links
*
{{Authority control
JavaScript libraries
Ajax (programming)
Software using the MIT license
Web frameworks