1.Welcome
- What Is Aurelia?
- Why Aurelia?
- Aurelia is standards based
- No lock-in
- Lightweight and performance oriented
- Commercial backing
- Legitimately small learning curve
- Dependency free
- Code examples on Github
- What will I learn in this book?
2.An Introduction to Modern Javascript
- Transpilers
- Decorators
- let
- Constants
- When constants are NOT immutable
- Destructuring assignment
- Default parameters and values
- Rest operator
- Classes
- Promises
- Arrow functions
- Sets and Maps
- Template literals
- Modules
- Conclusion
3.Beyond Javascript with TypeScript
- What is TypeScript?
- The benefits of TypeScript
- Strong Typing
- Intellisense
- TypeScript in action
- Classes
- Interfaces
- Basic Types
- Conclusion
4.The Fundamentals of Aurelia
- Terminology
- The component life-cycle
- Worth mentioning…
- Conventions
- View-model/View Pairs
- Overriding view/view-model conventions
- Custom Attributes/Custom Elements/Value Converters
5.Getting Started With Aurelia
- Setting up your development environment
- Installing Node.js
- Already have Node.js installed?
- Working with Npm (Node Package Manager)
- What about Yarn?
- The Aurelia CLI
- Aurelia CLI Default
- Installing the CLI
- A note on RequireJS
- CLI commands
- Conclusion
6.Building your first Aurelia app
- Downloading an IDE/Code editor
- Start a new project
- Let’s start coding…
- Conclusion
7.Templating
- Require
- Trap for young players
- Interpolation
- Warning: dirty checking
- Nested
<template>elements - Binding Modes
- Property binding
- Binding to style
- A note on binding to objects…
- Binding to innerhtml
- Security
- Binding to textcontent
- Binding to input values
- Binding to files
- Events
- Working with addEventListener/removeEventListener
- Inbuilt attributes
- if
- show
- repeat.for
- as-element
- Composition
- Local references/variables
- HTML only templates
- Summary
8.Dependency Injection (DI)
- Simple DI
- Singletons, singletons, singletons
- Configuring DI
- Autoinjecting dependencies in TypeScript
- Resolvers
- Lazy
- All
- Optional
- Parent
- Factory
- NewInstance
- Summary
9.Value Converters & Binding Behaviors
- Value Converters
- Binding Behaviors
- throttle
- debounce
- updateTrigger
- signal
- oneTime
- Conclusion
10.Event Aggregator
- Word of caution…
- Reasons to use the Event Aggregator
- Publishing events
- Subscribing to events
- Dispose of your waste carefully…
11.Structuring your applications
- TypeScript user?
- Common Components of an Aurelia Application
- Using the Aurelia CLI?
- Structure + Styles
- Common Styles
- Custom Elements
- Strategy #1
- Strategy #2
- Strategy #3
- Strategy #4
12.Working with forms
- Binding with form elements
- Checkboxes
- Radios
- Selects
- Textarea
- File
- Contenteditable
- Form Strategies
- Persisting form data
- Further improvements
- Multi-step form
13.Working with the HTTP & Fetch clients
- HTTP Client
- Making a GET request
- Making a POST request
- A Fluent API
- JSON by default
- Fetch Client
- You most likely need a polyfill…
- Making a GET request
- Making a POST request
- Basic Configuration
- Custom request headers
- Intercepting Requests
- Error Handling
14.Router
- Configuring the router
- Using pushState
- Routes explained
- Creating a basic route
- Creating a parameterized route
- Optional parameters
- Creating a wildcard route
- Wildcards
- Handling unknown routes aka 404’s
- Passing data via routes
- Be careful what you pass
- Dynamic routed modules
- Case Sensitive Routes
- Redirecting Routes
- The router pipeline
- Required
- Authorize Step
- PreActivate Step
- PreRender Step
- PostRender Step
- View Ports and Layouts
- View Ports
- A quick note…
- Layouts
15.Animating
- The foundation all animations are built on
- A note about animations
- Animator CSS
- Getting started
- Using the Aurelia CLI? Read this
- Our first CSS animation
- Manually triggering animation
- Manually triggering animation: in-depth
- Animator Velocity.js
- Getting Started
- Using the Aurelia CLI? Read this
- A basic animation example
- Registering custom effects
16.Testing
- Unit Testing
- What should a good unit test look like?
- Jasmine explained
- Testing view-model/views
- Testing custom elements
- Testing custom attributes
- Testing dependencies
- Mocks
17.Localization using i18n
- Prerequisites
- Installation
- Configuring our project
- Intl Polyfill
- Options
- Events
- Displaying localization values
- Translating via custom attribute
- Translating via code
- Setting the currently active locale
- Getting the currently active locale
- Bundling the locale files