// STEP 1 - Install Angular ##########################
.content-block.content-number.clearfix
i.number.icon-number.large
.c11
header
h3#section-install-angular Install Angular
p
b Angular is still unpackaged and in alpha. This quickstart does not reflect the final build process for Angular.
| The following setup is for those who want to try out Angular while it is in alpha.
p
| For the sake of this quickstart we recommend using the
a(href="https://github.com/davideast/conscious") es6-shim
GitHub repository
|. This repository will provide a faster start. es6-shim
includes Angular and dependencies to compile ES6 in incompatible browsers.
p
| Clone the repository inside of aleady existing project.
pre.prettyprint.linenums
code git clone https://github.com/davideast/concious.git es6-shim
section.docs-sub-section
h4 A word on ES6
p
| Angular builds on top of ES6, the new specification of the JavaScript language. Not all ES6 features are available in all browsers. The following es6-shim repository allows you to use ES6 in the browser today.
p
| Angular is available on npm. Configuring Angular to run ES6 in the browser requires a build process, detailed here.
p
| The es6-shim package includes Angular and dependencies needed to compile ES6 in the browser. Think of the es6-shim repository as package rather than a new project.
// STEP 2 - Import Angular ##########################
.content-block.content-number.clearfix
i.number.icon-number2.large
.c11
header
h3#section-transpile Import Angular
p
| Create a file named app.es6
at the root of the project. The .es6
extension signifies that the file uses ES6 syntax.
p Using the ES6 module syntax you can import the required modules from Angular2.
pre.prettyprint.linenums
code
| import {Component, Template, bootstrap} from 'angular2/angular2';
p
| The above import statement will import the three modules from Angular. These modules load at runtime.
// STEP 3 - Create a component ##########################
.content-block.content-number.clearfix
i.number.icon-number3.large
.c11
header
h3#section-angular-create-account Create a component
p
| Components are custom HTML elements. Angular uses components to empower HTML. Components structure and repre.prettyprint.linenumssent the UI. This quickstart demonstrates the process of creating a component. This component will have the tag of app.
pre.prettyprint.linenums
code <app></app>
p A component consists of two parts; the annotation section and the component controller.
pre.prettyprint.linenums
code
| import {Component, Template, bootstrap} from 'angular2/angular2';
|
| // Annotation Section
| @Component({
| selector: 'app'
| })
| @Template({
| inline: `
| <h1>Hello {{ name }}</h1>
| `
| })
| // Component Controller
| class AppComponent {
| constructor() {
| this.name = "Alice";
| }
| }
section.docs-sub-section
h4 Component Annotations
p A component annotation provides meta-data about the component
. An annotation can always identified by its at-sign — @
.
p
| The @Component
annotation defines the HTML tag for the component. The selector property specifies the tag. The selector
property is a CSS selector.
p
| The @Template
annotation defines the template to apply to the component. This component uses an inline template, but external templates are available as well. To use an external template specify a url
property and give it the path to the html file.
pre.prettyprint.linenums
code
| @Component({
| selector: 'app'
| })
| @Template({
| inline: `
| <h1>Hello {{ name }}</h1>
| `
| })
p
| The component created above has a HTML tag of <app></app>
and a template of <h1>Hello {{ name }}</h1>
.
.clear
section.docs-sub-section
h4 Component Controller
p
| The component controller is the backing of the component's template. A component controller uses ES6 class
syntax.
pre.prettyprint.linenums
code
| class AppComponent {
| constructor() {
| this.name = "Alice";
| }
| }
p
| Templates read from their component controllers. Templates have access to any properties or functions placed on the component controller.
p
| The template above binds to a name
property through the {{ }}
syntax.The body of the constructor assigns "Alice" to the name property. When the template renders, Alice will appear instead of {{ name }}
.
.clear
// STEP 4 - Bootstrap ##########################
.content-block.content-number.clearfix
i.number.icon-number4.large
.c11
header
h3#section-transpile Bootstrap
p
| The last step to load the component on the page.
section.docs-sub-section
h4 The bootstrap
function
p
| Angular provides a bootstrap
function that renders a component to the page. The bootstrap
function takes a component as a parameter. Any child components inside of the parent component will render as well.
code
pre.prettyprint.linenums bootstrap(AppComponent);
.clear
// STEP 5 - Declare the HTML ##########################
.content-block.content-number.clearfix
i.number.icon-number5.large
.c11
header
h3#section-angular-create-account Declare the HTML
p
| Create an index.html
file at the root of the project. Include the es6-shim.js
file in the head
tag. Now, declare the app component the body
. The es6-shim must load before any application code.
code
pre.prettyprint.linenums
| <html>
| <head>
| <title>Angular 2 Quickstart</title>
| <script src="/es6-shim/dist/es6-shim.js"></script>
| </head>
| <body>
|
| <!-- The app component created in app.es6 -->
| <app></app>
|
| </body>
| </html>
section.docs-sub-section
h4 Load the component module
p
| The last step is to load the module for the app component. The es6-shim file comes packaged with the System library. Most browsers today do not support ES6 module loading. System provides module loading functionality to these browsers.
p
| To load the needed modules, System needs to know where to load the files from. The paths property in System specifies the location of the files.
p Tell System about three paths:
ol
li Angular - The Angular framework.
li Runtime assertions - Optional assertions for runtime type checking.
li The app component created above - The component to display on the page.
code
pre.prettyprint.linenums
| <html>
| <head>
| <title>Angular 2 Quickstart</title>
| <script src="/es6-shim/dist/es6-shim.js"></script>
| </head>
| <body>
|
| <!-- The app component created in app.es6 -->
| <app></app>
|
| <script>
| // Rewrite the paths to load the files
| System.paths = {
| 'angular2/*':'/es6-shim/angular2/*.js',
| 'rtts_assert/*': '/es6-shim/rtts_assert/*.js',
| 'app': 'app.es6'
| };
|
| // Kick off the application
| System.import('app');
| </script>
| </body>
| </html>
.clear
p
| Run the root of your project on a local server.
.content-block.content-number.clearfix
i.number.icon-number6.large
.c11
header
h3#section-transpile Extra-credit
p
| Learn some template syntax for extra-credit.