docs(aio): move quickstarts and glossary into guide
This commit is contained in:
parent
0fe308c0ef
commit
d8c35c893b
|
@ -0,0 +1,939 @@
|
|||
@description
|
||||
Good tools make application development quicker and easier to maintain than
|
||||
if you did everything by hand.
|
||||
|
||||
The [**Angular CLI**](https://cli.angular.io/) is a **_command line interface_** tool
|
||||
that can create a project, add files, and perform a variety of ongoing development tasks such
|
||||
as testing, bundling, and deployment.
|
||||
|
||||
The goal in this guide is to build and run a simple Angular
|
||||
application in TypeScript, using the Angular CLI
|
||||
while adhering to the [Style Guide](guide/guide/style-guide) recommendations that
|
||||
benefit _every_ Angular project.
|
||||
|
||||
By the end of the chapter, you'll have a basic understanding of development with the CLI
|
||||
and a foundation for both these documentation samples and for real world applications.
|
||||
|
||||
You'll pursue these ends in the following high-level steps:
|
||||
|
||||
1. [Set up](guide/cli-quickstart#devenv) the development environment.
|
||||
2. [Create](guide/cli-quickstart#create-proj) a new project and skeleton application.
|
||||
3. [Serve](guide/cli-quickstart#serve) the application.
|
||||
4. [Edit](guide/cli-quickstart#first-component) the application.
|
||||
|
||||
And you can also <a href="/resources/zips/cli-quickstart/cli-quickstart.zip">download the example.</a>
|
||||
|
||||
|
||||
|
||||
<h2 id='devenv'>
|
||||
Step 1. Set up the Development Environment
|
||||
</h2>
|
||||
|
||||
You need to set up your development environment before you can do anything.
|
||||
|
||||
Install **[Node.js® and npm](https://nodejs.org/en/download/)**
|
||||
if they are not already on your machine.
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
**Verify that you are running at least node `6.9.x` and npm `3.x.x`**
|
||||
by running `node -v` and `npm -v` in a terminal/console window.
|
||||
Older versions produce errors, but newer versions are fine.
|
||||
|
||||
~~~
|
||||
|
||||
Then **install the [Angular CLI](https://github.com/angular/angular-cli)** globally.
|
||||
|
||||
|
||||
<code-example language="sh" class="code-shell">
|
||||
npm install -g @angular/cli
|
||||
|
||||
</code-example>
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 id='create-project'>
|
||||
Step 2. Create a new project
|
||||
</h2>
|
||||
|
||||
Open a terminal window.
|
||||
Generate a new project and skeleton application by running the following commands:
|
||||
|
||||
|
||||
<code-example language="sh" class="code-shell">
|
||||
ng new my-app
|
||||
|
||||
</code-example>
|
||||
|
||||
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
Patience please.
|
||||
It takes time to set up a new project, most of it spent installing npm packages.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 id='serve'>
|
||||
Step 3: Serve the application
|
||||
</h2>
|
||||
|
||||
Go to the project directory and launch the server.
|
||||
|
||||
|
||||
<code-example language="sh" class="code-shell">
|
||||
cd my-app
|
||||
ng serve --open
|
||||
|
||||
</code-example>
|
||||
|
||||
The `ng serve` command launches the server, watches your files,
|
||||
and rebuilds the app as you make changes to those files.
|
||||
|
||||
Using the `--open` (or just `-o`) option will automatically open your browser
|
||||
on `http://localhost:4200/`.
|
||||
|
||||
Your app greets you with a message:
|
||||
|
||||
|
||||
<figure class='image-display'>
|
||||
<img src='assets/images/devguide/cli-quickstart/app-works.png' alt="The app works!"> </img>
|
||||
</figure>
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 id='first-component'>
|
||||
Step 4: Edit your first Angular component
|
||||
</h2>
|
||||
|
||||
The CLI created the first Angular component for you.
|
||||
This is the _root component_ and it is named `app-root`.
|
||||
You can find it in `./src/app/app.component.ts`.
|
||||
Open the component file and change the `title` property from _app works!_ to _My First Angular App_:
|
||||
|
||||
|
||||
|
||||
<code-example path="cli-quickstart/src/app/app.component.ts" region="title" linenums="false">
|
||||
|
||||
</code-example>
|
||||
|
||||
The browser reloads automatically with the revised title. That's nice, but it could look better.
|
||||
|
||||
Open `src/app/app.component.css` and give the component some style.
|
||||
|
||||
|
||||
|
||||
<code-example path="cli-quickstart/src/app/app.component.css" linenums="false">
|
||||
|
||||
</code-example>
|
||||
|
||||
|
||||
|
||||
<figure class='image-display'>
|
||||
<img src='assets/images/devguide/cli-quickstart/my-first-app.png' alt="Output of QuickStart app"> </img>
|
||||
</figure>
|
||||
|
||||
Looking good!
|
||||
|
||||
## What's next?
|
||||
That's about all you'd expect to do in a "Hello, World" app.
|
||||
|
||||
You're ready to take the [Tour of Heroes Tutorial](guide/tutorial) and build
|
||||
a small application that demonstrates the great things you can build with Angular.
|
||||
|
||||
Or you can stick around a bit longer to learn about the files in your brand new project.
|
||||
|
||||
## Project file review
|
||||
|
||||
An Angular CLI project is the foundation for both quick experiments and enterprise solutions.
|
||||
|
||||
The first file you should check out is `README.md`.
|
||||
It has some basic information on how to use CLI commands.
|
||||
Whenever you want to know more about how Angular CLI works make sure to visit
|
||||
[the Angular CLI repository](https://github.com/angular/angular-cli) and
|
||||
[Wiki](https://github.com/angular/angular-cli/wiki).
|
||||
|
||||
Some of the generated files might be unfamiliar to you.
|
||||
|
||||
### The `src` folder
|
||||
Your app lives in the `src` folder.
|
||||
All Angular components, templates, styles, images, and anything else your app needs go here.
|
||||
Any files outside of this folder are meant to support building your app.
|
||||
|
||||
|
||||
<aio-filetree>
|
||||
|
||||
|
||||
<aio-folder>
|
||||
src
|
||||
|
||||
<aio-folder>
|
||||
app
|
||||
|
||||
<aio-file>
|
||||
app.component.css
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
app.component.html
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
app.component.spec.ts
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
app.component.ts
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
app.module.ts
|
||||
</aio-file>
|
||||
|
||||
|
||||
</aio-folder>
|
||||
|
||||
|
||||
|
||||
<aio-folder>
|
||||
assets
|
||||
|
||||
<aio-file>
|
||||
.gitkeep
|
||||
</aio-file>
|
||||
|
||||
|
||||
</aio-folder>
|
||||
|
||||
|
||||
|
||||
<aio-folder>
|
||||
environments
|
||||
|
||||
<aio-file>
|
||||
environment.prod.ts
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
environment.ts
|
||||
</aio-file>
|
||||
|
||||
|
||||
</aio-folder>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
favicon.ico
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
index.html
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
main.ts
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
polyfills.ts
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
styles.css
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
test.ts
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
tsconfig.app.json
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
tsconfig.spec.json
|
||||
</aio-file>
|
||||
|
||||
|
||||
</aio-folder>
|
||||
|
||||
|
||||
</aio-filetree>
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
td, th {vertical-align: top}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<table width="100%">
|
||||
|
||||
|
||||
<col width="20%">
|
||||
|
||||
</col>
|
||||
|
||||
|
||||
|
||||
<col width="80%">
|
||||
|
||||
</col>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<th>
|
||||
File
|
||||
</th>
|
||||
|
||||
|
||||
|
||||
<th>
|
||||
Purpose
|
||||
</th>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>app/app.component.{ts,html,css,spec.ts}</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
Defines the `AppComponent` along with an HTML template, CSS stylesheet, and a unit test.
|
||||
It is the **root** component of what will become a tree of nested components
|
||||
as the application evolves.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>app/app.module.ts</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
Defines `AppModule`, the [root module](guide/guide/appmodule) that tells Angular how to assemble the application.
|
||||
Right now it declares only the `AppComponent`.
|
||||
Soon there will be more components to declare.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>assets/*</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
A folder where you can put images and anything else to be copied wholesale
|
||||
when you build your application.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>environments/*</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
This folder contains one file for each of your destination environments,
|
||||
each exporting simple configuration variables to use in your application.
|
||||
The files are replaced on-the-fly when you build your app.
|
||||
You might use a different API endpoint for development than you do for production
|
||||
or maybe different analytics tokens.
|
||||
You might even use some mock services.
|
||||
Either way, the CLI has you covered.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>favicon.ico</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
Every site wants to look good on the bookmark bar.
|
||||
Get started with your very own Angular icon.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>index.html</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
The main HTML page that is served when someone visits your site.
|
||||
Most of the time you'll never need to edit it.
|
||||
The CLI automatically adds all `js` and `css` files when building your app so you
|
||||
never need to add any `<script>` or `<link>` tags here manually.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>main.ts</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
The main entry point for your app.
|
||||
Compiles the application with the [JIT compiler](guide/glossary)
|
||||
and bootstraps the application's root module (`AppModule`) to run in the browser.
|
||||
You can also use the [AOT compiler](guide/glossary)
|
||||
without changing any code by passing in `--aot` to `ng build` or `ng serve`.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>polyfills.ts</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
Different browsers have different levels of support of the web standards.
|
||||
Polyfills help normalize those differences.
|
||||
You should be pretty safe with `core-js` and `zone.js`, but be sure to check out
|
||||
the [Browser Support guide](guide/guide/browser-support) for more information.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>styles.css</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
Your global styles go here.
|
||||
Most of the time you'll want to have local styles in your components for easier maintenance,
|
||||
but styles that affect all of your app need to be in a central place.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>test.ts</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
This is the main entry point for your unit tests.
|
||||
It has some custom configuration that might be unfamiliar, but it's not something you'll
|
||||
need to edit.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>tsconfig.{app|spec}.json</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
TypeScript compiler configuration for the Angular app (`tsconfig.app.json`)
|
||||
and for the unit tests (`tsconfig.spec.json`).
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
### The root folder
|
||||
The `src/` folder is just one of the items inside the project's root folder.
|
||||
Other files help you build, test, maintain, document, and deploy the app.
|
||||
These files go in the root folder next to `src/`.
|
||||
|
||||
|
||||
<aio-filetree>
|
||||
|
||||
|
||||
<aio-folder>
|
||||
my-app
|
||||
|
||||
<aio-folder>
|
||||
e2e
|
||||
|
||||
<aio-file>
|
||||
app.e2e-spec.ts
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
app.po.ts
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
tsconfig.e2e.json
|
||||
</aio-file>
|
||||
|
||||
|
||||
</aio-folder>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
node_modules/...
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
src/...
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
.angular-cli.json
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
.editorconfig
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
.gitignore
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
karma.conf.js
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
package.json
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
protractor.conf.js
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
README.md
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
tsconfig.json
|
||||
</aio-file>
|
||||
|
||||
|
||||
|
||||
<aio-file>
|
||||
tslint.json
|
||||
</aio-file>
|
||||
|
||||
|
||||
</aio-folder>
|
||||
|
||||
|
||||
</aio-filetree>
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
td, th {vertical-align: top}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<table width="100%">
|
||||
|
||||
|
||||
<col width="20%">
|
||||
|
||||
</col>
|
||||
|
||||
|
||||
|
||||
<col width="80%">
|
||||
|
||||
</col>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<th>
|
||||
File
|
||||
</th>
|
||||
|
||||
|
||||
|
||||
<th>
|
||||
Purpose
|
||||
</th>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>e2e/</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
Inside `e2e/` live the End-to-End tests.
|
||||
They shouldn't be inside `src/` because e2e tests are really a separate app that
|
||||
just so happens to test your main app.
|
||||
That's also why they have their own `tsconfig.e2e.json`.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>node_modules/</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
`Node.js` creates this folder and puts all third party modules listed in
|
||||
`package.json` inside of it.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>.angular-cli.json</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
Configuration for Angular CLI.
|
||||
In this file you can set several defaults and also configure what files are included
|
||||
when your project is build.
|
||||
Check out the official documentation if you want to know more.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>.editorconfig</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
Simple configuration for your editor to make sure everyone that uses your project
|
||||
has the same basic configuration.
|
||||
Most editors support an `.editorconfig` file.
|
||||
See http://editorconfig.org for more information.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>.gitignore</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
Git configuration to make sure autogenerated files are not commited to source control.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>karma.conf.js</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
Unit test configuration for the [Karma test runner](https://karma-runner.github.io),
|
||||
used when running `ng test`.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>package.json</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
`npm` configuration listing the third party packages your project uses.
|
||||
You can also add your own [custom scripts](https://docs.npmjs.com/misc/scripts) here.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>protractor.conf.js</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
End-to-end test configuration for [Protractor](http://www.protractortest.org/),
|
||||
used when running `ng e2e`.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>README.md</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
Basic documentation for your project, pre-filled with CLI command information.
|
||||
Make sure to enhance it with project documentation so that anyone
|
||||
checking out the repo can build your app!
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>tsconfig.json</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
TypeScript compiler configuration for your IDE to pick up and give you helpful tooling.
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
|
||||
<td>
|
||||
<code>tslint.json</code>
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td>
|
||||
Linting configuration for [TSLint](https://palantir.github.io/tslint/) together with
|
||||
[Codelyzer](http://codelyzer.com/), used when running `ng lint`.
|
||||
Linting helps keep your code style consistent.
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
### Next Step
|
||||
|
||||
If you're new to Angular, continue on the
|
||||
[learning path](guide/guide/learning-angular).
|
||||
You can skip the "Setup" step since you're already using the Angular CLI setup.
|
||||
|
||||
~~~
|
||||
|
|
@ -1,8 +1,848 @@
|
|||
@title
|
||||
Glossary
|
||||
|
||||
@intro
|
||||
Brief definitions of the most important words in the Angular vocabulary.
|
||||
|
||||
@description
|
||||
|
||||
Angular has its own vocabulary.
|
||||
Most Angular terms are common English words
|
||||
with a specific meaning within the Angular system.
|
||||
|
||||
This glossary lists the most prominent terms
|
||||
and a few less familiar ones that have unusual or
|
||||
unexpected definitions.
|
||||
|
||||
[A](guide/glossary#A) [B](guide/glossary#B) [C](guide/glossary#C) [D](guide/glossary#D) [E](guide/glossary#E) [F](guide/glossary#F) [G](guide/glossary#G) [H](guide/glossary#H) [I](guide/glossary#I)
|
||||
[J](guide/glossary#J) [K](guide/glossary#K) [L](guide/glossary#L) [M](guide/glossary#M) [N](guide/glossary#N) [O](guide/glossary#O) [P](guide/glossary#P) [Q](guide/glossary#Q) [R](guide/glossary#R)
|
||||
[S](guide/glossary#S) [T](guide/glossary#T) [U](guide/glossary#U) [V](guide/glossary#V) [W](guide/glossary#W) [X](guide/glossary#X) [Y](guide/glossary#Y) [Z](guide/glossary#Z)
|
||||
|
||||
|
||||
|
||||
{@a aot}
|
||||
## Ahead-of-time (AOT) compilation
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
You can compile Angular applications at build time.
|
||||
By compiling your application<span if-docs="ts"> using the compiler-cli, `ngc`</span>, you can bootstrap directly
|
||||
to a<span if-docs="ts"> module</span> factory, meaning you don't need to include the Angular compiler in your JavaScript bundle.
|
||||
Ahead-of-time compiled applications also benefit from decreased load time and increased performance.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Annotation
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
In practice, a synonym for [Decoration](guide/glossary#decorator).
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
{@a attribute-directive}
|
||||
|
||||
|
||||
{@a attribute-directives}
|
||||
## Attribute directives
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A category of [directive](guide/glossary#directive) that can listen to and modify the behavior of
|
||||
other HTML elements, attributes, properties, and components. They are usually represented
|
||||
as HTML attributes, hence the name.
|
||||
|
||||
For example, you can use the `ngClass` directive to add and remove CSS class names.
|
||||
|
||||
Learn about them in the [_Attribute Directives_](guide/!{docsLatest}/guide/attribute-directives) guide.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
## Binding
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
Usually refers to [data binding](guide/glossary#data-binding) and the act of
|
||||
binding an HTML object property to a data object property.
|
||||
|
||||
Sometimes refers to a [dependency-injection](guide/glossary#dependency-injection) binding
|
||||
between a "token"—also referred to as a "key"—and a dependency [provider](guide/glossary#provider).
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Bootstrap
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
You launch an Angular application by "bootstrapping" it using the application root Angular module (`AppModule`).
|
||||
Bootstrapping identifies an application's top level "root" [component](guide/glossary#component),
|
||||
which is the first component that is loaded for the application.
|
||||
For more information, see the [Setup](guide/!{docsLatest}/guide/setup) page.
|
||||
|
||||
You can bootstrap multiple apps in the same `index.html`, each app with its own top-level root.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
## camelCase
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
The practice of writing compound words or phrases such that each word or abbreviation begins with a capital letter
|
||||
_except the first letter, which is lowercase_.
|
||||
|
||||
Function, property, and method names are typically spelled in camelCase. For example, `square`, `firstName`, and `getHeroes`. Notice that `square` is an example of how you write a single word in camelCase.
|
||||
|
||||
camelCase is also known as *lower camel case* to distinguish it from *upper camel case*, or [PascalCase](guide/glossary#pascalcase).
|
||||
In Angular documentation, "camelCase" always means *lower camel case*.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
{@a component}
|
||||
## Component
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
An Angular class responsible for exposing data to a [view](guide/glossary#view) and handling most of the view’s display and user-interaction logic.
|
||||
|
||||
The *component* is one of the most important building blocks in the Angular system.
|
||||
It is, in fact, an Angular [directive](guide/glossary#directive) with a companion [template](guide/glossary#template).
|
||||
|
||||
Apply the `!{_at}Component` !{_decoratorLink} to
|
||||
the component class, thereby attaching to the class the essential component metadata
|
||||
that Angular needs to create a component instance and render the component with its template
|
||||
as a view.
|
||||
|
||||
Those familiar with "MVC" and "MVVM" patterns will recognize
|
||||
the component in the role of "controller" or "view model".
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
## dash-case
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
The practice of writing compound words or phrases such that each word is separated by a dash or hyphen (`-`).
|
||||
This form is also known as kebab-case.
|
||||
|
||||
[Directive](guide/glossary#directive) selectors (like `my-app`) <span if-docs="ts">and
|
||||
the root of filenames (such as `hero-list.component.ts`)</span> are often
|
||||
spelled in dash-case.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Data binding
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
Applications display data values to a user and respond to user
|
||||
actions (such as clicks, touches, and keystrokes).
|
||||
|
||||
In data binding, you declare the relationship between an HTML widget and data source
|
||||
and let the framework handle the details.
|
||||
Data binding is an alternative to manually pushing application data values into HTML, attaching
|
||||
event listeners, pulling changed values from the screen, and
|
||||
updating application data values.
|
||||
|
||||
Angular has a rich data-binding framework with a variety of data-binding
|
||||
operations and supporting declaration syntax.
|
||||
|
||||
Read about the following forms of binding in the [Template Syntax](guide/!{docsLatest}/guide/template-syntax) page:
|
||||
* [Interpolation](guide/!{docsLatest}/guide/template-syntax).
|
||||
* [Property binding](guide/!{docsLatest}/guide/template-syntax).
|
||||
* [Event binding](guide/!{docsLatest}/guide/template-syntax).
|
||||
* [Attribute binding](guide/!{docsLatest}/guide/template-syntax).
|
||||
* [Class binding](guide/!{docsLatest}/guide/template-syntax).
|
||||
* [Style binding](guide/!{docsLatest}/guide/template-syntax).
|
||||
* [Two-way data binding with ngModel](guide/!{docsLatest}/guide/template-syntax).
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
{@a decorator}
|
||||
|
||||
|
||||
{@a decoration}
|
||||
## Decorator | decoration
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A *function* that adds metadata to a class, its members (properties, methods) and function arguments.
|
||||
|
||||
Decorators are a JavaScript language [feature](https://github.com/wycats/javascript-decorators), implemented in TypeScript and proposed for ES2016 (also known as ES7).
|
||||
|
||||
To apply a decorator, position it immediately above or to the left of the item it decorates.
|
||||
|
||||
Angular has its own set of decorators to help it interoperate with your application parts.
|
||||
The following example is a `@Component` decorator that identifies a
|
||||
class as an Angular [component](guide/glossary#component) and an `@Input` decorator applied to the `name` property
|
||||
of that component. The elided object argument to the `@Component` decorator would contain the pertinent component metadata.
|
||||
```
|
||||
@Component({...})
|
||||
export class AppComponent {
|
||||
constructor(@Inject('SpecialFoo') public foo:Foo) {}
|
||||
@Input() name:string;
|
||||
}
|
||||
```
|
||||
The scope of a decorator is limited to the language feature
|
||||
that it decorates. None of the decorations shown here will "leak" to other
|
||||
classes that follow it in the file.
|
||||
|
||||
|
||||
~~~ {.alert.is-important}
|
||||
|
||||
Always include parentheses `()` when applying a decorator.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Dependency injection
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A design pattern and mechanism
|
||||
for creating and delivering parts of an application to other
|
||||
parts of an application that request them.
|
||||
|
||||
Angular developers prefer to build applications by defining many simple parts
|
||||
that each do one thing well and then wiring them together at runtime.
|
||||
|
||||
These parts often rely on other parts. An Angular [component](guide/glossary#component)
|
||||
part might rely on a service part to get data or perform a calculation. When
|
||||
part "A" relies on another part "B," you say that "A" depends on "B" and
|
||||
that "B" is a dependency of "A."
|
||||
|
||||
You can ask a "dependency injection system" to create "A"
|
||||
for us and handle all the dependencies.
|
||||
If "A" needs "B" and "B" needs "C," the system resolves that chain of dependencies
|
||||
and returns a fully prepared instance of "A."
|
||||
|
||||
|
||||
Angular provides and relies upon its own sophisticated
|
||||
dependency-injection system
|
||||
to assemble and run applications by "injecting" application parts
|
||||
into other application parts where and when needed.
|
||||
|
||||
At the core, an [`injector`](guide/glossary#injector) returns dependency values on request.
|
||||
The expression `injector.get(token)` returns the value associated with the given token.
|
||||
|
||||
A token is an Angular type (`OpaqueToken`). You rarely need to work with tokens directly; most
|
||||
methods accept a class name (`Foo`) or a string ("foo") and Angular converts it
|
||||
to a token. When you write `injector.get(Foo)`, the injector returns
|
||||
the value associated with the token for the `Foo` class, typically an instance of `Foo` itself.
|
||||
|
||||
During many of its operations, Angular makes similar requests internally, such as when it creates a [`component`](guide/glossary#component) for display.
|
||||
|
||||
The `Injector` maintains an internal map of tokens to dependency values.
|
||||
If the `Injector` can't find a value for a given token, it creates
|
||||
a new value using a `Provider` for that token.
|
||||
|
||||
A [provider](guide/glossary#provider) is a recipe for
|
||||
creating new instances of a dependency value associated with a particular token.
|
||||
|
||||
An injector can only create a value for a given token if it has
|
||||
a `provider` for that token in its internal provider registry.
|
||||
Registering providers is a critical preparatory step.
|
||||
|
||||
Angular registers some of its own providers with every injector.
|
||||
You can register your own providers.
|
||||
|
||||
Read more in the [Dependency Injection](guide/!{docsLatest}/guide/dependency-injection) page.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
{@a directive}
|
||||
|
||||
|
||||
{@a directives}
|
||||
## Directive
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
An Angular class responsible for creating, reshaping, and interacting with HTML elements
|
||||
in the browser DOM. The directive is Angular's most fundamental feature.
|
||||
|
||||
A directive is usually associated with an HTML element or attribute.
|
||||
This element or attribute is often referred to as the directive itself.
|
||||
|
||||
When Angular finds a directive in an HTML template,
|
||||
it creates the matching directive class instance
|
||||
and gives the instance control over that portion of the browser DOM.
|
||||
|
||||
You can invent custom HTML markup (for example, `<my-directive>`) to
|
||||
associate with your custom directives. You add this custom markup to HTML templates
|
||||
as if you were writing native HTML. In this way, directives become extensions of
|
||||
HTML itself.
|
||||
|
||||
Directives fall into one of the following categories:
|
||||
|
||||
* [Components](guide/glossary#component) combine application logic with an HTML template to
|
||||
render application [views](guide/glossary#view). Components are usually represented as HTML elements.
|
||||
They are the building blocks of an Angular application.
|
||||
|
||||
* [Attribute directives](guide/glossary#attribute-directive) can listen to and modify the behavior of
|
||||
other HTML elements, attributes, properties, and components. They are usually represented
|
||||
as HTML attributes, hence the name.
|
||||
|
||||
* [Structural directives](guide/glossary#structural-directive) are responsible for
|
||||
shaping or reshaping HTML layout, typically by adding, removing, or manipulating
|
||||
elements and their children.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
## ECMAScript
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
The [official JavaScript language specification](https://en.wikipedia.org/wiki/ECMAScript).
|
||||
|
||||
The latest approved version of JavaScript is
|
||||
[ECMAScript 2016](http://www.ecma-international.org/ecma-262/7.0/)
|
||||
(also known as "ES2016" or "ES7"). Many Angular developers write their applications
|
||||
in ES7 or a dialect that strives to be
|
||||
compatible with it, such as [TypeScript](guide/glossary#typescript).
|
||||
|
||||
Most modern browsers only support the much older "ECMAScript 5" (also known as "ES5") standard.
|
||||
Applications written in ES2016, ES2015, or one of their dialects must be [transpiled](guide/glossary#transpile)
|
||||
to ES5 JavaScript.
|
||||
|
||||
Angular developers can write in ES5 directly.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## ES2015
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
Short hand for [ECMAScript](guide/glossary#ecmascript) 2015.
|
||||
|
||||
~~~
|
||||
|
||||
## ES5
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
Short hand for [ECMAScript](guide/glossary#ecmascript) 5, the version of JavaScript run by most modern browsers.
|
||||
|
||||
~~~
|
||||
|
||||
## ES6
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
Short hand for [ECMAScript](guide/glossary#ecmascript) 2015.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
{@a F}
|
||||
|
||||
|
||||
{@a G}
|
||||
|
||||
|
||||
{@a H}
|
||||
|
||||
## Injector
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
An object in the Angular [dependency-injection system](guide/glossary#dependency-injection)
|
||||
that can find a named dependency in its cache or create a dependency
|
||||
with a registered [provider](guide/glossary#provider).
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Input
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A directive property that can be the *target* of a
|
||||
[property binding](guide/!{docsLatest}/guide/template-syntax) (explained in detail in the [Template Syntax](guide/!{docsLatest}/guide/template-syntax) page).
|
||||
Data values flow *into* this property from the data source identified
|
||||
in the template expression to the right of the equal sign.
|
||||
|
||||
See the [Input and output properties](guide/!{docsLatest}/guide/template-syntax) section of the [Template Syntax](guide/!{docsLatest}/guide/template-syntax) page.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Interpolation
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A form of [property data binding](guide/glossary#data-binding) in which a
|
||||
[template expression](guide/glossary#template-expression) between double-curly braces
|
||||
renders as text. That text may be concatenated with neighboring text
|
||||
before it is assigned to an element property
|
||||
or displayed between element tags, as in this example.
|
||||
|
||||
|
||||
<code-example language="html" escape="html">
|
||||
<label>My current hero is {{hero.name}}</label>
|
||||
|
||||
</code-example>
|
||||
|
||||
Read more about [interpolation](guide/!{docsLatest}/guide/template-syntax) in the
|
||||
[Template Syntax](guide/!{docsLatest}/guide/template-syntax) page.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
|
||||
{@a jit}
|
||||
## Just-in-time (JIT) compilation
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A bootstrapping method of compiling components<span if-docs="ts"> and modules</span> in the browser
|
||||
and launching the application dynamically. Just-in-time mode is a good choice during development.
|
||||
Consider using the [ahead-of-time](guide/glossary#aot) mode for production apps.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
## kebab-case
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
See [dash-case](guide/glossary#dash-case).
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
## Lifecycle hooks
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
[Directives](guide/glossary#directive) and [components](guide/glossary#component) have a lifecycle
|
||||
managed by Angular as it creates, updates, and destroys them.
|
||||
|
||||
You can tap into key moments in that lifecycle by implementing
|
||||
one or more of the lifecycle hook interfaces.
|
||||
|
||||
Each interface has a single hook method whose name is the interface name prefixed with `ng`.
|
||||
For example, the `OnInit` interface has a hook method named `ngOnInit`.
|
||||
|
||||
Angular calls these hook methods in the following order:
|
||||
* `ngOnChanges`: when an [input](guide/glossary#input)/[output](guide/glossary#output) binding value changes.
|
||||
* `ngOnInit`: after the first `ngOnChanges`.
|
||||
* `ngDoCheck`: developer's custom change detection.
|
||||
* `ngAfterContentInit`: after component content initialized.
|
||||
* `ngAfterContentChecked`: after every check of component content.
|
||||
* `ngAfterViewInit`: after a component's views are initialized.
|
||||
* `ngAfterViewChecked`: after every check of a component's views.
|
||||
* `ngOnDestroy`: just before the directive is destroyed.
|
||||
|
||||
Read more in the [Lifecycle Hooks](guide/!{docsLatest}/guide/lifecycle-hooks) page.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
## Module
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
|
||||
|
||||
~~~ {.alert.is-important}
|
||||
|
||||
Angular has the following types of modules:
|
||||
- [Angular modules](guide/glossary#angular-module).
|
||||
For details and examples, see the [Angular Modules](guide/!{docsLatest}/guide/ngmodule) page.
|
||||
- ES2015 modules, as described in this section.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
A cohesive block of code dedicated to a single purpose.
|
||||
|
||||
Angular apps are modular.
|
||||
|
||||
In general, you assemble an application from many modules, both the ones you write and the ones you acquire from others.
|
||||
|
||||
A module *exports* something of value in that code, typically one thing such as a class;
|
||||
a module that needs that class *imports* it.
|
||||
|
||||
The structure of Angular modules and the import/export syntax
|
||||
is based on the [ES2015 module standard](http://www.2ality.com/2014/09/es6-modules-final.html).
|
||||
|
||||
An application that adheres to this standard requires a module loader to
|
||||
load modules on request and resolve inter-module dependencies.
|
||||
Angular doesn't include a module loader and doesn't have a preference
|
||||
for any particular third-party library (although most examples use SystemJS).
|
||||
You can use any module library that conforms to the standard.
|
||||
|
||||
Modules are typically named after the file in which the exported thing is defined.
|
||||
The Angular [DatePipe](https://github.com/angular/angular/blob/master/modules/@angular/common/src/pipes/date_pipe.ts)
|
||||
class belongs to a feature module named `date_pipe` in the file `date_pipe.ts`.
|
||||
|
||||
You rarely access Angular feature modules directly. You usually import them from an Angular [scoped package](guide/glossary#scoped-package) such as `@angular/core`.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
{@a N}
|
||||
|
||||
## Output
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A directive property that can be the *target* of event binding
|
||||
(read more in the [event binding](guide/!{docsLatest}/guide/template-syntax)
|
||||
section of the [Template Syntax](guide/!{docsLatest}/guide/template-syntax) page).
|
||||
Events stream *out* of this property to the receiver identified
|
||||
in the template expression to the right of the equal sign.
|
||||
|
||||
See the [Input and output properties](guide/!{docsLatest}/guide/template-syntax) section of the [Template Syntax](guide/!{docsLatest}/guide/template-syntax) page.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
## PascalCase
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
The practice of writing individual words, compound words, or phrases such that each word or abbreviation begins with a capital letter.
|
||||
Class names are typically spelled in PascalCase. For example, `Person` and `HeroDetailComponent`.
|
||||
|
||||
This form is also known as *upper camel case* to distinguish it from *lower camel case* or simply [camelCase](guide/glossary#camelcase).
|
||||
In this documentation, "PascalCase" means *upper camel case* and "camelCase" means *lower camel case*.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Pipe
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
An Angular pipe is a function that transforms input values to output values for
|
||||
display in a [view](guide/glossary#view).
|
||||
Here's an example that uses the built-in `currency` pipe to display
|
||||
a numeric value in the local currency.
|
||||
|
||||
|
||||
<code-example language="html" escape="html">
|
||||
<label>Price: </label>{{product.price | currency}}
|
||||
|
||||
</code-example>
|
||||
|
||||
You can also write your own custom pipes.
|
||||
Read more in the page on [pipes](guide/!{docsLatest}/guide/pipes).
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Provider
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A _provider_ creates a new instance of a dependency for the
|
||||
[dependency injection](guide/glossary#dependency-injection) system.
|
||||
It relates a lookup token to code—sometimes called a "recipe"—that can create a dependency value.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
{@a Q}
|
||||
|
||||
## Reactive forms
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A technique for building Angular forms through code in a component.
|
||||
The alternative technique is [template-driven forms](guide/glossary#template-driven-forms).
|
||||
|
||||
When building reactive forms:
|
||||
- The "source of truth" is the component. The validation is defined using code in the component.
|
||||
- Each control is explicitly created in the component class with `new FormControl()` or with `FormBuilder`.
|
||||
- The template input elements do *not* use `ngModel`.
|
||||
- The associated Angular directives are all prefixed with `Form`, such as `FormGroup`, `FormControl`, and `FormControlName`.
|
||||
|
||||
Reactive forms are powerful, flexible, and a good choice for more complex data-entry form scenarios, such as dynamic generation of form controls.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Router
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
Most applications consist of many screens or [views](guide/glossary#view).
|
||||
The user navigates among them by clicking links and buttons,
|
||||
and performing other similar actions that cause the application to
|
||||
replace one view with another.
|
||||
|
||||
The Angular component router is a richly featured mechanism for configuring and managing the entire view navigation process, including the creation and destruction
|
||||
of views.
|
||||
|
||||
~~~
|
||||
|
||||
## Router module
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A separate [Angular module](guide/glossary#angular-module) that provides the necessary service providers and directives for navigating through application views.
|
||||
|
||||
For more information, see the [Routing & Navigation](guide/!{docsLatest}/guide/router) page.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Routing component
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
An Angular [component](guide/glossary#component) with a `RouterOutlet` that displays views based on router navigations.
|
||||
|
||||
For more information, see the [Routing & Navigation](guide/!{docsLatest}/guide/router) page.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
## Scoped package
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A way to group related *npm* packages.
|
||||
Read more at the [npm-scope](https://docs.npmjs.com/misc/scope) page.
|
||||
|
||||
Angular modules are delivered within *scoped packages* such as `@angular/core`,
|
||||
`@angular/common`, `@angular/platform-browser-dynamic`, `@angular/http`, and `@angular/router`.
|
||||
|
||||
Import a scoped package the same way that you import a normal package.
|
||||
The only difference, from a consumer perspective,
|
||||
is that the scoped package name begins with the Angular *scope name*, `@angular`.
|
||||
|
||||
|
||||
|
||||
<code-example path="architecture/src/app/app.component.ts" linenums="false" title="architecture/ts/src/app/app.component.ts (import)" region="import">
|
||||
|
||||
</code-example>
|
||||
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Service
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
For data or logic that is not associated
|
||||
with a specific view or that you want to share across components, build services.
|
||||
|
||||
Applications often require services such as a hero data service or a logging service.
|
||||
|
||||
A service is a class with a focused purpose.
|
||||
You often create a service to implement features that are
|
||||
independent from any specific view,
|
||||
provide shared data or logic across components, or encapsulate external interactions.
|
||||
|
||||
Applications often require services such as a data service or a logging service.
|
||||
|
||||
For more information, see the [Services](guide/!{docsLatest}/tutorial/toh-pt4) page of the [Tour of Heroes](guide/!{docsLatest}/tutorial/) tutorial.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
{@a snake-case}
|
||||
## snake_case
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
The practice of writing compound words or phrases such that an
|
||||
underscore (`_`) separates one word from the next. This form is also known as *underscore case*.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
{@a structural-directive}
|
||||
|
||||
|
||||
{@a structural-directives}
|
||||
## Structural directives
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A category of [directive](guide/glossary#directive) that can
|
||||
shape or reshape HTML layout, typically by adding and removing elements in the DOM.
|
||||
The `ngIf` "conditional element" directive and the `ngFor` "repeater" directive are well-known examples.
|
||||
|
||||
Read more in the [Structural Directives](guide/!{docsLatest}/guide/structural-directives) page.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
## Template
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A chunk of HTML that Angular uses to render a [view](guide/glossary#view) with
|
||||
the support and guidance of an Angular [directive](guide/glossary#directive),
|
||||
most notably a [component](guide/glossary#component).
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Template-driven forms
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A technique for building Angular forms using HTML forms and input elements in the view.
|
||||
The alternate technique is [Reactive Forms](guide/glossary#reactive-forms).
|
||||
|
||||
When building template-driven forms:
|
||||
- The "source of truth" is the template. The validation is defined using attributes on the individual input elements.
|
||||
- [Two-way binding](guide/glossary#data-binding) with `ngModel` keeps the component model synchronized with the user's entry into the input elements.
|
||||
- Behind the scenes, Angular creates a new control for each input element, provided you have set up a `name` attribute and two-way binding for each input.
|
||||
- The associated Angular directives are all prefixed with `ng` such as `ngForm`, `ngModel`, and `ngModelGroup`.
|
||||
|
||||
Template-driven forms are convenient, quick, and simple. They are a good choice for many basic data-entry form scenarios.
|
||||
|
||||
Read about how to build template-driven forms
|
||||
in the [Forms](guide/!{docsLatest}/guide/forms) page.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Template expression
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A !{_Lang}-like syntax that Angular evaluates within
|
||||
a [data binding](guide/glossary#data-binding).
|
||||
|
||||
Read about how to write template expressions
|
||||
in the [Template expressions](guide/!{docsLatest}/guide/template-syntax) section
|
||||
of the [Template Syntax](guide/!{docsLatest}/guide/template-syntax) page.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## Transpile
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
The process of transforming code written in one form of JavaScript
|
||||
(such as TypeScript) into another form of JavaScript (such as [ES5](guide/glossary#es5)).
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
## TypeScript
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A version of JavaScript that supports most [ECMAScript 2015](guide/glossary#es2015)
|
||||
language features such as [decorators](guide/glossary#decorator).
|
||||
|
||||
TypeScript is also notable for its optional typing system, which provides
|
||||
compile-time type checking and strong tooling support (such as "intellisense,"
|
||||
code completion, refactoring, and intelligent search). Many code editors
|
||||
and IDEs support TypeScript either natively or with plugins.
|
||||
|
||||
TypeScript is the preferred language for Angular development, although
|
||||
you can use other JavaScript dialects such as [ES5](guide/glossary#es5).
|
||||
|
||||
Read more about TypeScript at [typescriptlang.org](http://www.typescriptlang.org/).
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
{@a U}
|
||||
|
||||
## View
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A portion of the screen that displays information and responds
|
||||
to user actions such as clicks, mouse moves, and keystrokes.
|
||||
|
||||
Angular renders a view under the control of one or more [directives](guide/glossary#directive),
|
||||
especially [component](guide/glossary#component) directives and their companion [templates](guide/glossary#template).
|
||||
The component plays such a prominent role that it's often
|
||||
convenient to refer to a component as a view.
|
||||
|
||||
Views often contain other views. Any view might be loaded and unloaded
|
||||
dynamically as the user navigates through the application, typically
|
||||
under the control of a [router](guide/glossary#router).
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
|
||||
|
||||
{@a W}
|
||||
|
||||
|
||||
{@a X}
|
||||
|
||||
|
||||
{@a Y}
|
||||
|
||||
## Zone
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
A mechanism for encapsulating and intercepting
|
||||
a JavaScript application's asynchronous activity.
|
||||
|
||||
The browser DOM and JavaScript have a limited number
|
||||
of asynchronous activities, such as DOM events (for example, clicks),
|
||||
[promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise), and
|
||||
[XHR](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest)
|
||||
calls to remote servers.
|
||||
|
||||
Zones intercept all of these activities and give a "zone client" the opportunity
|
||||
to take action before and after the async activity finishes.
|
||||
|
||||
Angular runs your application in a zone where it can respond to
|
||||
asynchronous events by checking for data changes and updating
|
||||
the information it displays via [data bindings](guide/glossary#data-binding).
|
||||
|
||||
Learn more about zones in this
|
||||
[Brian Ford video](https://www.youtube.com/watch?v=3IqtmUscE_U).
|
||||
|
||||
~~~
|
||||
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
@description
|
||||
|
||||
Angular applications are made up of _components_.
|
||||
A _component_ is the combination of an HTML template and a component class that controls a portion of the screen. Here is an example of a component that displays a simple string:
|
||||
|
||||
|
||||
|
||||
<code-example path="quickstart/src/app/app.component.ts" linenums="false">
|
||||
|
||||
</code-example>
|
||||
|
||||
|
||||
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
Try this **<live-example noDownload>QuickStart example on Plunker</live-example>** without installing anything.
|
||||
Try it locally with the [***QuickStart seed***](guide/guide/setup)
|
||||
and prepare for development of a real Angular application.
|
||||
|
||||
|
||||
~~~
|
||||
|
||||
Every component begins with an `@Component` [!{_decorator}](guide/glossary)
|
||||
<span if-docs="ts">function</span> that
|
||||
<span if-docs="ts">takes a _metadata_ object. The metadata object</span> describes how the HTML template and component class work together.
|
||||
|
||||
The `selector` property tells Angular to display the component inside a custom `<my-app>` tag in the `index.html`.
|
||||
|
||||
|
||||
<code-example path="quickstart/src/index.html" region="my-app" linenums="false">
|
||||
|
||||
</code-example>
|
||||
|
||||
The `template` property defines a message inside an `<h1>` header.
|
||||
The message starts with "Hello" and ends with `{{name}}`,
|
||||
which is an Angular [interpolation binding](guide/guide/displaying-data) expression.
|
||||
At runtime, Angular replaces `{{name}}` with the value of the component's `name` property.
|
||||
Interpolation binding is one of many Angular features you'll discover in this documentation.
|
||||
|
||||
|
||||
~~~ {.l-sub-section}
|
||||
|
||||
### Next step
|
||||
|
||||
Start [**learning Angular**](guide/guide/learning-angular).
|
||||
|
||||
~~~
|
||||
|
Loading…
Reference in New Issue