angular-docs-cn/public/docs/dart/latest/quickstart.jade

283 lines
8.5 KiB
Plaintext
Raw Normal View History

2015-04-23 11:50:54 -04:00
.callout.is-helpful
header Angular 2 is currently in Developer Preview
2015-04-23 11:50:54 -04:00
p.
We recommend using
<a href='https://angulardart.org'>Angular for Dart</a>
for production applications.
2015-03-02 21:42:31 -05:00
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/downloads/">download Dart</a>.
2015-03-02 21:42:31 -05:00
Then return here.
2015-03-03 14:32:06 -05:00
// STEP 1 - Create a project ##########################
2015-03-02 17:46:31 -05:00
.l-main-section
2015-03-03 14:32:06 -05:00
h2#section-install-angular 1. Create a project
2015-03-02 17:46:31 -05:00
p.
2015-03-03 14:32:06 -05:00
Create a new directory, and put a file named
2015-03-03 20:43:26 -05:00
<code>pubspec.yaml</code> in it.
2015-03-03 14:32:06 -05:00
code-example(language="sh").
&gt; <span class="blk">mkdir hello_world</span>
&gt; <span class="blk">cd hello_world</span>
&gt; <span class="blk">vim pubspec.yaml</span> # Use your favorite editor!
2015-03-03 14:32:06 -05:00
p.
In <code>pubspec.yaml</code>, add the angular2 and browser packages as dependencies.
Angular 2 is changing rapidly, so specify an exact version:
<b>2.0.0-alpha.25</b>.
code-example(language="yaml").
name: hello_world
version: 0.0.1
dependencies:
angular2: 2.0.0-alpha.25
browser: any
2015-03-02 17:46:31 -05:00
p.
2015-03-02 21:42:31 -05:00
In the same directory, run <code>pub get</code>
to install the angular2 and browser packages
(along with the packages they depend on):
2015-03-02 17:46:31 -05:00
code-example(language="sh").
&gt; <span class="blk">pub get</span>
2015-03-02 17:46:31 -05:00
// PENDING: Create template? Link to pub/pubspec docs?
// Is browser really needed?
2015-03-03 19:37:56 -05:00
2015-03-02 17:46:31 -05:00
// 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.
2015-03-02 21:42:31 -05:00
Create a file under <code>web</code> named <code>main.dart</code>.
2015-03-03 14:32:06 -05:00
code-example(language="sh").
&gt; <span class="blk">mkdir web</span>
&gt; <span class="blk">vim web/main.dart</span> # Use your favorite editor!
2015-03-03 14:32:06 -05:00
p.
Edit <code>web/main.dart</code> to import the angular2 library
and two reflection libraries:
2015-03-02 17:46:31 -05:00
code-example(language="dart" format="linenums").
import 'package:angular2/angular2.dart';
import 'package:angular2/src/reflection/reflection.dart' show reflector;
import 'package:angular2/src/reflection/reflection_capabilities.dart' show ReflectionCapabilities;
2015-03-03 19:37:56 -05:00
2015-03-02 21:42:31 -05:00
// STEP 3 - Define a component ##########################
2015-03-02 17:46:31 -05:00
.l-main-section
2015-03-02 21:42:31 -05:00
h2#section-angular-create-account 3. Define a component
2015-03-02 17:46:31 -05:00
p.
2015-03-03 19:37:56 -05:00
Update <code>web/main.dart</code>, adding the following code
after the imports:
2015-03-02 17:46:31 -05:00
code-example(language="dart" format="linenums:5").
@Component(
selector: 'my-app'
)
@View(
template: '&lt;h1&gt;Hello {{ name }}&lt;/h1&gt;'
)
class AppComponent {
String name = 'Alice';
}
2015-03-03 19:37:56 -05:00
p.
2015-03-03 20:43:26 -05:00
The code you just added creates a component that
2015-03-03 19:37:56 -05:00
has the tag <b>&lt;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>@View</code> annotations.
2015-03-03 19:37:56 -05:00
2015-03-02 17:46:31 -05:00
.l-sub-section
2015-03-02 21:42:31 -05:00
h3 Annotations
2015-03-02 17:46:31 -05:00
p.
2015-03-03 20:43:26 -05:00
The <code>@Component</code> annotation defines
the HTML tag for the component by specifying the component's CSS selector.
2015-03-02 17:46:31 -05:00
p.
The <code>@View</code> annotation defines the HTML that
2015-03-03 20:43:26 -05:00
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>templateUrl</code> property
2015-03-02 21:42:31 -05:00
and give it the path to the HTML file.
2015-03-02 17:46:31 -05:00
code-example(language="dart").
@Component(
selector: 'my-app'
)
@View(
template: '&lt;h1&gt;Hello {{ name }}&lt;/h1&gt;'
)
2015-03-03 19:37:56 -05:00
2015-03-02 17:46:31 -05:00
p.
2015-03-03 19:37:56 -05:00
The annotations above specify an HTML tag of <code>&lt;my-app&gt;</code>
2015-03-03 14:32:06 -05:00
and a template of <code ng-non-bindable>&lt;h1&gt;Hello &#123;&#123; name }}&lt;/h1&gt;</code>.
2015-03-02 21:42:31 -05:00
2015-03-02 17:46:31 -05:00
.l-sub-section
2015-03-02 21:42:31 -05:00
h3 The template and the component controller
2015-03-02 17:46:31 -05:00
p.
2015-03-02 21:42:31 -05:00
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
2015-03-03 19:37:56 -05:00
the double-mustache syntax (<code ng-non-bindable>{{ ... }}</code>).
2015-03-04 19:21:24 -05:00
p.
2015-03-03 19:37:56 -05:00
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>.
code-example(language="dart").
class AppComponent {
String name = 'Alice';
}
2015-03-03 19:37:56 -05:00
2015-03-02 17:46:31 -05:00
// STEP 4 - Bootstrap ##########################
.l-main-section
h2#section-transpile 4. Bootstrap
2015-03-02 21:42:31 -05:00
p.
2015-03-03 19:37:56 -05:00
Add the following code to the bottom of <code>web/main.dart</code>:
2015-03-02 17:46:31 -05:00
code-example(language="dart" format="linenums:15").
main() {
reflector.reflectionCapabilities = new ReflectionCapabilities();
bootstrap(AppComponent);
}
2015-03-03 19:37:56 -05:00
p.
This code adds a <code>main()</code> function
that calls Angular's <code>bootstrap()</code> function.
2015-03-03 20:43:26 -05:00
The argument to <code>bootstrap()</code> is the name of the component class
2015-03-03 19:37:56 -05:00
you defined above.
//- Explain why setting reflector.reflectionCapabilities is necessary.
2015-03-03 19:37:56 -05:00
2015-03-02 17:46:31 -05:00
// STEP 5 - Declare the HTML ##########################
.l-main-section
h2#section-angular-create-account 5. Declare the HTML
p.
2015-03-02 21:42:31 -05:00
Create a file named <code>web/index.html</code> that contains
the following code,
2015-03-03 14:32:06 -05:00
which loads <code>main.dart</code> and instantiates the my-app component:
2015-03-02 17:46:31 -05:00
code-example(language="html").
&lt;!doctype html>
&lt;html>
&lt;head&gt;
&lt;title&gt;Angular 2 Quickstart&lt;/title&gt;
&lt;/head&gt;
&lt;body>
&lt;my-app>&lt;/my-app>
&lt;script type="application/dart" src="main.dart">&lt;/script>
&lt;script src="packages/browser/dart.js">&lt;/script>
&lt;/body>
&lt;/html>
2015-03-02 17:46:31 -05:00
// STEP 6 - Build and run ##########################
2015-03-02 21:42:31 -05:00
.l-main-section
2015-03-02 17:46:31 -05:00
h2#section-angular-run-app 6. Build and run your app
2015-03-02 17:46:31 -05:00
2015-03-02 21:42:31 -05:00
p.
You have a few options for running your app.
One is to launch a local HTTP server
and then view the app in
<a href="https://www.dartlang.org/tools/dartium/">Dartium</a>.
You can use whatever server you like, such as Python's SimpleHTTPServer.
2015-03-02 17:46:31 -05:00
2015-03-02 21:42:31 -05:00
p.
Another option is to build and serve the app using <code>pub serve</code>,
and then run it by visiting <b>http://localhost:8080</b> in any modern browser.
Pub serve generates the JavaScript on the fly,
which takes a few seconds when you first visit the page.
p.
Once the app is running,
you should see <b>Hello Alice</b> in your browser window.
// STEP 7 - Use the Angular transformer ##########################
.l-main-section
h2#section-angular-run-app 7. Use the Angular transformer
p.
To enable quick turnaround while you're developing an Angular app,
the framework uses reflection via dart:mirrors.
Unfortunately, mirror-using Dart code compiles to
JavaScript code that's large and slow.
To create more deployable JavaScript, use the Angular transformer.
The transformer analyzes your code,
converting reflection to static code
that Dart's build tools can compile to faster, smaller JavaScript.
p.
To use the Angular transformer,
first add the highlighted lines to your <code>pubspec.yaml</code>:
code-example(language="yaml").
name: hello_world
version: 0.0.1
dependencies:
angular2: 2.0.0-alpha.25
browser: any
<span class="pnk">transformers:
- angular2:
entry_points: web/main.dart</span>
p.
Then build the JavaScript version using <code>pub build</code>:
code-example(language="basic").
&gt; <span class="blk">pub build</span>
Loading source assets...
Loading angular2 transformers...
INFO: Formatter is being overwritten.
Building hello_world... (3.1s)
[Info from Dart2JS]:
Compiling hello_world|web/main.dart...
[Info from Dart2JS]:
Took 0:00:16.123086 to compile hello_world|web/main.dart.
Built 41 files to "build".
p.
The compiled JavaScript appears, along with supporting files,
under the <code>build</code> directory.
p.
For more information, see the
<a href="https://github.com/angular/angular/wiki/Angular-2-Dart-Transformer">Angular
transformer wiki page</a>.
2015-03-02 17:46:31 -05:00
// WHAT'S NEXT... ##########################
.l-main-section
2015-03-03 14:32:06 -05:00
h2#section-transpile Great job! Next step...
2015-03-02 17:46:31 -05:00
2015-03-02 21:42:31 -05:00
p.
Follow the <a href="guide">developer guide</a>
to continue playing with Angular 2 for Dart.
p.
Or read more about Angular or Dart:
ul
li
<a href="resources.html">Angular resources</a>
li
<a href="https://www.dartlang.org">dartlang.org</a>