Compare commits

...

18 Commits

Author SHA1 Message Date
dbbfab3ee8 docs: changing "struture" to "structure" (#29497)
PR Close #29497
2019-03-25 09:21:11 -07:00
b87ae8e5f9 ci: add .codefresh/ to the fw-dev-infra group (#29478)
PR Close #29478
2019-03-22 13:16:17 -07:00
8b1d28ff48 docs(core): close tags in example (#29474)
PR Close #29474
2019-03-22 13:15:04 -07:00
463e967abb docs: update developer guide for testing and IntelliJ (#29048)
provide the command for running all test suites
- don't make new contributors read the whole Bazel doc
add info about ClangFormatIJ plugin for IntelliJ
add info about Bazel plugin for IntelliJ
fix inconsistent casing of GitHub

PR Close #29048
2019-03-22 13:05:42 -07:00
71b8bbef95 docs: fix minor typo in testing.md (#29464)
PR Close #29464
2019-03-22 10:59:22 -07:00
a2cf677714 docs: add Siddharth Ajmera to GDE resources (#28456)
PR Close #28456
2019-03-21 15:58:21 -07:00
9e1ce318a8 docs: add NG-DE 2019 to events page (#29079)
PR Close #29079
2019-03-21 15:55:17 -07:00
a00c2a9210 docs: add app shell guide (#28591)
PR Close #28591
2019-03-21 15:54:27 -07:00
a677d8b330 docs(core): indicate OnPush applies to children (#28320)
Indicate the OnPush change detection strategy applies to all child directives.
Resolves confusion from #12480.
PR Close #28320
2019-03-21 15:48:47 -07:00
7fe89ba4ea docs: drop Coding Conventions section from style guide (#29331)
Closes #24153

PR Close #29331
2019-03-21 15:40:21 -07:00
a8af83bf36 ci: disable sauce-connect ssl bumping (#29447)
By default we disable SSL bumping for all requests. This is because SSL
bumping is not needed for our test setup and in order to perform the SSL
bumping, Saucelabs intercepts all HTTP requests in the tunnel VM and modifies
them. This can cause flakiness as it makes all requests dependent on the SSL bumping
middleware.

See: https://wiki.saucelabs.com/display/DOCS/Troubleshooting+Sauce+Connect#TroubleshootingSauceConnect-DisablingSSLBumping

PR Close #29447
2019-03-21 22:18:19 +00:00
c75e16aae8 docs: add Luis Aviles to GDE resources (#29405)
PR Close #29405
2019-03-20 19:06:24 -04:00
1affcc63c0 docs: add docs team to Angular Team section on collaborators page (#29396) (#29434)
PR Close #29396

PR Close #29434
2019-03-20 18:33:49 -04:00
34395aeea1 docs: update contributors.json on patch branch 2019-03-20 14:48:27 -07:00
f64de2e9f3 docs: add Justin Schwartzenberger to GDE page (#29430)
PR Close #29430
2019-03-20 16:14:04 -04:00
86ad77c1b1 ci: add devversion to fw-dev-infra (#29418)
PR Close #29418
2019-03-20 13:44:31 -04:00
d5c815f1f2 docs: add alexeagle to @angular/fw-global-approvers (#29287)
This is for large-scale refactorings

PR Close #29287
2019-03-20 13:43:23 -04:00
32c6d5313a Revert "build: add a nice Angular-themed color for the vscode status bar (#29407)" (#29419)
This reverts commit efcd6af17d.
Engineers on the team thought that the red color means something is
broken.
See slack discussion in #general

PR Close #29419
2019-03-20 13:31:28 -04:00
28 changed files with 311 additions and 581 deletions

4
.github/CODEOWNERS vendored
View File

@ -46,6 +46,7 @@
# andrewseguin - Andrew Seguin
# benlesh - Ben Lesh
# brandonroberts - Brandon Roberts
# devversion - Paul Gschwendtner
# filipesilva - Filipe Silva
# gkalpak - George Kalpakas
# hansl - Hans Larsen
@ -87,6 +88,7 @@
# - IgorMinar
# - kara
# - mhevery
# - alexeagle
# ===========================================================
@ -325,6 +327,7 @@
# ===========================================================
#
# - alexeagle
# - devversion
# - filipesilva
# - gkalpak
# - IgorMinar
@ -818,6 +821,7 @@ testing/** @angular/fw-test
/* @angular/fw-dev-infra
/.buildkite/** @angular/fw-dev-infra
/.circleci/** @angular/fw-dev-infra
/.codefresh/** @angular/fw-dev-infra
/.github/** @angular/fw-dev-infra
/.vscode/** @angular/fw-dev-infra
/docs/BAZEL.md @angular/fw-dev-infra

View File

@ -16,9 +16,6 @@
"**/dist/**": true,
"**/aio/src/generated/**": true,
},
"workbench.colorCustomizations": {
"statusBar.background" : "#CB2B38",
},
"search.exclude": {
"**/node_modules": true,
"**/bower_components": true,

View File

@ -0,0 +1,59 @@
# App shell
App shell is a way to render a portion of your application via a route at build time.
It can improve the user experience by quickly launching a static rendered page (a skeleton common to all pages) while the browser downloads the full client version and switches to it automatically after the code loads.
This gives users a meaningful first paint of your application that appears quickly because the browser can simply render the HTML and CSS without the need to initialize any JavaScript.
Learn more in [The App Shell Model](https://developers.google.com/web/fundamentals/architecture/app-shell).
## Step 1: Prepare the application
You can do this with the following CLI command:
<code-example format="." language="bash" linenums="false">
ng new my-app --routing
</code-example>
For an existing application, you have to manually add the `RouterModule` and defining a `<router-outlet>` within your application.
## Step 2: Create the app shell
Use the CLI to automatically create the app shell.
<code-example format="." language="bash" linenums="false">
ng generate app-shell --client-project my-app --universal-project server-app
</code-example>
* `my-app` takes the name of your client application.
* `server-app` takes the name of the Universal (or server) application.
After running this command you will notice that the `angular.json` configuration file has been updated to add two new targets, with a few other changes.
<code-example format="." language="none" linenums="false">
"server": {
"builder": "@angular-devkit/build-angular:server",
"options": {
"outputPath": "dist/my-app-server",
"main": "src/main.server.ts",
"tsConfig": "tsconfig.server.json"
}
},
"app-shell": {
"builder": "@angular-devkit/build-angular:app-shell",
"options": {
"browserTarget": "my-app:build",
"serverTarget": "my-app:server",
"route": "shell"
}
}
</code-example>
## Step 3: Verify the app is built with the shell content
Use the CLI to build the `app-shell` target.
<code-example format="." language="bash" linenums="false">
ng run my-app:app-shell
</code-example>
To verify the build output, open `dist/my-app/index.html`. Look for default text `app-shell works!` to show that the app shell route was rendered as part of the output.

View File

@ -158,7 +158,7 @@ You can <a href="generated/zips/cli-quickstart/cli-quickstart.zip" target="_blan
</div>
For more information about Angular project files and the file structure, see [Workspace and project file struture](guide/file-structure).
For more information about Angular project files and the file structure, see [Workspace and project file structure](guide/file-structure).

View File

@ -1749,447 +1749,6 @@ A consistent class and file name convention make these modules easy to spot and
</table>
<a href="#toc">Back to top</a>
## Coding conventions
Have a consistent set of coding, naming, and whitespace conventions.
{@a 03-01}
### Classes
#### Style 03-01
<div class="s-rule do">
**Do** use upper camel case when naming classes.
</div>
<div class="s-why">
**Why?** Follows conventional thinking for class names.
</div>
<div class="s-why-last">
**Why?** Classes can be instantiated and construct an instance.
By convention, upper camel case indicates a constructable asset.
</div>
<code-example path="styleguide/src/03-01/app/core/exception.service.avoid.ts" region="example" header="app/shared/exception.service.ts">
</code-example>
<code-example path="styleguide/src/03-01/app/core/exception.service.ts" region="example" header="app/shared/exception.service.ts">
</code-example>
<a href="#toc">Back to top</a>
{@a 03-02}
### Constants
#### Style 03-02
<div class="s-rule do">
**Do** declare variables with `const` if their values should not change during the application lifetime.
</div>
<div class="s-why">
**Why?** Conveys to readers that the value is invariant.
</div>
<div class="s-why-last">
**Why?** TypeScript helps enforce that intent by requiring immediate initialization and by
preventing subsequent re-assignment.
</div>
<div class="s-rule consider">
**Consider** spelling `const` variables in lower camel case.
</div>
<div class="s-why">
**Why?** Lower camel case variable names (`heroRoutes`) are easier to read and understand
than the traditional UPPER_SNAKE_CASE names (`HERO_ROUTES`).
</div>
<div class="s-why-last">
**Why?** The tradition of naming constants in UPPER_SNAKE_CASE reflects
an era before the modern IDEs that quickly reveal the `const` declaration.
TypeScript prevents accidental reassignment.
</div>
<div class="s-rule do">
**Do** tolerate _existing_ `const` variables that are spelled in UPPER_SNAKE_CASE.
</div>
<div class="s-why-last">
**Why?** The tradition of UPPER_SNAKE_CASE remains popular and pervasive,
especially in third party modules.
It is rarely worth the effort to change them at the risk of breaking existing code and documentation.
</div>
<code-example path="styleguide/src/03-02/app/core/data.service.ts" header="app/shared/data.service.ts">
</code-example>
<a href="#toc">Back to top</a>
{@a 03-03}
### Interfaces
#### Style 03-03
<div class="s-rule do">
**Do** name an interface using upper camel case.
</div>
<div class="s-rule consider">
**Consider** naming an interface without an `I` prefix.
</div>
<div class="s-rule consider">
**Consider** using a class instead of an interface for services and declarables (components, directives, and pipes).
</div>
<div class="s-rule consider">
**Consider** using an interface for data models.
</div>
<div class="s-why">
**Why?** <a href="https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines">TypeScript guidelines</a>
discourage the `I` prefix.
</div>
<div class="s-why">
**Why?** A class alone is less code than a _class-plus-interface_.
</div>
<div class="s-why">
**Why?** A class can act as an interface (use `implements` instead of `extends`).
</div>
<div class="s-why-last">
**Why?** An interface-class can be a provider lookup token in Angular dependency injection.
</div>
<code-example path="styleguide/src/03-03/app/core/hero-collector.service.avoid.ts" region="example" header="app/shared/hero-collector.service.ts">
</code-example>
<code-example path="styleguide/src/03-03/app/core/hero-collector.service.ts" region="example" header="app/shared/hero-collector.service.ts">
</code-example>
<a href="#toc">Back to top</a>
{@a 03-04}
### Properties and methods
#### Style 03-04
<div class="s-rule do">
**Do** use lower camel case to name properties and methods.
</div>
<div class="s-rule avoid">
**Avoid** prefixing private properties and methods with an underscore.
</div>
<div class="s-why">
**Why?** Follows conventional thinking for properties and methods.
</div>
<div class="s-why">
**Why?** JavaScript lacks a true private property or method.
</div>
<div class="s-why-last">
**Why?** TypeScript tooling makes it easy to identify private vs. public properties and methods.
</div>
<code-example path="styleguide/src/03-04/app/core/toast.service.avoid.ts" region="example" header="app/shared/toast.service.ts">
</code-example>
<code-example path="styleguide/src/03-04/app/core/toast.service.ts" region="example" header="app/shared/toast.service.ts">
</code-example>
<a href="#toc">Back to top</a>
{@a 03-06}
### Import line spacing
#### Style 03-06
<div class="s-rule consider">
**Consider** leaving one empty line between third party imports and application imports.
</div>
<div class="s-rule consider">
**Consider** listing import lines alphabetized by the module.
</div>
<div class="s-rule consider">
**Consider** listing destructured imported symbols alphabetically.
</div>
<div class="s-why">
**Why?** The empty line separates _your_ stuff from _their_ stuff.
</div>
<div class="s-why-last">
**Why?** Alphabetizing makes it easier to read and locate symbols.
</div>
<code-example path="styleguide/src/03-06/app/heroes/shared/hero.service.avoid.ts" region="example" header="app/heroes/shared/hero.service.ts">
</code-example>
<code-example path="styleguide/src/03-06/app/heroes/shared/hero.service.ts" region="example" header="app/heroes/shared/hero.service.ts">
</code-example>
<a href="#toc">Back to top</a>

View File

@ -289,7 +289,7 @@ written without assistance from Angular testing utilities.
#### Services with dependencies
Services often depend on other services that Angular injects into the constructor.
In many cases, it easy to create and _inject_ these dependencies by hand while
In many cases, it's easy to create and _inject_ these dependencies by hand while
calling the service's constructor.
The `MasterService` is a simple example:
@ -318,7 +318,7 @@ Prefer spies as they are usually the easiest way to mock services.
These standard testing techniques are great for unit testing services in isolation.
However, you almost always inject service into application classes using Angular
However, you almost always inject services into application classes using Angular
dependency injection and you should have tests that reflect that usage pattern.
Angular testing utilities make it easy to investigate how injected services behave.

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,29 +1,23 @@
{
"misko": {
"mhevery": {
"name": "Miško Hevery",
"picture": "misko.jpg",
"twitter": "mhevery",
"website": "http://misko.hevery.com",
"bio": "Miško Hevery is the creator of AngularJS framework. He has passion for making complex things simple. He currently works at Google, but has previously worked at Adobe, Sun Microsystems, Intel, and Xerox, where he became an expert in building web applications in web related technologies such as Java, JavaScript, Flex and ActionScript.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"igor": {
"igorminar": {
"name": "Igor Minar",
"picture": "igor-minar.jpg",
"twitter": "IgorMinar",
"website": "https://google.com/+IgorMinar",
"bio": "Igor is a software engineer at Google. He is a lead on the Angular project, practitioner of test driven development, open source enthusiast, hacker. In his free time, Igor enjoys spending time with his wife and two kids, doing outdoor activities (including but not limited to sports, gardening and building retaining walls).",
"group": "Angular"
"group": "Angular",
"lead": "bradlygreen"
},
"naomi": {
"name": "Naomi Black",
"picture": "naomi.jpg",
"twitter": "naomitraveller",
"website": "http://google.com/+NaomiBlack",
"bio": "Naomi is Angular's TPM generalist and jack-of-all-trades. She supports Angular's internal Google users and solves hard-to-define problems. She's been at Google since 2006, as a technical program manager on projects ranging from Accessibility to Google Transit. She fights daleks in her spare time.",
"group": "Angular"
},
"brad": {
"bradlygreen": {
"name": "Brad Green",
"picture": "brad-green.jpg",
"twitter": "bradlygreen",
@ -31,29 +25,23 @@
"bio": "Brad Green works at Google as an engineering director. Brad manages the Google Sales Platform suite of projects as well as the AngularJS framework. Prior to Google, Brad worked on the early mobile web at AvantGo, founded and sold startups, and spent a few hard years toiling as a caterer. Brad's first job out of school was as lackey to Steve Jobs at NeXT Computer writing demo software and designing his slide presentations. Brad enjoys throwing dinner parties with his wife Heather and putting on plays with his children.",
"group": "Angular"
},
"juleskremer": {
"name": "Jules Kremer",
"picture": "juleskremer.jpg",
"twitter": "jules_kremer",
"website": "https://plus.google.com/+JulesKremer",
"bio": "Jules is Head of Angular Developer Relations at Google. When not working with developers, Jules is often bending into pretzel-like shapes, creating paths through thick jungle with a machete or drinking really awesome beer.",
"group": "Angular"
},
"jelbourn": {
"name": "Jeremy Elbourn",
"picture": "jelbourn.jpg",
"twitter": "jelbourn",
"website": "https://plus.google.com/+JeremyElbourn/",
"bio": "Angular Material Team Lead. FE Engineer @ Google specializing in AngularJS, component design, and the cleanest of code.",
"group": "Angular"
"group": "Angular",
"lead": "igorminar"
},
"pete": {
"petebacondarwin": {
"name": "Pete Bacon Darwin",
"picture": "pete.jpg",
"twitter": "petebd",
"website": "http://www.bacondarwin.com",
"bio": "AngularJS for JS Team Lead. Pete has been working on the core team since 2012 and became the team lead for the AngularJS for JS branch in November 2014. He has co-authored a book on AngularJS and regularly talks about and teaches Angular.",
"group": "Angular"
"group": "Angular",
"lead": "igorminar"
},
"stephenfluin": {
"name": "Stephen Fluin",
@ -61,7 +49,8 @@
"twitter": "stephenfluin",
"website": "https://plus.google.com/+stephenfluin",
"bio": "Stephen is a Developer Advocate working on the Angular team. Before joining Google, he was a Google Expert. Stephen loves to help enterprises use technology more effectively.",
"group": "Angular"
"group": "Angular",
"lead": "bradlygreen"
},
"robwormald": {
"name": "Rob Wormald",
@ -69,23 +58,17 @@
"twitter": "robwormald",
"website": "http://github.com/robwormald",
"bio": "Rob is a Developer Advocate on the Angular team at Google. He's the Angular team's resident reactive programming geek and founded the Reactive Extensions for Angular project, ngrx.",
"group": "Angular"
"group": "Angular",
"lead": "stephenfluin"
},
"tobias": {
"name": "Tobias Bosch",
"picture": "tobias.jpg",
"twitter": "tbosch1009",
"website": "https://plus.google.com/+TobiasBosch",
"bio": "Tobias Bosch is a software engineer at Google. He is part of the Angular core team and works on Angular.",
"group": "Angular"
},
"rado": {
"rkirov": {
"name": "Rado Kirov",
"picture": "rado.jpg",
"twitter": "radokirov",
"website": "https://plus.sandbox.google.com/+RadoslavKirov",
"bio": "Rado has been on the Angular Core team since Summer 2014. Before Angular, he worked on the Adsense serving stack, responsible for serving billions of ads daily. Being passionate about open source, he made contributions to Angular as a Google-20% project, before making the fulltime jump. He is a recovering academic; ask him about error-correcting codes from algebraic curves (or don't).",
"group": "Angular"
"group": "Angular",
"lead": "mprobst"
},
"alexeagle": {
"name": "Alex Eagle",
@ -93,39 +76,61 @@
"twitter": "jakeherringbone",
"website": "http://google.com/+alexeagle",
"bio": "Alex works on language tooling for JavaScript and TypeScript. Previously Alex spent five years in Google's developer testing tools. He has developed systems including Google's continuous integration service, capturing build&test failures, and explaining them to developers. Before Google, Alex worked at startups including Opower, and consulted for large government IT. In his 20% time, he created the Error-Prone static analysis tool, which detects common Java programming mistakes and reports them as compile errors.",
"group": "Angular"
"group": "Angular",
"lead": "igorminar"
},
"martinprobst": {
"kyliau": {
"name": "Keen Yee Liau",
"group": "Angular",
"lead": "alexeagle",
"picture": "kyliau.jpg"
},
"clydin": {
"name": "Charles Lyding",
"group": "Angular",
"lead": "alexeagle",
"picture": "clydin.jpg"
},
"alan-agius4": {
"name": "Alan Agius",
"group": "Angular",
"lead": "alexeagle",
"picture": "alan-agius4.jpg",
"bio": "Angular CLI Member, Loves TypeScript, Build Tools, Food, Beer & Coffee :)"
},
"gregmagolan": {
"name": "Greg Magolan",
"group": "Angular",
"lead": "alexeagle",
"picture": "gregmagolan.jpg",
"bio": "Building great software with Angular and Node.js."
},
"mprobst": {
"name": "Martin Probst",
"picture": "martin-probst.jpg",
"twitter": "martin_probst",
"website": "http://probst.io",
"bio": "Martin is a software engineer at Google in the AngularJS team. He holds a MSc in Software Engineering from HPI in Potsdam, Germany. Before joining the AngularJS team at Google, he worked at a database startup in the Netherlands, at EMC, at SAP, and as a freelancer. In his free time, he likes to cook and sail, not necessarily at the same time.",
"group": "Angular"
"group": "Angular",
"lead": "bradlygreen"
},
"julieralph": {
"name": "Julie Ralph",
"picture": "julie-ralph.jpg",
"twitter": "SomeJulie",
"website": "https://plus.google.com/+JulieRalph",
"bio": "Julie Ralph works as a Software Engineer in Test at Google in Seattle and is the lead developer on the Angular end-to-end testing framework Protractor.",
"group": "Angular"
},
"alexrickabaugh": {
"alxhub": {
"name": "Alex Rickabaugh",
"picture": "alex-rickabaugh.jpg",
"twitter": "synalx",
"website": "https://plus.google.com/+AlexRickabaugh/about",
"bio": "Core team member working to optimize the Angular platform for the next generation of applications, including mobile. Before joining the Angular team, Alex worked in the Google sales organization where he helped build the first large Angular application within Google.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"matias": {
"matsko": {
"name": "Matias Niemela",
"picture": "matias.jpg",
"twitter": "yearofmoo",
"website": "http://yearofmoo.com",
"bio": "Matias Niemela is a fullstack web developer who has been programming & building websites for over 10 years, and a core team member of AngularJS for two years. In the spring of 2015 Matias joined Angular full time at Google. In his free time Matias loves to build complex things and is always up for public speaking, travelling and tweaking his current Vim setup.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"hansl": {
"name": "Hans Larsen",
@ -133,7 +138,8 @@
"twitter": "hanslatwork",
"website": "http://www.codingatwork.com/",
"bio": "Hans is a software engineer at Google on the Angular team and was previously at Slack. He works everyday to help make it easier for everyone to create beautiful, consistent web applications using Angular, using Material Design components and the CLI tool.",
"group": "Angular"
"group": "Angular",
"lead": "alexeagle"
},
"kara": {
"name": "Kara Erickson",
@ -141,52 +147,40 @@
"twitter": "karaforthewin",
"website": "https://github.com/kara",
"bio": "Kara is a software engineer on the Angular team at Google and a co-organizer of the Angular-SF Meetup. Prior to Google, she helped build UI components in Angular for guest management systems at OpenTable. She enjoys snacking indiscriminately and probably other things too.",
"group": "Angular"
"group": "Angular",
"lead": "igorminar"
},
"chuckj": {
"name": "Chuck Jazdzewski",
"picture": "chuckj.jpg",
"twitter": "chuckjaz",
"website": "http://removingalldoubt.com",
"bio": "Chuck is a Software Engineer on the Angular team at Google. He is a programming language geek, UI framework and component library veteran, and has a passion for simplifying the task of programming. Before Google, he worked at Microsoft and Borland.",
"group": "Angular"
},
"vikram": {
"vikerman": {
"name": "Vikram Subramanian",
"picture": "vikram.jpg",
"twitter": "vikerman",
"bio": "Vikram is a Software Engineer on the Angular team focused on Engineering Productivity. That means he makes sure people on the team can move fast and not break things. Vikram enjoys doing Yoga and going on walks with his daughter.",
"group": "Angular"
"group": "Angular",
"lead": "alexeagle"
},
"maxsills": {
"name": "Max Sills",
"picture": "max-sills.jpg",
"twitter": "angularjs",
"website": "http://google-opensource.blogspot.com/",
"bio": "Max Sills is Angular's Open Source lawyer.",
"group": "Angular"
},
"pawel": {
"pkozlowski-opensource": {
"name": "Pawel Kozlowski",
"picture": "pawel.jpg",
"twitter": "pkozlowski_os",
"bio": "Open source hacker, AngularJS book author, AngularUI lead developer. Pawel is an software-development addict who believes in free, open source software. He is a core contributor to the AngularJS framework, AngularUI, Karma-runner and several other projects. He is the co-author of the \"Mastering Web Application Development with AngularJS\" book. When not coding, Pawel can be spotted speaking at various software development conferences.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"paulgschwendtner": {
"devversion": {
"name": "Paul Gschwendtner",
"picture": "devversion.jpg",
"twitter": "DevVersion",
"website": "https://github.com/DevVersion",
"bio": "Paul is a 17-year-old developer living in Germany. While he attends school, Paul works as a core team member on Angular Material. Paul focuses on tooling and building components for Angular.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"elad": {
"EladBezalel": {
"name": "Elad Bezalel",
"picture": "eladbezalel.jpg",
"website": "https://github.com/EladBezalel",
"bio": "Elad is a fullstack developer with a very strong love for design. Since 8 years old, he's been designing in Photoshop and later on fell in love with programing. This strong bond between design and computer programming gave birth to a new kind of love. And he is currently doing the combination of both, as a core member of the ngMaterial project.",
"group": "Angular"
"group": "GDE"
},
"marclaval": {
"name": "Marc Laval",
@ -194,7 +188,8 @@
"twitter": "marclaval",
"website": "https://github.com/mlaval",
"bio": "Marc is a manager at Amadeus where he leads the team in charge of developing and recommending UI frameworks for the company. He is also an open source developer and a contributor to Angular.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"wardbell": {
"name": "Ward Bell",
@ -202,14 +197,15 @@
"website": "https://github.com/wardbell",
"twitter": "wardbell",
"bio": "Ward is an all-around developer with JavaScript, Node.js®, and .net chops. He's a frequent conference speaker and podcaster, trainer, Google Developer Expert for Angular, Microsoft MVP, and PluralSight author. He is also president of IdeaBlade, an enterprise software consulting firm and the makers of breeze.js. He would like to get more sleep and spend more time in the mountains.",
"group": "Angular"
"group": "GDE"
},
"martinstaffa": {
"Narretz": {
"name": "Martin Staffa",
"picture": "martinstaffa.jpg",
"twitter": "Narretz",
"bio": "Martin is an English major turned web developer who loves frontend stuff. He's been part of the AngularJS team since 2014. If you can't find him roaming the Github issue queues, he's probably out with his camera somewhere.",
"group": "Angular"
"group": "Angular",
"lead": "petebacondarwin"
},
"filipesilva": {
"name": "Filipe Silva",
@ -217,29 +213,24 @@
"twitter": "filipematossilv",
"website": "http://github.com/filipesilva",
"bio": "Filipe is a passion-driven developer that always strives for the most elegant solution for each problem. He is currently an author for Angular.io, a core contributor for Angular-CLI and senior front end engineer at KonnectAgain. When not busy going through PRs, you can find him scouring reddit for new dinner recipes to cook or enjoying a craft beer in Dublin.",
"group": "Angular"
"group": "Angular",
"lead": "alexeagle"
},
"andrewseguin": {
"name": "Andrew Seguin",
"picture": "andrewseguin.jpg",
"website": "http://github.com/andrewseguin",
"bio": "Andrew is an engineer on the Angular Material team working on bringing material components to the world. When hes not obsessing over pixels and design, he is probably off somewhere having adventures with his wife and daughters.",
"group": "Angular"
},
"jesusrodriguez": {
"name": "Jesús Rodríguez",
"picture": "jesus-rodriguez.jpg",
"twitter": "foxandxss",
"website": "http://angular-tips.com",
"bio": "Jesus is an open source lover, a book author and editor, and AngularUI lead developer. He is currently a core contributor to the UI Bootstrap project.",
"group": "Angular"
"group": "Angular",
"lead": "jelbourn"
},
"crisbeto": {
"name": "Kristiyan Kostadinov",
"picture": "crisbeto.jpg",
"website": "http://crisbeto.com/",
"bio": "Kristiyan is a front-end developer, passionate open-source contributor and a core team member on Angular Material.",
"group": "Angular"
"group": "Angular",
"lead": "jelbourn"
},
"gkalpak": {
"name": "Georgios Kalpakas",
@ -247,19 +238,22 @@
"twitter": "gkalpakas",
"website": "https://github.com/gkalpak",
"bio": "George is a Software Engineer with a passion for chess, robotics and automating stuff. He has a strong need to know how things work (so if you already know, he'd love to have a talk with you). He has been a member of the AngularJS team since 2014. When not doing geeky stuff, he is probably trying to convince his wife and kids to apply programming principles in real life. (Or is it the other way around?)",
"group": "Angular"
"group": "Angular",
"lead": "igorminar"
},
"mmalerba": {
"name": "Miles Malerba",
"picture": "mmalerba.jpg",
"bio": "Miles is a software engineer on the Angular Material team at Google. In addition to Javascripting he enjoys eating food and ogling cute puppies.",
"group": "Angular"
"group": "Angular",
"lead": "jelbourn"
},
"jasonaden": {
"name": "Jason Aden",
"picture": "jasonaden.jpg",
"bio": "Jason is a software engineer at Google on the Angular Core team. He is enthusiastic about Angular and application development in the modern age. In his free time Jason enjoys spending time with his wife and four children and doing outdoor activities (hiking, fishing, snowboarding, etc.).",
"group": "Angular"
"group": "Angular",
"lead": "igorminar"
},
"jeffwhelpley": {
"name": "Jeff Whelpley",
@ -299,13 +293,14 @@
"bio": "Ralph(Zhicheng Wang) is a senior consultant at ThoughtWorks and also a GDE. He is a technology enthusiast and he is a passionate advocate of 'Simplicity, Professionalism and Sharing'. In his eighteen years of R&D career, he worked as tester, R&D engineer, project manager, product manager and CTO. He is immersed in the excitement of the arrival of the baby.",
"group": "GDE"
},
"wassim": {
"manekinekko": {
"name": "Wassim Chegham",
"picture": "wassim.jpg",
"twitter": "manekinekko",
"website": "https://medium.com/@wassimchegham",
"bio": "Wassim (aka manekinekko on Twitter/Github) is a Developer Advocate at SFEIR, in Web technologies (Angular, Polymer, PWA, Web Components...). He is also a Developer Expert in Web technologies nominated by Google. He enjoys writing technical articles, meeting developers at events, speaking at conferences and contributing to open source projects. Wassim loves the Web Platform and works hard to move it forward.",
"group": "GDE"
"group": "Angular",
"mentor": "filipesilva"
},
"chrisnoring": {
"name": "Christoffer Noring",
@ -337,14 +332,8 @@
"twitter": "splaktar",
"website": "https://www.DevIntent.com",
"bio": "Lead for AngularJS Material. Owner and consultant at DevIntent. Ex-Angular GDE. Founder of the Google Developers Group (GDG) community on the Space Coast of Florida, USA.",
"group": "Angular"
},
"mikebrocchi": {
"name": "Mike Brocchi",
"picture": "mike-brocchi.jpg",
"twitter": "brocco",
"bio": "Mike is a core team member of the Angular CLI team, a GDE and is also an instructor at egghead. Mike is passionate about helping others by writing code as well as teaching.",
"group": "Angular"
"group": "Angular",
"lead": "jelbourn"
},
"manfredsteyer": {
"name": "Manfred Steyer",
@ -370,15 +359,16 @@
"bio": "Based in Austin Texas, Jeremy is an application architect and homebrewer. He is a Google Developer Expert in Web Technologies and Angular, with a focus on speaking and training and author of Angular in Action and Ionic in Action.",
"group": "GDE"
},
"minko": {
"mgechev": {
"name": "Minko Gechev",
"picture": "minko.jpg",
"twitter": "mgechev",
"website": "http://blog.mgechev.com",
"bio": "Software engineer who enjoys theoretical computer science and its practical applications. Speaker, author of the book 'Switching to Angular', codelyzer, Guess.js, and the Go linter revive. Working for faster and more reliable software.",
"group": "Angular"
"group": "Angular",
"lead": "alexeagle"
},
"uri": {
"urish": {
"name": "Uri Shaked",
"picture": "urish.jpg",
"twitter": "UriShaked",
@ -415,7 +405,8 @@
"picture": "ocombe.jpg",
"twitter": "ocombe",
"bio": "Olivier is a passionate front-end engineer who loves interacting with the community by doing open source projects (ocLazyLoad, ngx-translate…), being a panelist at Angular-Air, giving talks or just chatting on Twitter and Slack. Hes a member of the Angular Core team and works on i18n.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"cironunes": {
"name": "Ciro Nunes",
@ -446,7 +437,7 @@
"bio": "Co-founder and CTO of Thinktecture AG, as well as Google GDE and Microsoft MVP. Since two decades active as an engaged and passionate speaker on several software conferences and events all over the world. Some people call him 'Mr. Cross-Platform'.",
"group": "GDE"
},
"shaireznik": {
"shairez": {
"name": "Shai Reznik",
"picture": "shaireznik.jpg",
"twitter": "shai_reznik",
@ -486,7 +477,7 @@
"bio": "GDE (Google Developer Expert) Angular and Web Technologies, Women Who Code KL Director, Jecelyn specializes in professional application development with technologies, including Angular, HTML5, Typescript, JavaScript, CSS, C#, NodeJs, Cloud and ASP.NET.",
"group": "GDE"
},
"vincirufus": {
"areai51": {
"name": "Vinci Rufus",
"picture": "vincirufus.jpg",
"twitter": "areai51",
@ -494,7 +485,7 @@
"bio": "Director of Experience Technology at SapientRazorfish. Consults various brands on their frontend and mobile web architecture. A speaker at various forums and mentor at Launchpad Accelerator and ngGirls India. Spends free time playing with Angular, Preact, web-components ",
"group": "GDE"
},
"thierrychatel": {
"tchatel": {
"name": "Thierry Chatel",
"picture": "thierrychatel.jpg",
"twitter": "ThierryChatel",
@ -510,14 +501,6 @@
"bio": "Gerard is very excited about the future of the Web and JavaScript. Always happy Computer Science Engineer and humble Google Developer Expert. He loves to share his learnings by giving talks, trainings and writing about cool technologies. He loves running AngularZone and GraphQL London, mentoring students and giving back to the community.",
"group": "GDE"
},
"amcdnl": {
"name": "Austin McDaniel",
"picture": "amcdnl.jpeg",
"twitter": "amcdnl",
"website": "https://amcdnl.com",
"bio": "Austin is an software architect with a passion for JavaScript and Angular. Austin loves to share his experiences with other like-minded developers by giving talks, blogging, podcasting and open-sourcing.",
"group": "Angular"
},
"nirkaufman": {
"name": "Nir Kaufman",
"picture": "nirkaufman.jpg",
@ -579,7 +562,8 @@
"picture": "elanaolson.jpg",
"twitter": "elanathellama",
"bio": "Elana is a Developer Relations intern on the Angular team at Google. She is working on migration paths from AngularJS to Angular and would love to chat about your experience with upgrading.",
"group": "Angular"
"group": "Angular",
"lead": "stephenfluin"
},
"kevinyang": {
"name": "Kevin Yang",
@ -675,5 +659,100 @@
"website": "http://www.samjulien.com/",
"bio": "Sam Julien builds software, articles, video courses, and campfires. A developer, speaker, writer, and GDE in the Pacific Northwest, Sam's favorite thing in the world is changing someone's life by teaching them to code.",
"group": "GDE"
},
"JiaLiPassion": {
"name": "JiaLi Passion",
"group": "Collaborator",
"mentor": "mhevery",
"picture": "JiaLiPassion.jpg",
"bio": "A programmer with passion, angular/zone.js guy! Web frontend engineer @sylabs"
},
"cexbrayat": {
"name": "Cédric Exbrayat",
"mentor": "petebacondarwin",
"group": "Collaborator",
"picture": "cexbrayat.jpg",
"bio": "Author of `Become a ninja with Angular (2+)` https://books.ninja-squad.com/angular - Angular trainer and @Ninja-Squad co-founder"
},
"CaerusKaru": {
"name": "Adam Plumer",
"group": "Collaborator",
"mentor": "vikerman",
"picture": "CaerusKaru.jpg"
},
"jbedard": {
"name": "Jason Bedard",
"group": "Collaborator",
"mentor": "kyliau",
"picture": "jbedard.png"
},
"jschwarty": {
"name": "Justin Schwartzenberger",
"picture": "justinschwartzenberger.jpg",
"twitter": "schwarty",
"website": "https://schwarty.com",
"bio": "Justin (aka Schwarty) is a Google Developer Expert in Web Technologies and Angular, the host and maintainer of the weekly AngularAir live video broadcast, educator, writer and content creator. He has Angular courses available on LinkedIn Learning and Pluralsight and loves passing on years of full stack development knowledge to help empower others to find their inner awesomeness!",
"group": "GDE"
},
"brandonroberts": {
"name": "Brandon Roberts",
"picture": "brandonroberts.jpg",
"twitter": "brandontroberts",
"website": "https://brandonroberts.dev",
"bio": "Brandon is a developer and technical writer working on guides, tutorials, application development, and infrastructure for the Angular docs. He is also a maintainer of the NgRx project, building reactive libraries for Angular.",
"group": "Angular",
"lead": "dennispbrown"
},
"chembu": {
"name": "Sreevani Sreejith",
"picture": "sreevani.jpg",
"bio": "Sreevani is a tech writer with prior programming experience. She writes documentation for the Angular framework team. Outside of work, she likes practicing yoga, honing her skills on classical dance forms, and baking cakes.",
"group": "Angular",
"lead": "dennispbrown"
},
"dennispbrown": {
"name": "Denny Brown",
"picture": "denny.jpg",
"bio": "Denny is founder of Expert Support, a professional services firm specializing in technical communication, and leads the Angular technical writing team. His lifelong passion has been to reduce the time and effort required to understand complex technical information. Early on, he was Associate Chairman of the Computer Science Department at Stanford, where he taught introductory courses in programming. He also plays old-timers baseball in local leagues and national tournaments.",
"group": "Angular",
"lead": "bradlygreen"
},
"jbogarthyde": {
"name": "Judy Bogart",
"picture": "judy.png",
"group": "Angular",
"lead": "dennispbrown"
},
"jenniferfell": {
"name": "Jennifer Fell",
"picture": "jennifer.jpg",
"website": "http://silverpath.org",
"bio": "Jennifer is a technical content strategist, architect, designer, and writer. As lead of the Angular docs team, she's always interested in learning more about how developers learn and use Angular. Her offline persona is a horsewoman in Idaho.",
"group": "Angular",
"lead": "dennispbrown"
},
"kapunahelewong": {
"name": "Kapunahele Wong",
"picture": "kapunahele.jpg",
"twitter": "kapunahele",
"bio": "Kapunahele is a developer and Angular fan who works on the Angular docs writing guides and developing example apps. She also enjoys Native Hawaiian practices, textile arts, and marveling at little, inconspicuous plants growing in forgotten places outdoors.",
"group": "Angular",
"lead": "dennispbrown"
},
"luixaviles": {
"name": "Luis Aviles",
"picture": "luixaviles.jpg",
"twitter": "luixaviles",
"website": "https://luixaviles.com",
"bio": "Luis is an enthusiast of Open Source software and communities, as well as being a public speaker, a technology trainer and an author of courses and technical articles. He is the organizer of the Angular Bolivia community and NG Bolivia conference. When he's not coding, Luis is reading about Astronomy or nerding about outer space, photography or even doing Astrophotography.",
"group": "GDE"
},
"siddajmera": {
"name": "Siddharth Ajmera",
"picture": "sidd-ajmera.jpg",
"twitter": "SiddAjmera",
"website": "https://webstackup.com/",
"bio": "Siddharth is a Full Stack JavaScript Developer and a GDE in Angular. He's passionate about sharing his knowledge on Angular, Firebase and the Web in general. He's the organizer of WebStack, a local community of developers focused on Web, Mobile, Voice and Server related technologies in general. WebStack hosts free monthly meetups every 2nd or 3rd Saturday of the month. Siddharth is also an avid photographer and loves traveling. Find him anywhere on the Web with `SiddAjmera`.",
"group": "GDE"
}
}
}

View File

@ -31,6 +31,12 @@
<td>London, UK</td>
<td>September 19-20, 2019</td>
</tr>
<!-- NG-DE 2019-->
<tr>
<th><a href="https://ng-de.org/" title="NG-DE">NG-DE</a></th>
<td>Berlin, Germany</td>
<td>August 29th workshops, 30-31 conference, 2019</td>
</tr>
</tbody>
</table>

View File

@ -452,6 +452,11 @@
"title": "Getting Started",
"tooltip": "Enabling the service worker in a CLI project and observing behavior in the browser."
},
{
"url": "guide/app-shell",
"title": "App Shell",
"tooltip": "Enabling the App Shell in a CLI project."
},
{
"url": "guide/service-worker-communications",
"title": "Service Worker Communication",
@ -768,4 +773,4 @@
{ "title": "v4", "url": "https://v4.angular.io" },
{ "title": "v2", "url": "https://v2.angular.io" }
]
}
}

View File

@ -85,12 +85,15 @@ To build Angular run:
Bazel is used as the primary tool for building and testing Angular. Building and testing is
incremental with Bazel, and it's possible to only run tests for an individual package instead
of for all packages.
of for all packages. Read more about this in the [BAZEL.md](./BAZEL.md) document.
Read more about this in the [BAZEL.md](./BAZEL.md) document. You should execute all test suites
before submitting a PR to Github.
You should execute all test suites before submitting a PR to GitHub:
- `yarn bazel test packages/...`
All the tests are executed on our Continuous Integration infrastructure and a PR could only be
**Note**: The first test run will be much slower than future runs. This is because future runs will
benefit from Bazel's capability to do incremental builds.
All the tests are executed on our Continuous Integration infrastructure. PRs can only be
merged if the code is formatted properly and all tests are passing.
## <a name="clang-format"></a> Formatting your source code
@ -109,6 +112,13 @@ A better way is to set up your IDE to format the changed file on each file save.
It will automatically pick up the settings from Angular's [settings.json](../.vscode/settings.json).
### WebStorm / IntelliJ
1. Install the [ClangFormatIJ](https://plugins.jetbrains.com/plugin/8396-clangformatij) plugin
1. Open `Preferences->Tools->clang-format`
1. Find the field named "PATH"
1. Add `<PATH_TO_YOUR_WORKSPACE>/angular/node_modules/clang-format/bin/<OS>/`
where the OS options are: `darwin_x64`, `linux_x64`, and `win32`.
## Linting/verifying your source code
You can check that your code is properly formatted and adheres to coding style by running:
@ -128,17 +138,17 @@ You may find that your un-merged change needs some validation from external part
Rather than requiring them to pull your Pull Request and build Angular locally, you can
publish the `*-builds` snapshots just like our CircleCI build does.
First time, you need to create the github repositories:
First time, you need to create the GitHub repositories:
``` shell
$ export TOKEN=[get one from https://github.com/settings/tokens]
$ CREATE_REPOS=1 ./scripts/ci/publish-build-artifacts.sh [github username]
$ CREATE_REPOS=1 ./scripts/ci/publish-build-artifacts.sh [GitHub username]
```
For subsequent snapshots, just run
``` shell
$ ./scripts/ci/publish-build-artifacts.sh [github username]
$ ./scripts/ci/publish-build-artifacts.sh [GitHub username]
```
The script will publish the build snapshot to a branch with the same name as your current branch,
@ -148,3 +158,9 @@ and create it if it doesn't exist.
### VS Code
1. Install [Bazel](https://marketplace.visualstudio.com/items?itemName=DevonDCarew.bazel-code) extension for VS Code.
### WebStorm / IntelliJ
1. Install the [Bazel](https://plugins.jetbrains.com/plugin/8609-bazel) plugin
1. You can find the settings under `Preferences->Other Settings->Bazel Settings`
It will automatically recognize `*.bazel` and `*.bzl` files.

View File

@ -18,6 +18,7 @@ export enum ChangeDetectionStrategy {
* Use the `CheckOnce` strategy, meaning that automatic change detection is deactivated
* until reactivated by setting the strategy to `Default` (`CheckAlways`).
* Change detection can still be explicitly invoked.
* This strategy applies to all child directives and cannot be overridden.
*/
OnPush = 0,

View File

@ -52,7 +52,7 @@ class GiantList {
selector: 'app',
providers: [DataListProvider],
template: `
<giant-list><giant-list>
<giant-list></giant-list>
`,
})
class App {
@ -86,7 +86,7 @@ class LiveData {
providers: [DataProvider],
template: `
Live Update: <input type="checkbox" [(ngModel)]="live">
<live-data [live]="live"><live-data>
<live-data [live]="live"></live-data>
`,
})

View File

@ -4,8 +4,12 @@ set -x -u -e -o pipefail
readonly currentDir=$(cd $(dirname $0); pwd)
# Command arguments that will be passed to sauce-connect.
sauceArgs=""
# Command arguments that will be passed to sauce-connect. By default we disable SSL bumping for
# all requests. This is because SSL bumping is not needed for our test setup and in order
# to perform the SSL bumping, Saucelabs intercepts all HTTP requests in the tunnel VM and modifies
# them. This can cause flakiness as it makes all requests dependent on the SSL bumping middleware.
# See: https://wiki.saucelabs.com/display/DOCS/Troubleshooting+Sauce+Connect#TroubleshootingSauceConnect-DisablingSSLBumping
sauceArgs="--no-ssl-bump-domains all"
if [[ ! -z "${SAUCE_LOG_FILE:-}" ]]; then
mkdir -p $(dirname ${SAUCE_LOG_FILE})