feat(aio): add initial angular-cli scaffold (#14118)

- adds initial CLI-generated app
- adds material toolbar
- initial (very rough) scss setup, lifted from angular/material
- initial routing scaffold w/ homepage
This commit is contained in:
Rob Wormald 2017-01-27 00:20:51 -08:00 committed by Igor Minar
parent b141a227fb
commit e130bc171f
222 changed files with 7052 additions and 592 deletions

4
.gitignore vendored
View File

@ -25,3 +25,7 @@ npm-debug.log
# rollup-test output
/modules/rollup-test/dist/
# angular.io
/angular.io/node_modules/
/angular.io/dist/

31
angular.io/README.md Normal file
View File

@ -0,0 +1,31 @@
# Site
This project was generated with [angular-cli](https://github.com/angular/angular-cli) version 1.0.0-beta.26.
## Development server
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
## Code scaffolding
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive/pipe/service/class/module`.
## Build
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.
## Running unit tests
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
## Running end-to-end tests
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
Before running the tests make sure you are serving the app via `ng serve`.
## Deploying to GitHub Pages
Run `ng github-pages:deploy` to deploy to GitHub Pages.
## Further help
To get more help on the `angular-cli` use `ng help` or go check out the [Angular-CLI README](https://github.com/angular/angular-cli/blob/master/README.md).

View File

@ -0,0 +1,59 @@
{
"project": {
"version": "1.0.0-beta.26",
"name": "site"
},
"apps": [
{
"root": "src",
"outDir": "dist",
"assets": [
"assets",
"favicon.ico"
],
"index": "index.html",
"main": "main.ts",
"polyfills": "polyfills.ts",
"test": "test.ts",
"tsconfig": "tsconfig.json",
"prefix": "app",
"styles": [
"styles.scss"
],
"scripts": [
],
"environments": {
"source": "environments/environment.ts",
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
}
],
"e2e": {
"protractor": {
"config": "./protractor.conf.js"
}
},
"test": {
"karma": {
"config": "./karma.conf.js"
}
},
"defaults": {
"styleExt": "css",
"prefixInterfaces": false,
"inline": {
"style": false,
"template": false
},
"spec": {
"class": false,
"component": true,
"directive": true,
"module": false,
"pipe": true,
"service": true
}
}
}

View File

@ -0,0 +1,6 @@
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}

View File

@ -0,0 +1,14 @@
import { SitePage } from './app.po';
describe('site App', function() {
let page: SitePage;
beforeEach(() => {
page = new SitePage();
});
it('should display message saying app works', () => {
page.navigateTo();
expect(page.getParagraphText()).toEqual('app works!');
});
});

11
angular.io/e2e/app.po.ts Normal file
View File

@ -0,0 +1,11 @@
import { browser, element, by } from 'protractor';
export class SitePage {
navigateTo() {
return browser.get('/');
}
getParagraphText() {
return element(by.css('app-root h1')).getText();
}
}

View File

@ -0,0 +1,16 @@
{
"compileOnSave": false,
"compilerOptions": {
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"module": "commonjs",
"moduleResolution": "node",
"outDir": "../dist/out-tsc-e2e",
"sourceMap": true,
"target": "es5",
"typeRoots": [
"../node_modules/@types"
]
}
}

14
angular.io/firebase.json Normal file
View File

@ -0,0 +1,14 @@
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "dist",
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}

43
angular.io/karma.conf.js Normal file
View File

@ -0,0 +1,43 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/0.13/config/configuration-file.html
console.log('karama!!!')
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', 'angular-cli'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-remap-istanbul'),
require('angular-cli/plugins/karma')
],
files: [
{ pattern: './src/test.ts', watched: false }
],
preprocessors: {
'./src/test.ts': ['angular-cli']
},
mime: {
'text/x-typescript': ['ts','tsx']
},
remapIstanbulReporter: {
reports: {
html: 'coverage',
lcovonly: './coverage/coverage.lcov'
}
},
angularCli: {
config: './angular-cli.json',
environment: 'dev'
},
reporters: config.angularCli && config.angularCli.codeCoverage
? ['progress', 'karma-remap-istanbul']
: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false
});
};

View File

@ -1,12 +1,48 @@
{
"name": "angular.io",
"version": "0.0.0",
"main": "index.js",
"repository": "git@github.com:angular/angular.git",
"author": "Angular",
"license": "MIT",
"dependencies": {},
"angular-cli": {},
"scripts": {
"ng": "ng",
"start": "ng serve",
"lint": "tslint \"src/**/*.ts\" --project src/tsconfig.json --type-check && tslint \"e2e/**/*.ts\" --project e2e/tsconfig.json --type-check",
"test": "ng test",
"pree2e": "webdriver-manager update --standalone false --gecko false",
"e2e": "protractor"
},
"private": true,
"dependencies": {
"@angular/common": "^2.3.1",
"@angular/compiler": "^2.3.1",
"@angular/core": "^2.3.1",
"@angular/forms": "^2.3.1",
"@angular/http": "^2.3.1",
"@angular/material": "^2.0.0-beta.1",
"@angular/platform-browser": "^2.3.1",
"@angular/platform-browser-dynamic": "^2.3.1",
"@angular/router": "^3.3.1",
"core-js": "^2.4.1",
"rxjs": "^5.0.1",
"ts-helpers": "^1.1.1",
"zone.js": "^0.7.2"
},
"devDependencies": {
"firebase-tools": "^3.2.1"
"@angular/compiler-cli": "^2.3.1",
"@types/jasmine": "2.5.38",
"@types/node": "^6.0.42",
"angular-cli": "1.0.0-beta.26",
"codelyzer": "~2.0.0-beta.1",
"jasmine-core": "2.5.2",
"jasmine-spec-reporter": "2.5.0",
"karma": "1.2.0",
"karma-chrome-launcher": "^2.0.0",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.0.2",
"karma-remap-istanbul": "^0.2.1",
"protractor": "~4.0.13",
"ts-node": "1.2.1",
"tslint": "^4.3.0",
"typescript": "2.0.10"
}
}

View File

@ -0,0 +1,32 @@
// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts
/*global jasmine */
var SpecReporter = require('jasmine-spec-reporter');
exports.config = {
allScriptsTimeout: 11000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
capabilities: {
'browserName': 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
useAllAngular2AppRoots: true,
beforeLaunch: function() {
require('ts-node').register({
project: 'e2e'
});
},
onPrepare: function() {
jasmine.getEnv().addReporter(new SpecReporter());
}
};

View File

@ -0,0 +1,7 @@
<md-toolbar color="primary" class="app-toolbar">
<span>Angular</span>
</md-toolbar>
<section class="app-content">
<router-outlet></router-outlet>
</section>

View File

View File

@ -0,0 +1,38 @@
// /* tslint:disable:no-unused-variable */
// import { TestBed, async } from '@angular/core/testing';
// import { AppComponent } from './app.component';
describe('AppComponent', () => {
// beforeEach(() => {
// TestBed.configureTestingModule({
// declarations: [
// AppComponent
// ],
// });
// TestBed.compileComponents();
// });
it('should work', () => {
expect(true).toBe(true)
})
})
// it('should create the app', async(() => {
// const fixture = TestBed.createComponent(AppComponent);
// const app = fixture.debugElement.componentInstance;
// expect(app).toBeTruthy();
// }));
// it(`should have as title 'app works!'`, async(() => {
// const fixture = TestBed.createComponent(AppComponent);
// const app = fixture.debugElement.componentInstance;
// expect(app.title).toEqual('app works!');
// }));
// it('should render title in a h1 tag', async(() => {
// const fixture = TestBed.createComponent(AppComponent);
// fixture.detectChanges();
// const compiled = fixture.debugElement.nativeElement;
// expect(compiled.querySelector('h1').textContent).toContain('app works!');
// }));
// });

View File

@ -0,0 +1,10 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-shell',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'app works!';
}

View File

@ -0,0 +1,21 @@
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
import { MdToolbarModule } from '@angular/material/toolbar';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
MdToolbarModule.forRoot(),
RouterModule.forRoot([
{ path: '', loadChildren: './home-page/home-page.module#HomePageModule'}
])
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

View File

@ -0,0 +1,3 @@
<p>
docs-app works!
</p>

View File

@ -0,0 +1,28 @@
// /* tslint:disable:no-unused-variable */
// import { async, ComponentFixture, TestBed } from '@angular/core/testing';
// import { By } from '@angular/platform-browser';
// import { DebugElement } from '@angular/core';
// import { DocsAppComponent } from './docs-app.component';
// describe('DocsAppComponent', () => {
// let component: DocsAppComponent;
// let fixture: ComponentFixture<DocsAppComponent>;
// beforeEach(async(() => {
// TestBed.configureTestingModule({
// declarations: [ DocsAppComponent ]
// })
// .compileComponents();
// }));
// beforeEach(() => {
// fixture = TestBed.createComponent(DocsAppComponent);
// component = fixture.componentInstance;
// fixture.detectChanges();
// });
// it('should create', () => {
// expect(component).toBeTruthy();
// });
// });

View File

@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'ngio-docs-app',
templateUrl: './docs-app.component.html',
styleUrls: ['./docs-app.component.css']
})
export class DocsAppComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}

View File

@ -0,0 +1,19 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { DocsAppComponent } from './docs-app.component'
import { RouterModule } from '@angular/router'
@NgModule({
imports: [
CommonModule,
RouterModule.forChild([
{ path: '', pathMatch: 'full', component: DocsAppComponent}
])
],
declarations: [
DocsAppComponent
]
})
export class DocsAppModule {
}

View File

@ -0,0 +1,3 @@
<p>
home-page works!
</p>

View File

@ -0,0 +1,28 @@
// /* tslint:disable:no-unused-variable */
// import { async, ComponentFixture, TestBed } from '@angular/core/testing';
// import { By } from '@angular/platform-browser';
// import { DebugElement } from '@angular/core';
// import { HomePageComponent } from './home-page.component';
// describe('HomePageComponent', () => {
// let component: HomePageComponent;
// let fixture: ComponentFixture<HomePageComponent>;
// beforeEach(async(() => {
// TestBed.configureTestingModule({
// declarations: [ HomePageComponent ]
// })
// .compileComponents();
// }));
// beforeEach(() => {
// fixture = TestBed.createComponent(HomePageComponent);
// component = fixture.componentInstance;
// fixture.detectChanges();
// });
// it('should create', () => {
// expect(component).toBeTruthy();
// });
// });

View File

@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-home-page',
templateUrl: './home-page.component.html',
styleUrls: ['./home-page.component.css']
})
export class HomePageComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}

View File

@ -0,0 +1,15 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { HomePageComponent } from './home-page.component';
import { RouterModule } from '@angular/router'
@NgModule({
imports: [
CommonModule,
RouterModule.forChild([
{ path: '', component: HomePageComponent }
])
],
declarations: [HomePageComponent]
})
export class HomePageModule { }

View File

View File

@ -0,0 +1,239 @@
<header class="hero background-sky"><h1 class="hero-title is-standard-case">DatePipe</h1><span
class="badge is-stable">Stable</span>
<div class="clear"></div>
<h2 class="hero-subtitle">Pipe</h2></header>
<article class="l-content-small grid-fluid docs-content">
<div layout="row" layout-xs="column" class="row-margin">
<div flex="20" flex-xs="100"><h2 class="h2-api-docs">What it does</h2></div>
<div flex="80" flex-xs="100"><p>Formats a date according to locale rules.</p>
</div>
</div>
<div layout="row" layout-xs="column" class="row-margin">
<div flex="20" flex-xs="100"><h2 class="h2-api-docs">How to use</h2></div>
<div flex="80" flex-xs="100"><p><code>date_expression | date[:format]</code></p>
</div>
</div>
<div layout="row" layout-xs="column" class="row-margin">
<div flex="20" flex-xs="100"><h2 class="h2-api-docs">NgModule</h2></div>
<div flex="80" flex-xs="100" class="code-links">CommonModule
</div>
</div>
<div layout="row" layout-xs="column" class="row-margin">
<div flex="20" flex-xs="100"><h2 class="h2-api-docs">Description</h2></div>
<div flex="80" flex-xs="100" class="code-links"><p>Where:</p>
<ul>
<li><code>expression</code> is a date object or a number (milliseconds since UTC epoch) or
an ISO string
(<a href="https://www.w3.org/TR/NOTE-datetime">https://www.w3.org/TR/NOTE-datetime</a>).
</li>
<li><code>format</code> indicates which date/time components to include. The format can be
predifined as
shown below or custom as shown in the table.
<ul>
<li><code>&#39;medium&#39;</code>: equivalent to <code>&#39;yMMMdjms&#39;</code> (e.g.
<code>Sep 3, 2010, 12:05:08 PM</code> for <code>en-US</code>)
</li>
<li><code>&#39;short&#39;</code>: equivalent to <code>&#39;yMdjm&#39;</code> (e.g.
<code>9/3/2010, 12:05 PM</code> for <code>en-US</code>)
</li>
<li><code>&#39;fullDate&#39;</code>: equivalent to <code>&#39;yMMMMEEEEd&#39;</code>
(e.g. <code>Friday, September 3, 2010</code> for <code>en-US</code>)
</li>
<li><code>&#39;longDate&#39;</code>: equivalent to <code>&#39;yMMMMd&#39;</code> (e.g.
<code>September 3, 2010</code> for <code>en-US</code>)
</li>
<li><code>&#39;mediumDate&#39;</code>: equivalent to <code>&#39;yMMMd&#39;</code> (e.g.
<code>Sep 3, 2010</code> for <code>en-US</code>)
</li>
<li><code>&#39;shortDate&#39;</code>: equivalent to <code>&#39;yMd&#39;</code> (e.g.
<code>9/3/2010</code> for <code>en-US</code>)
</li>
<li><code>&#39;mediumTime&#39;</code>: equivalent to <code>&#39;jms&#39;</code> (e.g.
<code>12:05:08 PM</code> for <code>en-US</code>)
</li>
<li><code>&#39;shortTime&#39;</code>: equivalent to <code>&#39;jm&#39;</code> (e.g.
<code>12:05 PM</code> for <code>en-US</code>)
</li>
</ul>
</li>
</ul>
<table>
<thead>
<tr>
<th>Component</th>
<th style="text-align:center">Symbol</th>
<th>Narrow</th>
<th>Short Form</th>
<th>Long Form</th>
<th>Numeric</th>
<th>2-digit</th>
</tr>
</thead>
<tbody>
<tr>
<td>era</td>
<td style="text-align:center">G</td>
<td>G (A)</td>
<td>GGG (AD)</td>
<td>GGGG (Anno Domini)</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>year</td>
<td style="text-align:center">y</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>y (2015)</td>
<td>yy (15)</td>
</tr>
<tr>
<td>month</td>
<td style="text-align:center">M</td>
<td>L (S)</td>
<td>MMM (Sep)</td>
<td>MMMM (September)</td>
<td>M (9)</td>
<td>MM (09)</td>
</tr>
<tr>
<td>day</td>
<td style="text-align:center">d</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>d (3)</td>
<td>dd (03)</td>
</tr>
<tr>
<td>weekday</td>
<td style="text-align:center">E</td>
<td>E (S)</td>
<td>EEE (Sun)</td>
<td>EEEE (Sunday)</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>hour</td>
<td style="text-align:center">j</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>j (13)</td>
<td>jj (13)</td>
</tr>
<tr>
<td>hour12</td>
<td style="text-align:center">h</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>h (1 PM)</td>
<td>hh (01 PM)</td>
</tr>
<tr>
<td>hour24</td>
<td style="text-align:center">H</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>H (13)</td>
<td>HH (13)</td>
</tr>
<tr>
<td>minute</td>
<td style="text-align:center">m</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>m (5)</td>
<td>mm (05)</td>
</tr>
<tr>
<td>second</td>
<td style="text-align:center">s</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>s (9)</td>
<td>ss (09)</td>
</tr>
<tr>
<td>timezone</td>
<td style="text-align:center">z</td>
<td>-</td>
<td>-</td>
<td>z (Pacific Standard Time)</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>timezone</td>
<td style="text-align:center">Z</td>
<td>-</td>
<td>Z (GMT-8:00)</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>timezone</td>
<td style="text-align:center">a</td>
<td>-</td>
<td>a (PM)</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
</tbody>
</table>
<p>In javascript, only the components specified will be respected (not the ordering,
punctuations, ...) and details of the formatting will be dependent on the locale.</p>
<p>Timezone of the formatted text will be the local system timezone of the end-user&#39;s
machine.</p>
<p>WARNINGS:</p>
<ul>
<li>this pipe is marked as pure hence it will not be re-evaluated when the input is mutated.
Instead users should treat the date as an immutable object and change the reference when
the
pipe needs to re-run (this is to avoid reformatting the date on every change detection run
which would be an expensive operation).
</li>
<li>this pipe uses the Internationalization API. Therefore it is only reliable in Chrome and
Opera
browsers.
</li>
</ul>
<h3 id="examples">Examples</h3>
<p>Assuming <code>dateObj</code> is (year: 2015, month: 6, day: 15, hour: 21, minute: 43,
second: 11)
in the <em>local</em> time and locale is &#39;en-US&#39;:</p>
<code-example format="linenums" language="js">{{ dateObj | date }} // output is &#039;Jun 15,
2015&#039;
{{ dateObj | date:&#039;medium&#039; }} // output is &#039;Jun 15, 2015, 9:43:11 PM&#039;
{{ dateObj | date:&#039;shortTime&#039; }} // output is &#039;9:43 PM&#039;
{{ dateObj | date:&#039;mmss&#039; }} // output is &#039;43:11&#039;
</code-example>
<div class="code-example">
<code-example language="ts" format="linenums">@Component({
selector: &#39;date-pipe&#39;,
template: `&lt;div&gt;
&lt;p&gt;Today is {{today | date}}&lt;/p&gt;
&lt;p&gt;Or if you prefer, {{today | date:&#39;fullDate&#39;}}&lt;/p&gt;
&lt;p&gt;The time is {{today | date:&#39;jmZ&#39;}}&lt;/p&gt;
&lt;/div&gt;`
})
export class DatePipeComponent {
today: number = Date.now();
}
</code-example>
</div>
</div>
</div>
<p class="location-badge">exported from <a href="index.html">@angular/common/index</a>
defined in <a
href="https://github.com/angular/angular/tree/2.2.0-beta.1/modules/@angular/common/src/pipes/date_pipe.ts#L12-L116">@angular/common/src/pipes/date_pipe.ts</a>
</p></article>

View File

@ -0,0 +1,7 @@
<br><br>
TODO: api index doc
<br><br>
In the meantime visit our awesome <a href="docs/api/common/date-pipe">DatePipe API page</a>.
<br><br>
<br><br>
<br><br>

View File

@ -0,0 +1 @@
TODO: guide overview doc

View File

@ -0,0 +1,7 @@
<br><br>
TODO: docs index doc
<br><br>
<a href="docs/api/">API index page</a>
<br><br>
<br><br>
<br><br>

View File

@ -0,0 +1,38 @@
<header class="hero background-sky"><h1 class="hero-title ">Events</h1>
<div class="clear"></div>
<h2 class="hero-subtitle">Where we'll be presenting</h2>
</header>
<article class="l-content ">
<table class="is-full-width">
<thead>
<tr>
<th>Event</th>
<th>Location</th>
<th>Date</th>
</tr>
</thead>
<tbody><!-- Devoxx Belgium -->
<tr>
<th><a target="_blank" href="https://www.devoxx.be/">Devoxx Belgium</a></th>
<td>Antwerp, Belgium</td>
<td>Nov. 7-11, 2016</td>
</tr><!-- DEVIntersection -->
<tr>
<th><a target="_blank" href="https://www.devintersectioneurope.com/">DEVintersection
Europe</a></th>
<td>Amsterdam, Netherlands</td>
<td>Nov 14-16, 2016</td>
</tr><!-- dotJS -->
<tr>
<th><a target="_blank" href="http://www.dotjs.io/">dotJS</a></th>
<td>Paris, France</td>
<td>Dec. 5, 2016</td>
</tr><!-- NG-BE -->
<tr>
<th><a target="_blank" href="https://ng-be.org/">NG-BE</a></th>
<td>Ghent, Belgium</td>
<td>Dec. 9, 2016</td>
</tr>
</tbody>
</table>
</article>

View File

@ -0,0 +1,64 @@
<header class="hero background-sky"><h1 class="hero-title ">Features &amp; Benefits</h1>
<div class="clear"></div>
</header>
<article class="l-content ">
<div>
<div><h2 class="text-headline">Cross Platform</h2>
<div class="feature-row">
<div class="feature"><h3>Progressive web apps</h3>
<p class="text-body">Use modern web platform capabilities to deliver app-like experiences.
High performance, offline, and zero-step installation.</p></div>
<div class="feature"><h3>Native</h3>
<p class="text-body">Build native mobile apps with strategies from Ionic Framework,
NativeScript, and React Native.</p></div>
<div class="feature"><h3>Desktop</h3>
<p class="text-body">Create desktop-installed apps across Mac, Windows, and Linux using
the same Angular methods you've learned for the web plus the ability to access native OS
APIs.</p></div>
</div>
<h2 class="text-headline">Speed and Performance</h2>
<div class="feature-row">
<div class="feature"><h3>Code generation</h3>
<p class="text-body">Angular turns your templates into code that's highly optimized for
today's JavaScript virtual machines, giving you all the benefits of hand-written code
with the productivity of a framework.</p></div>
<div class="feature"><h3>Universal</h3>
<p class="text-body">Serve the first view of your application on node.js, .NET, PHP, and
other servers for near-instant rendering in just HTML and CSS. Also paves the way for
sites that optimize for SEO.</p></div>
<div class="feature"><h3>Code splitting</h3>
<p class="text-body">Angular apps load quickly with the new Component Router, which
delivers automatic code-splitting so users only load code required to render the view
they request.</p></div>
</div>
<h2 class="text-headline">Productivity</h2>
<div class="feature-row">
<div class="feature"><h3>Templates</h3>
<p class="text-body">Quickly create UI views with simple and powerful template syntax.</p>
</div>
<div class="feature"><h3>Angular CLI</h3>
<p class="text-body">Command line tools: start building fast, add components and tests,
then instantly deploy.</p></div>
<div class="feature"><h3>IDEs</h3>
<p class="text-body">Get intelligent code completion, instant errors, and other feedback
in popular editors and IDEs.</p></div>
</div>
<h2 class="text-headline">Full Development Story</h2>
<div class="feature-row">
<div class="feature"><h3>Testing</h3>
<p class="text-body">With Karma for unit tests, you can know if you've broken things every
time you save. And Protractor makes your scenario tests run faster and in a stable
manner.</p></div>
<div class="feature"><h3>Animation</h3>
<p class="text-body">Create high-performance, complex choreographies and animation
timelines with very little code through Angular's intuitive API.</p></div>
<div class="feature"><h3>Accessibility</h3>
<p class="text-body">Create accessible applications with ARIA-enabled components,
developer guides, and built-in a11y test infrastructure.</p></div>
</div>
</div>
</div>
<div class="cta-bar"><a href="/docs/ts/latest/quickstart.html" md-button="md-button"
class="button button-large button-shield md-raised md-primary">Get
Started</a></div>
</article>

View File

@ -0,0 +1,72 @@
<header class="background-sky l-relative">
<div class="hero background-superhero-paper is-large"><img
src="assets/images/logos/angular2/angular.svg" class="hero-logo"/>
<h1 class="text-headline">One framework.<br>Mobile &amp; desktop.</h1><a
href="/docs/ts/latest/quickstart.html" md-button="md-button"
class="hero-cta md-raised button button-large button-plain">Get Started</a></div>
<announcement-bar class="announcement-bar">
<div class="announcement-bar-slide cleafix is-visible"><img
src="assets/images/logos/anglebrackets/devintersection.png" width="64"/>
<p>Join us for <strong>DEVintersection Amsterdam</strong> Nov 14-16!</p><a
href="https://www.devintersectioneurope.com/#!/" target="_blank" class="button md-button">Register
now</a></div>
</announcement-bar>
</header>
<article class="l-content ">
<div class="home-rows"><!-- Group 1-->
<div layout="row" layout-xs="column" class="home-row">
<div class="promo-img-container promo-1">
<div><img src="assets/images/home/responsive-framework.svg"></div>
</div>
<div class="text-container">
<div class="text-block promo-1-desc l-pad-top-2"><h3 class="text-headline">Develop Across
All Platforms</h3>
<p class="text-body">Learn one way to build applications with Angular and reuse your code
and abilities to build apps for any deployment target. For web, mobile web, native
mobile and native desktop.
</p></div>
</div>
</div><!-- Group 2-->
<div layout="row" layout-xs="column" class="home-row">
<div class="text-container">
<div class="text-block"><h3 class="text-headline">Speed & Performance</h3>
<p class="text-body">Achieve the maximum speed possible on the Web Platform today, and
take it further, via Web Workers and server-side rendering.</p>
<p class="text-body">Angular puts you in control over scalability. Meet huge data
requirements by building data models on RxJS, Immutable.js or another push-model.</p>
</div>
</div>
<div class="promo-img-container promo-2">
<div><img src="assets/images/home/speed-performance.svg"></div>
</div>
</div><!-- Group 3-->
<div layout="row" layout-xs="column" class="home-row">
<div class="promo-img-container promo-3">
<div><img src="assets/images/home/joyful-development.png"></div>
</div>
<div class="text-container">
<div class="text-block promo-3-desc"><h3 class="text-headline">Incredible Tooling</h3>
<p class="text-body">Build features quickly with simple, declarative templates. Extend the
template language with your own components and use a wide array of existing components.
Get immediate Angular-specific help and feedback with nearly every IDE and editor. All
this comes together so you can focus on building amazing apps rather than trying to make
the code work.
</p></div>
</div>
</div><!-- Group 4-->
<div layout="row" layout-xs="column" class="home-row">
<div class="text-container">
<div class="text-block l-pad-top-2"><h3 class="text-headline">Loved by Millions</h3>
<p class="text-body">From prototype through global deployment, Angular delivers the
productivity and scalable infrastructure that supports Google's largest
applications.</p></div>
</div>
<div class="promo-img-container promo-4">
<div><img src="assets/images/home/loved-by-millions.png"></div>
</div>
</div>
<div class="cta-bar"><a href="/docs/ts/latest/quickstart.html" md-button="md-button"
class="button button-large button-shield md-raised md-primary">Get
Started</a></div>
</div>
</article>

View File

@ -0,0 +1,115 @@
<header class="hero background-sky"><h1 class="hero-title ">News</h1>
<div class="clear"></div>
</header>
<article class="l-content ">
<div class="grid-fluid l-space-bottom-2">
<div class="c12 text-center"><h3 class="text-headline text-uppercase"> Core Team</h3></div>
<div class="clear"></div>
</div>
<div class="grid-fluid">
<div class="c6">
<div class="article-card">
<div class="date">Oct 12, 2016</div>
<div class="title"><a target="_blank"
href="http://angularjs.blogspot.com/2016/10/angular-210-now-available.html">Angular
2.1.0 Now Available</a></div>
<p>Angular version 2.1.0 - incremental-metamorphosis - is a minor release following our
announced adoption of Semantic Versioning...</p>
<div class="author"><img src="assets/images/bios/stephenfluin.jpg">
<div class="posted">Posted by <b>Stephen Fluin</b></div>
</div>
</div>
</div>
<div class="c6">
<div class="article-card">
<div class="date">Oct 7, 2016</div>
<div class="title"><a target="_blank"
href="http://angularjs.blogspot.com/2016/10/versioning-and-releasing-angular.html">Versioning
and Releasing Angular</a></div>
<p>In order for the ecosystem around Angular to thrive, developers need stability from the
Angular framework so that reusable components and libraries, tools and learned practices
dont go obsolete unexpectedly...</p>
<div class="author"><img src="assets/images/bios/igor-minar.jpg">
<div class="posted">Posted by <b>Igor Minar</b></div>
</div>
</div>
</div>
</div>
<div class="grid-fluid l-space-bottom-2 l-space-top-4">
<div class="c12 text-center"><h3 class="text-headline text-uppercase"> Developer Community</h3>
</div>
<div class="clear"></div>
</div>
<div class="grid-fluid">
<div class="c6">
<div class="article-card">
<div class="date">Oct 30, 2016</div>
<div class="title"><a target="_blank"
href="https://www.thepolyglotdeveloper.com/2016/10/use-pre-populated-sqlite-database-nativescript-angular-2/">Use
A Pre-Populated SQLite Database With NativeScript And Angular 2</a></div>
<p>I figured it would be a good idea to demonstrate how to ship a NativeScript Angular 2
application with a pre-filled SQLite database rather than populating it on-the-fly....</p>
<div class="author"><img src="assets/images/bios/shield-bio-placeholder.png">
<div class="posted">Posted by <b>Nic Raboy</b></div>
</div>
</div>
</div>
<div class="c6">
<div class="article-card">
<div class="date">Oct 13, 2016</div>
<div class="title"><a target="_blank"
href="http://blog.thoughtram.io/angular/2016/10/13/two-way-data-binding-in-angular-2.html">Two-way
Data Binding in Angular 2</a></div>
<p>If there was one feature in Angular that made us go “Wow”, then it was probably its
two-way data binding system. Changes in the application state have been automagically
reflected into the view...</p>
<div class="author"><img src="assets/images/bios/angular-gde-bio-placeholder.png">
<div class="posted">Posted by <b>Pascal Precht</b></div>
</div>
</div>
</div>
</div>
<div class="grid-fluid">
<div class="c6">
<div class="article-card">
<div class="date">Oct 10, 2016</div>
<div class="title"><a target="_blank"
href="http://www.creativebloq.com/how-to/build-a-material-design-app-with-angular-2">Build
a Material Design app with Angular 2</a></div>
<p>This walkthrough reveals how to create a DialogComponent and to-do app with Angular
Material and the Angular CLI...</p>
<div class="author"><img src="assets/images/bios/shield-bio-placeholder.png">
<div class="posted">Posted by <b>Daniel Zen</b></div>
</div>
</div>
</div>
<div class="c6">
<div class="article-card">
<div class="date">Sept 30, 2016</div>
<div class="title"><a target="_blank"
href="http://www.simb.co/angular-cli-using-docker/?platform=hootsuite">Using
Angular CLI to create Angular 2 applications in Docker</a></div>
<p>Angular CLI is a great tool for developing Angular 2 applications. I thought it would be
fun to do a quick demo...</p>
<div class="author"><img src="assets/images/bios/shield-bio-placeholder.png">
<div class="posted">Posted by <b>Simeon Bateman</b></div>
</div>
</div>
</div>
</div>
<div class="grid-fluid l-space-bottom-2 l-space-top-4">
<div class="c12 text-center"><h3 class="text-headline text-uppercase">Twitter</h3></div>
<div class="clear"></div>
<div class="grid-fluid">
<div class="c3"><p></p></div>
<div class="c6">
<div class="article-card">
<div class="title"><a href="http://twitter.com/angularjs" data-show-count="false"
class="twitter-follow-button">Follow @angularjs</a></div>
<p><a class="twitter-timeline" data-chrome="nofooter noborders noheader"
href="http://twitter.com/angularjs" data-widget-id="700150278465523713"></a></p>
</div>
</div>
</div>
</div>
</article>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Some files were not shown because too many files have changed in this diff Show More