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

265 lines
7.7 KiB
Plaintext
Raw Normal View History

p.
<strong>Angular 2 is currently in Alpha Preview.</strong>
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
pre.prettyprint
code.
&gt; mkdir hello_world
&gt; cd hello_world
&gt; vim pubspec.yaml # Use your favorite editor!
p.
In <code>pubspec.yaml</code>, add the angular2 and browser packages as dependencies:
2015-03-16 00:39:16 -04:00
pre.prettyprint.linenums.lang-basic
2015-03-02 21:42:31 -05:00
code.
name: hello_world
version: 0.0.1
dependencies:
angular2: "&gt;=2.0.0-alpha.6 &lt;3.0.0"
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
2015-03-16 00:39:16 -04:00
pre.prettyprint.lang-basic
2015-03-02 21:42:31 -05:00
code.
2015-03-03 02:14:05 -05:00
&gt; pub get
Resolving dependencies... (2.7s)
+ analyzer 0.24.1 (0.25.0-dev.3 available)
... more messages ...
Changed 21 dependencies!
Precompiling dependencies...
Loading source assets...
Precompiled dart_style.
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-04 13:44:44 -05:00
.alert.is-helpful.
Depending on your version of Dart and the latest version of angular2,
your messages are probably going to be different from what's shown above.
That's fine.
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
pre.prettyprint
code.
&gt; mkdir web
&gt; 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:
2015-03-02 17:46:31 -05:00
2015-03-03 19:37:56 -05:00
// pre.prettyprint.linenums
pre.prettyprint
code.
import 'package:angular2/angular2.dart';
2015-03-02 17:46:31 -05:00
// 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;
2015-03-02 17:46:31 -05:00
2015-03-03 19:37:56 -05:00
// [PENDING: add line numbers once we can specify where they start]
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
2015-03-03 19:37:56 -05:00
pre.prettyprint
2015-03-02 17:46:31 -05:00
code.
2015-03-02 21:42:31 -05:00
@Component(
2015-03-03 14:32:06 -05:00
selector: 'my-app'
2015-03-02 21:42:31 -05:00
)
@Template(
2015-03-02 21:42:31 -05:00
inline: '&lt;h1&gt;Hello {{ name }}&lt;/h1&gt;'
)
2015-03-02 17:46:31 -05:00
class AppComponent {
2015-03-02 21:42:31 -05:00
String name = 'Alice';
2015-03-02 17:46:31 -05:00
}
2015-03-03 19:37:56 -05:00
// [PENDING: add line numbers once we can specify where they start]
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>@Template</code> annotations.
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.
2015-03-03 20:43:26 -05:00
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
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
2015-03-03 19:37:56 -05:00
pre.prettyprint
2015-03-02 17:46:31 -05:00
code.
2015-03-02 21:42:31 -05:00
@Component(
2015-03-03 14:32:06 -05:00
selector: 'my-app'
2015-03-02 21:42:31 -05:00
)
@Template(
2015-03-02 21:42:31 -05:00
inline: '&lt;h1&gt;Hello {{ name }}&lt;/h1&gt;'
)
2015-03-02 17:46:31 -05:00
2015-03-03 19:37:56 -05:00
// [PENDING: add line numbers once we can specify where they start]
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>.
2015-03-03 19:37:56 -05:00
pre.prettyprint
2015-03-02 21:42:31 -05:00
code.
2015-03-02 17:46:31 -05:00
class AppComponent {
2015-03-02 21:42:31 -05:00
String name = 'Alice';
2015-03-02 17:46:31 -05:00
}
2015-03-03 19:37:56 -05:00
// [PENDING: add line numbers once we can specify where they start]
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
2015-03-03 19:37:56 -05:00
pre.prettyprint
2015-03-02 21:42:31 -05:00
code.
main() {
// Temporarily needed.
reflector.reflectionCapabilities = new ReflectionCapabilities();
2015-03-02 21:42:31 -05:00
bootstrap(AppComponent);
}
2015-03-03 19:37:56 -05:00
// [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.
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.
p.
Setting the value of
<code>reflector.reflectionCapabilities</code>
is a temporary workaround
that you can remove once Angular's transformer is available.
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
pre.prettyprint.linenums
code.
2015-03-02 21:42:31 -05:00
&lt;!doctype html>
&lt;html>
2015-03-02 17:46:31 -05:00
&lt;head&gt;
&lt;title&gt;Angular 2 Quickstart&lt;/title&gt;
&lt;/head&gt;
2015-03-02 21:42:31 -05:00
&lt;body>
2015-03-03 14:32:06 -05:00
&lt;my-app>&lt;/my-app>
2015-03-02 21:42:31 -05:00
&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 several options for running your app.
The quickest and easiest, for now,
is to open your project in <b>Dart Editor</b>,
right-click <b>web/index.html</b>,
and choose <b>Open in Dartium</b>.
This starts a web server
and opens your app in an experimental browser that contains the Dart VM.
2015-03-02 17:46:31 -05:00
2015-03-03 19:37:56 -05:00
// TODO: screenshot? embedded app?
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 a browser.
Generating the JavaScript takes a few seconds when you first visit the page,
and the generated JavaScript is currently large.
The generated JavaScript will be smaller once
Angular's transformer becomes available.
// [PENDING: Update when transformer is working!]
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.
We plan to add a developer guide soon.
Until then, check out <a href="resources.html">Angular Resources</a>.
To learn more about Dart, go to
<a href="https://www.dartlang.org">dartlang.org</a>.