Polyfills the behavior specified in the Ember ES Classes RFC
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config
lib
tests
vendor/ember-native-class-polyfill
.editorconfig
.ember-cli
.eslintignore
.eslintrc.js
.gitignore
.npmignore
.template-lintrc.js
.travis.yml
.watchmanconfig
LICENSE.md
README.md
ember-cli-build.js
index.js
package.json
testem.js
yarn.lock

README.md

Build Status

ember-native-class-polyfill

This addon provides a polyfill for the native class behavior that was proposed in Ember RFCs #240 and #337.

Installation

ember install ember-native-class-polyfill

Usage

With this polyfill installed, you can extend from any Ember class using native class syntax:

import Component from '@ember/component';

class ButtonComponent extends Component {}

Init vs Constructor

Although it was possible to use native classes before the RFCs, there were some subtle changes to behavior made to classes as part of the RFCs. Most notably, constructor code will occur before init:

import Component from '@ember/component';

class ButtonComponent extends Component {
  constructor() {
    super();
    console.log('first');
  }

  init() {
    super.init(...arguments);
    console.log('second');
  }
}

This behavior change was made in preparation for class fields, since they occur during construction. The subtleties of these methods can be confusing, and as such, it is recommended that you continue to use init instead of constructor for any initialization code in your classes.

Class Fileds and Decorators

Note that this polyfill does not enable the usage of class field or decorators, and does not include any decorators. Ember has not yet added first class support for these features, and support for them will need to be added in future RFCs. This polyfill, and the behaviors shipped in the native class RFCs, solidify the behavior of classes so that we can prepare for both class fields and decorators separately.

If you would like to use these features, you can check out the ember-decorators project. The project is stable and committed to providing a stable API to build on, but cannot provide guarantees on changes to the behavior of decorators and class fields themselves.

Contributing

Installation

  • git clone <repository-url>
  • cd ember-native-class-polyfill
  • yarn install

Linting

  • yarn lint:hbs
  • yarn lint:js
  • yarn lint:js --fix

Running tests

  • ember test – Runs the test suite on the current Ember version
  • ember test --server – Runs the test suite in "watch mode"
  • ember try:each – Runs the test suite against multiple Ember versions

Running the dummy application

For more information on using ember-cli, visit https://ember-cli.com/.

License

This project is licensed under the MIT License.