Getting Started
Install
npm install --save feature-u
Access
All functions are exposed through UMD, and therefore accessible through any one of the following techniques ...
ES6 Import (Native JS)
import { createFeature } from 'feature-u'; -OR- import * as FeatureU from 'feature-u'; -OR- import FeatureU from 'feature-u'; createFeature(...) -OR- FeatureU.createFeature(...)
CommonJS
const { createFeature } = require('feature-u'); -OR- const FeatureU = require('feature-u'); createFeature(...) -OR- FeatureU.createFeature(...)
AMD
define(['feature-u', 'otherModule'], function(FeatureU, otherModule) { FeatureU.createFeature(...) });
<script> tag
<script src="https://unpkg.com/feature-u/dist/feature-u.min.js"></script> <script> FeatureU.createFeature(...) </script>
Potential Need for Polyfills
The implementation of this library employs modern es2015+ JavaScript constructs. Even though the library distribution is transpiled to es5 (the least common denominator), polyfills may be required if you are using an antiquated JavaScript engine (such as the IE browser).
We take the approach that polyfills are the responsibility of the client app. This is a legitimate approach, as specified by the W3C Polyfill Findings (specifically Advice for library authors).
- polyfills should only be introduced one time (during code expansion of the app)
- a library should not pollute the global name space (by including polyfills at the library level)
- a library should not needlessly increase it's bundle size (by including polyfills that are unneeded in a majority of target environments)
As it turns out, app-level polyfills are not hard to implement, with the advent of third-party utilities, such as babel:
- simply import babel-polyfill
- or use babel's
babel-preset-env
in conjunction with babel 7's
"useBuiltins": "usage"
option
If your target JavaScript engine is inadequate, it will generate native run-time errors, and you will need to address the polyfills. Unfortunately, in many cases these errors can be very obscure (even to seasoned developers). The following Babel Feature Request (if/when implemented) is intended to address this issue.