Giter Club home page Giter Club logo

angular-codesplitting-bundlepreloading's Introduction

Code Splitting and BundlePreloading

Tools for fast Angular applications

Code Splitting

Lazy loading module (on-demand loading)

How to generate lazy load module:

```
ng g module <module name> --route <lazy route path> --module <parent module name>
ng g m about --route about --module app

```

Example usage:

const routes: Routes = [
 {path: 'home', component: HomeComponent},
 {path: 'about', loadChildren: () => import('./about/about.module').then(m => m.AboutModule)},
 {path: 'content', component: ContentComponent},
];

This lazy load method will lead to high latency when navigating across pages.

How to solve?

We can use 'Bundle Preloading' to pre-load the module. (More detail in next point)

Bundle Preloading

ngx-quicklink:

  • Detects when the router links is visible in the viewport
  • Wait until the browser is idle
  • Prefetches the lazy modules

How to install:

npm i ngx-quicklink --save

Example usage:

app.module.ts

import { QuicklinkModule } from 'ngx-quicklink

@NgModule({
  ...
  imports: [
    QuicklinkModule,
    ...
  ],
  ...
})
export class AppModule {
}

app-routing.module.ts

...
import { QuicklinkStrategy } from 'ngx-quicklink';

...

@NgModule({
  imports: [RouterModule.forRoot(routes, {preloadingStrategy: QuicklinkStrategy})],
  ...
})
export class AppRoutingModule {
  ...
}

Efficient Serving (not implemented in this project)

How to install:

ng add @angular/fire // install firebase tool

This project was generated with Angular CLI version 9.1.10.

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|guard|interface|enum|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.

Running end-to-end tests

Run ng e2e to execute the end-to-end tests via Protractor.

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI README.

angular-codesplitting-bundlepreloading's People

Contributors

hengkysanjaya123 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.