From 3df77dd90f4a01d498aed01e10eca61a1c662038 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 21 Sep 2020 12:56:58 +0300 Subject: [PATCH] docs: explain how Angular project is built --- docs/en/UI/Angular/Quick-Start.md | 57 ++++++++++++++++-- ...-start---production-build-optimization.png | Bin 0 -> 28308 bytes 2 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 docs/en/UI/Angular/images/quick-start---production-build-optimization.png diff --git a/docs/en/UI/Angular/Quick-Start.md b/docs/en/UI/Angular/Quick-Start.md index 0f787b12a2..add5c3259d 100644 --- a/docs/en/UI/Angular/Quick-Start.md +++ b/docs/en/UI/Angular/Quick-Start.md @@ -78,18 +78,18 @@ Now let us take a look at the contents of the source folder. Angular project source folder structure -- **app** is the main directory you put your application files in. Any module, component, directive, service, pipe, guard, interceptor, etc. should be placed here. You are free to choose your own folder structure, but "folders reflecting your business features" is generally a fine practice. +- **app** is the main directory you put your application files in. Any module, component, directive, service, pipe, guard, interceptor, etc. should be placed here. You are free to choose any folder structure, but [organizing Angular applications based on modules](https://angular.io/guide/module-types) is generally a fine practice. - **home** is a predefined module and acts as a welcome page. It also demonstrates how a feature-based folder structure may look like. More complex features will probably have sub-features, thus inner folders. You may change the home folder however you like. - **shared** is spared for reusable code that works for several modules. Some, including yours truly, may disagree with using a single module for all shared code, so consider adding standalone sub-modules inside this folder instead of adding everything into **shared.module.ts**. - **app-routing.module.ts** is where your top-level routes are defined. Angular is capable of [lazy loading feature modules](https://angular.io/guide/lazy-loading-ngmodules), so not all routes will be here. You may think of Angular routing as a tree and this file is the top of the tree. - **app.component.ts** is essentially the top component that holds the dynamic application layout. -- **app.module.ts** is the root module that includes information about how parts of your application are related and what to run at the initiation of your application. +- **app.module.ts** is the [root module](https://angular.io/guide/bootstrapping) that includes information about how parts of your application are related and what to run at the initiation of your application. - **route.provider.ts** is used for [modifying the menu](https://docs.abp.io/en/abp/latest/UI/Angular/Modifying-the-Menu). - **assets** is for static files. A file (e.g. an image) placed in this folder will be available as is when the application is served. - **environments** includes one file per environment configuration. There are two configurations by default, but you may always introduce another one. These files are directly referred to in _angular.json_ and help you have different builds and application variables. Please refer to [configuring Angular application environments](https://angular.io/guide/build#configuring-application-environments) for details. - **index.html** is the HTML page served to visitors and will contain everything required to run your application. Servers should be configured to redirect every request to this page so that the Angular router can take over. Do not worry about how to add JavaScript and CSS files to it, because Angular CLI will do it automatically. - **main.ts** bootstraps and configures Angular application to run in the browser. It is production-ready, so forget about it. -- **polyfill.ts** is where you can add polyfills if you want to support legacy browsers. +- **polyfill.ts** is where you can add polyfills if you want to [support legacy browsers](https://angular.io/guide/browser-support). - **style.scss** is the default entry point for application styles. You can change this or add new entry points in _angular.json_. - **test.ts** helps the unit test runner discover and bootstrap spec files. @@ -114,7 +114,7 @@ You may modify the behavior of the **start script** (in the package.json file) b The development server of Angular is based on [Webpack DevServer](https://webpack.js.org/configuration/dev-server/). It tracks changes to source files and syncs the browser window after an incremental re-compilation every time [2](#f-dev-server) you make one. Your experience will be like this: -Error caused by browser blocking access to backend +Angular Live Development Server compiles again on template change and removes a button from the page displayed by the browser. Please keep in mind that you should not use this server in production. To provide the fastest experience, the compiler skips some heavy optimizations and the development server is simply not built for multiple clients. The next section will describe what to do. @@ -122,8 +122,55 @@ Please keep in mind that you should not use this server in production. To provid Error caused by browser blocking access to backend -1 _If see the error above when you run the Angular app, your browser might be blocking access to the API because of the self-signed certificate. Visit that address and allow access to it (once). When you see the Swagger interface, you are good to go._ [↩](#a-certificate-error) +1 _If you see the error above when you run the Angular app, your browser might be blocking access to the API because of the self-signed certificate. Visit that address and allow access to it (once). When you see the Swagger interface, you are good to go._ [↩](#a-certificate-error) 2 _Sometimes, depending on the file changed, Webpack may miss the change and cannot reflect it in the browser. For example, tsconfig files are not being tracked. In such a case, please restart the development server._ [↩](#a-dev-server) --- + +## How to Build the Angular Application + +An Angular application can have multiple [build targets](https://angular.io/guide/glossary#target), i.e. **configurations in angular.json** which define how [Architect](https://angular.io/guide/glossary#architect) will build applications and libraries. Usually, each build configuration has a separate environment variable file. Currently, the project has two: One for development and one for production. + +```js +// this is what environment variables look like +// can be found at /src/environments/environment.ts + +import { Config } from '@abp/ng.core'; + +const baseUrl = 'http://localhost:4200'; + +export const environment = { + production: false, + application: { + baseUrl, + name: 'MyProjectName', + logoUrl: '', + }, + oAuthConfig: { + issuer: 'https://localhost:44381', + redirectUri: baseUrl, + clientId: 'MyProjectName_App', + responseType: 'code', + scope: 'offline_access MyProjectName', + }, + apis: { + default: { + url: 'https://localhost:44381', + rootNamespace: 'MyCompanyName.MyProjectName', + }, + }, +} as Config.Environment; +``` + +When you run the development server, variables defined in _environment.ts_ take effect. Similarly, in production mode, the default environment is replaced by _environment.prod.ts_ and completely different variables become effective. You may even [create a new build configuration](https://angular.io/guide/workspace-config#build-configs) and set [file replacements](https://angular.io/guide/build#configure-target-specific-file-replacements) to use a completely new environment. For now, we will start a production build: + +1. Open your terminal and navigate to the root Angular folder. +2. Run `yarn` or `npm install` if you have not installed dependencies already. +3. Run `yarn build:prod` or `npm run build:prod`. + +Angular compiler optimizing the build using Terser + +Depending on project size, the compilation may take a few minutes. When it is finished, the compiled output will be placed inside the _/dist_ folder. Voila! You have deployment-ready build artifacts. + +> The amount of optimization performed on the source is the main difference between a regular build and a production one. Production builds have a much smaller size and are more performant. diff --git a/docs/en/UI/Angular/images/quick-start---production-build-optimization.png b/docs/en/UI/Angular/images/quick-start---production-build-optimization.png new file mode 100644 index 0000000000000000000000000000000000000000..54e7d10d5101dfb5cefe6e122c1fe63580d80bef GIT binary patch literal 28308 zcmeFX1zQ};7d{9Cf)gY_aLEuPNN{%>+}(n^yC=8=8ytcKhv4q+?(Xiv9d=0W@80Zx zKfyk`{d7;)R9DrJK3(UWw<=gxS`--p7XbnS0$B_wBo6@r1p=3s;a-D(!^2ipAs~

Ipi+Nwe+lpU0W#-=bMtB8NhVs#y>V{C-? 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 aKA~UkJ(uFO5PpM#`~Vc+E7ZuFhx`u&xB$ce literal 0 HcmV?d00001