Skip to content

Instantly share code, notes, and snippets.

@jenweber
Created August 19, 2018 16:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jenweber/4de23c6c441500e36c32e08efabe912e to your computer and use it in GitHub Desktop.
Save jenweber/4de23c6c441500e36c32e08efabe912e to your computer and use it in GitHub Desktop.
What is Ember.js?

Note: this is a draft for the tag wiki on Stack Overflow

What is Ember.js?

Ember.js is a front end [tag:JavaScript] framework that includes zero-configuration tools for user interaction, components, routing, data management, testing, and deploying.


Advantages

Although it is used for web apps of all kinds and sizes, Ember is especially known for its suitability for projects that can't afford to regularly rewrite functionality or retrain team members after version upgrades.

  • The tools needed for everything from file creation to deployment are built specifically to work together, and are provided out of the box
  • The project follows strict semver
  • It provides automated tools for version upgrades
  • There is a 6-week release cycle for features and bugfixes
  • LTS (long term support) versions receive security updates and bugfixes for an extended period
  • Development is guided by the community rather than any one company through an RFC (request for comments) process

This means that a year later, an app still works, is easy to upgrade, and past developer knowledge still applies.


Common terminology

Whether you choose separate libraries to build your web app one piece at a time or use a full-featured framework like Ember, it can feel like there's a lot to learn. Most new Ember developers can safely focus on templates and component JavaScript, but it's helpful to be familiar with the broader ecosystem:

  • Ember.js provides a templating mechanism based on [tag:handlebars.js]. Handlebars allows variables and interaction events to be added to regular [tag:html] markup.
  • There are many npm packages made specifically for Ember. These packages are referred to as addons, and can be easily searched on Ember Observer. They are frequently backwards-compatible. Regular npm package dependencies can be imported with zero configuration through ember-auto-import.
  • Nearly all developers use the [tag:ember-cli] to generate files, build the app, and run tests. CLI stands for Command Line Interface.
  • Many apps use [tag:ember-data], a tool for managing communications with an API and data caching. The use of this library is optional, and it can be used with most APIs.
  • Although the experience is focused on zero configuration, if customizations need to be made to the build process, they can be done through Broccoli.
  • By default, testing uses [tag:ember-qunit], but other testing frameworks may be substituted.
  • Ember is compatible with CSS preprocessors like [tag:sass] and [tag:less], in addition to support for CSS.
  • Ember Twiddle is a code sandbox website similar to CodePen, JSBin, etc. where developers can share Ember code to help with debugging Q&A
  • Glimmer is the name of the rendering engine behind Ember. It is an internal dependency of the Ember framework codebase that makes it fast, not a tool to learn or use directly in Ember apps.

Getting Help

The Stack Overflow tag is monitored by the community and contributors. Links to chat groups, forums, and more can be found on the Ember.js community page. When Q&A conversations happen in chats, it's encouraged to also share them in Stack Overflow, where they are more searchable.

To report bugs against Ember.js create an issue on the GitHub project. To propose new functionality, create an Issue on the RFC repository.

Related Stackoverflow Tags

  • [tag:ember-data]
  • [tag:ember-cli]
  • [tag:ember-testing]
  • [tag:ember-qunit]
  • [tag:ember-router]
  • [tag:ember-addon]
  • [tag:ember-cli-addons]

Resources/Tutorials

  • Official Quickstart - A beginner tutorial for installing and serving your first app
  • Official Tutorials - The next step in learning after the Quickstart
  • Official Guides - Understanding the parts of Ember and how they work together
  • API Documentation - Reference resources for methods, properties, and services
  • The Ember Blog - Includes a weekly newsletter called The Ember Times, development roadmaps, and version release notes
  • Ember Twiddle - a code sandbox website for Ember apps
  • Ember CLI - reference materials for using the CLI
@localpcguy
Copy link

localpcguy commented Aug 24, 2018

Maybe add "modern" (or something similar) in the first sentence, 'Ember.js is a modern JavaScript framework..."?

Just to head off the "isn't Ember dead" thinking right off the top? Or maybe that's trying to hard?

Also, not sure about the main advantage, re: for teams that can't train to keep up with updates in their framework or do rewrites. Seems like a relatively weak main advantage, although maybe I'm just reaching to the specific words, not the underlying
argument. I generally focus on the convention argument, but I can get how that doesn't play well these days in an age of easy and desired customization. I'll update or post another comment if I think of something.

Other than that thought, I think it looks pretty good.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment