aurelia-script v1.5.2
aurelia-script
This repo is the home for Aurelia's concatenated script-tag-ready build.
To keep up to date on Aurelia, please visit and subscribe to the official blog and our email list. We also invite you to follow us on twitter. If you have questions, please join our community on Gitter or use stack overflow. Documentation can be found in our developer hub.
Getting started with Aurelia Script
Simple examples
In the good old day, you chuck in a script tag into your html and start writing app. Aurelia Script is a way to help you return to that, with Aurelia. Simply add:
<script src='https://unpkg.com/aurelia-script@1.5.2'></script>into your main html and you are ready to go, like the following:
<script>
au
.start({
debug: true,
// root: 'app.js', // can be ommitted, default is app.js
// host: document.body // can be ommitted, default is document.body
})
.catch(ex => {
document.body.textContent = `Bootstrap error: ${ex}`;
})
</script>If you want to enhance a section of your page, which is a typical requirement in CMS environment:
<script>
au
.enhance({
host: document.querySelector('.datepicker')
// root can be a string, an object or a constructor function
// aurelia will automatically instantiate if a function is given
root: class DatePickerViewModel {
format = 'dd/MM/yyyy'
},
});
</script>If you want to reuse the same Aurelia instance for multiple enhancements, you can do:
var aurelia = new au.Aurelia();
aurelia.start().then(() => {
// here you are ready to enhance or start a new app
});Using aurelia-script with ES5:
For some projects that need to run in ES5, there are 2 dists that can be used: dist/aurelia_no_loader.es5.umd.js and dist/aurelia_router_no_loader.es5.umd.js (or equivalent minified versions). This is great when you just want to use Aurelia for its templating/binding capabilities (progressive enhancement, sub section of a bigger app for example). As their name suggest, there's no loader bundled with them, but you can easily add a loader to fit your need, in case you need to dynamically load a module. Both Requirejs and SystemJS are compatible with ES5 environments to dynamically load modules at runtime. Just make sure you configure Aurelia modules aliases correctly if those modules happen to have a dependencies on one of Aurelia modules.
What is with au:
au is a global namespace for all exports from Aurelia modules, instead of importing from aurelia-framework module. This is because aurelia-script is bundled in UMD module format, to enable simple, old school style usage. For example:
The equivalent of
import { CompositionEngine, ViewCompiler } from 'aurelia-framework';In Aurelia Script would be:
const { CompositionEngine, ViewCompiler } = au;With ESM:
There is another distribution bundle that is in ES module format, which you can think of it as a barrel export version of all Aurelia modules in ESM. For example:
The equivalent of
import { BindingEngine, CompositionEngine, ViewCompiler } from 'aurelia-framework';In Aurelia Script esm distribution would be:
import {
BindingEngine,
CompositionEngine,
ViewCompiler
} from 'https://unpkg.com/aurelia-script@1.5.2/dist/aurelia.esm.min.js';Online Playground with Single file script
- Codesandbox: https://codesandbox.io/s/wnr6zxv6vl
- Codepen: https://codepen.io/bigopon/pen/MzGLZe
- With Aurelia Store: https://codesandbox.io/s/n3r48qvzjl
- With Aurelia UI Virtualization: https://codesandbox.io/s/m781l8oyqj
- With Aurelia Dialog: https://codesandbox.io/s/62lmyy16xn
- With Aurelia Validation: https://codesandbox.io/s/6y1zzon47r
Development
Build
Install the dependencies
npm installRun either the build / bundle script
# Build only core npm run build # Or full build, with router npm run bundle
Run the example project
- Go to example folder inside this project
- Start a http server
- Navigate to
index.htmlin browser
How it works?
distfolder contains built result of all aurelia bundles, together with their minified versions, with different scopes:- bundles with names ending in
.esm.jsare in ESM (ECMAScript Module) format. bundles with names ending in.umd.jsare in UMD (Universal Module Definition) format. aurelia.esm.js,aurelia.umd.jsare bundles without router feature. Typically used when you want to minimized to script included in your page.aurelia_router.esm.js,aurelia_router.umd.jsare bundles of with router feature.
- bundles with names ending in
examplefolder contains an example application to get started. Step to run it included in the section abovescriptsfolder contains all built result of all aurelia core modules, in AMD module format for environment likegistrun(https://gist.run)buildfolder contains entry/ setup script, code for building / emiting code todistandexamplefolders.index.jsandindex.full.jsare custom entries to give rollup instruction how to bundle all core modules.index.jswill result in a bundle without router related features.index.full.jswill result in a bundle with all features.rollup.config.jsis rollup config for runningnpm run bundleandnpm run buildscripts
Notes:
aurelia-script uses new ECMAScript feature: dynamic import via import() API. If your target browser does not support such API, aurelia-script won't be able to run. Browser support matrix is at https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Browser_compatibility (check for Dynamic import)