p. These instructions assume that you already have the Dart SDK and any tools you like to use with Dart. If not, go <a href="https://www.dartlang.org/tools/download.html">download Dart</a>. Then return here. // STEP 1 - Create a project ########################## .l-main-section h2#section-install-angular 1. Create a project p. Create a new directory, and put a file named <code>pubspec.yaml</code> in it. pre.prettyprint code. > mkdir hello_world > cd hello_world > vim pubspec.yaml # Use your favorite editor! p. In <code>pubspec.yaml</code>, add the angular2 and browser packages as dependencies: pre.prettyprint.linenums code. name: hello_world version: 0.0.1 dependencies: angular2: ">=2.0.0-alpha.6 <3.0.0" browser: any p. In the same directory, run <code>pub get</code> to install the angular2 and browser packages (along with the packages they depend on): pre.prettyprint code. > pub get Resolving dependencies... (7.3s) + angular2 2.0.0-alpha.6 + browser 0.10.0+2 + path 1.3.3 + stack_trace 1.2.3 Changed 4 dependencies! // PENDING: Create template? Link to pub/pubspec docs? // Is browser really needed? .alert.is-helpful. If you're using Dart's Dev channel, then your version of angular2 will be higher than alpha 6. That's fine. // PENDING: Update once 1.9 is on stable channel. // STEP 2 - Import Angular ########################## .l-main-section h2#section-transpile 2. Import Angular p. Still in the same directory, create a <code>web</code> directory. Create a file under <code>web</code> named <code>main.dart</code>. pre.prettyprint code. > mkdir web > vim web/main.dart # Use your favorite editor! p. Edit <code>web/main.dart</code> to import the angular2 library and (for now) two reflection libraries: // pre.prettyprint.linenums pre.prettyprint code. import 'package:angular2/angular2.dart'; // These imports will go away soon: import 'package:angular2/src/reflection/reflection.dart' show reflector; import 'package:angular2/src/reflection/reflection_capabilities.dart' show ReflectionCapabilities; // [PENDING: add line numbers once we can specify where they start] // STEP 3 - Define a component ########################## .l-main-section h2#section-angular-create-account 3. Define a component p. Update <code>web/main.dart</code>, adding the following code after the imports: pre.prettyprint code. @Component( selector: 'my-app' ) @Template( inline: '<h1>Hello {{ name }}</h1>' ) class AppComponent { String name = 'Alice'; } // [PENDING: add line numbers once we can specify where they start] p. The code you just added creates a component that has the tag <b><my-app></b>. The Dart code for an Angular component consists of a class (the <b>component controller</b>) that has <code>@Component</code> and <code>@Template</code> annotations. .l-sub-section h3 Annotations p. The <code>@Component</code> annotation defines the HTML tag for the component by specifying the component's CSS selector. p. The <code>@Template</code> annotation defines the HTML that represents the component. This component uses an inline template, but you can also have an external template. To use an external template, specify a <code>url</code> property and give it the path to the HTML file. pre.prettyprint code. @Component( selector: 'my-app' ) @Template( inline: '<h1>Hello {{ name }}</h1>' ) // [PENDING: add line numbers once we can specify where they start] p. The annotations above specify an HTML tag of <code><my-app></code> and a template of <code ng-non-bindable><h1>Hello {{ name }}</h1></code>. .l-sub-section h3 The template and the component controller p. A template has access to all the public properties and methods of its component controller. The template above binds to a <code>name</code> property through the double-mustache syntax (<code ng-non-bindable>{{ ... }}</code>). p. The component controller assigns "Alice" to the name property. When the template renders, "Hello Alice" appears instead of <span ng-non-bindable>"Hello {{ name }}"</span>. pre.prettyprint code. class AppComponent { String name = 'Alice'; } // [PENDING: add line numbers once we can specify where they start] // STEP 4 - Bootstrap ########################## .l-main-section h2#section-transpile 4. Bootstrap p. Add the following code to the bottom of <code>web/main.dart</code>: pre.prettyprint code. main() { // Temporarily needed. reflector.reflectionCapabilities = new ReflectionCapabilities(); bootstrap(AppComponent); } // [PENDING: add line numbers once we can specify where they start] p. This code adds a <code>main()</code> function that calls Angular's <code>bootstrap()</code> function. The argument to <code>bootstrap()</code> is the name of the component class you defined above. p. Setting the value of <code>reflector.reflectionCapabilities</code> is a temporary workaround that you can remove once Angular's transformer is available. // STEP 5 - Declare the HTML ########################## .l-main-section h2#section-angular-create-account 5. Declare the HTML p. Create a file named <code>web/index.html</code> that contains the following code, which loads <code>main.dart</code> and instantiates the my-app component: pre.prettyprint.linenums code. <!doctype html> <html> <head> <title>Angular 2 Quickstart</title> </head> <body> <my-app></my-app> <script type="application/dart" src="main.dart"></script> <script src="packages/browser/dart.js"></script> </body> </html> // STEP 6 - Build and run ########################## .l-main-section h2#section-angular-run-app 6. Build and run your app p. You have several options for running your app. The quickest and easiest, for now, is to open your project in <b>Dart Editor</b>, right-click <code>web/index.html</code>, and choose <b>Open in Dartium</b>. // TODO: screenshot? embedded app? p. Another option is to build and serve the app using <code>pub serve</code>, and then run it by visiting http://localhost:8080/index.html in a browser. The JavaScript generated using this option is large, for now; it'll be much better soon, when Angular's transformer becomes available. // [PENDING: Update when transformer is working!] // WHAT'S NEXT... ########################## .l-main-section h2#section-transpile Great job! Next step... p. To try out the latest Angular 2 APIs, first download the <b>Dev channel</b> of Dart from the <a href="https://www.dartlang.org/tools/download-archive/">Dart Download Archive</a>. p. Once you have the Dart Dev channel, use <b>pub upgrade</b> to get the latest version of Angular 2. // [PENDING: Perhaps point to dartlang.org.]