You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 4, 2025. It is now read-only.
**This is experimental! There may be breaking changes.**
5
+
**This is experimental, as part of Angular Labs! There may be breaking changes.**
6
6
7
7
This is part of the ABC project. The overall goal is to make it possible to
8
8
develop Angular applications the same way we do at Google.
@@ -13,6 +13,18 @@ this works.
13
13
14
14
Follow https://github.com/angular/angular/issues/19058 for updates.
15
15
16
+
## Guide to the example
17
+
18
+
This example is a monorepo, meant to show many different features and integrations that we expect are generally useful for enterprise use cases.
19
+
20
+
-**Angular Libraries**: to maximize build incrementality, each Angular module is compiled as a separate step. This lets us re-use Angular libraries without having to publish them as npm packages. See `src/todos` for a typical `NgModule` compiled as a library for use in the application, using the `ng_module` rule in the `BUILD.bazel` file.
21
+
-**TypeScript Libraries**: see `src/lib` for a trivial example of a pure-TS library that's consumed in the application, using the `ts_library` rule in the `BUILD.bazel` file.
22
+
-**Sass**: we use Sass for all styling. Angular components import Sass files, and these are built by Bazel as independent processes calling the modern Sass compiler (written in Dart).
23
+
-**Material design**: see `src/material` where we collect the material modules we use.
24
+
-**Redux-style state management**: see `src/reducers` where we use the [NgRx Store](https://ngrx.io/guide/store).
25
+
-**Lazy loading**: in production mode, the application is served in chunks.
26
+
-**Docker**: see below where we package up the production app for deployment on Kubernetes.
27
+
16
28
## Installation
17
29
18
30
You only need to install one build tool, and which one you choose typically depends on what kind of development you do most often.
@@ -114,7 +126,12 @@ setup a local `node_modules` folder for editor and tooling support.
114
126
115
127
## Deployment
116
128
117
-
Run it under docker:
129
+
We use Bazel's docker support to package up our production server for deployment.
130
+
Each time the app changes, we'll get a slim new docker layer with just the modified files, keeping the round-trip for deployment incremental and fast.
131
+
This example is configured to run on Google Kubernetes Engine, so we can have an elastic pool of backend machines behind a load balancer.
132
+
This setup is more expensive to operate than something like Firebase Functions where the backend code is spun up on-demand, but is also more adaptable to scenarios like backend servers that need to run other binaries on the machine.
0 commit comments