• [Angular] Use ngx-build-plus to compile Angular Elements


    We can treat Angular Element as each standlone lib and compile each Angular element spreatly. Tool we are using to compile Angular element is 'ngx-build-plus':

    Install:

    npm i --save ngx-build-plus

    It modifies the angular.json to use ngx-build-plus to compile our Angular Element lib.

    Generate a project with Angular CLI and only keep the app.module.ts and your component ts file:

    // app.module.ts:
    
    import { NgModule, Injector } from '@angular/core';
    import { BrowserModule } from '@angular/platform-browser';
    import { createCustomElement } from '@angular/elements';
    
    import { GreeterComponent } from './greeter.component';
    
    @NgModule({
      declarations: [GreeterComponent],
      imports: [BrowserModule],
      providers: [],
      entryComponents: [GreeterComponent]
    })
    export class AppModule {
      constructor(injector: Injector) {
        const el = createCustomElement(GreeterComponent, { injector: injector });
        customElements.define('do-greet', el);
      }
    
      ngDoBootstrap() {}
    }

    component.ts:

    import { Component, OnInit } from '@angular/core';
    
    @Component({
      // selector: 'do-greet',
      template: `
        <div>
          Hi there!
        </div>
      `,
      styles: []
    })
    export class GreeterComponent implements OnInit {
      constructor() {}
    
      ngOnInit() {}
    }

    Create a buildEl.sh file for build Angular Elemenet:

    #!/bin/sh
    ng build ngelements --prod --output-hashing=none --single-bundle true --keep-polyfills true
    mv dist/ngelements/main.js demo/ngelements.js
    mv dist/ngelements/polyfills.js demo

    The build script will:

    • output two files: main.js and polyfill.js. main.js contains Angular elemenet, polyfill is mainly used for testing demo app, normally production app has polyfill already. So we don't need to include ployfill inside main.js
    • output files locates in 'dist' folder under root.
    • We copy main.js and polyfill.js to demo folder for testing our Angular elements and rename main,js to ngelement.js.

    Github, More

  • 相关阅读:
    2020-10-03:java中satb和tlab有什么区别?
    2020-10-02:golang如何写一个插件?
    2020-10-01:谈谈golang的空结构体。
    2020-09-30:谈谈内存对齐。
    2020-09-29:介绍volatile功能。
    2020-09-28:内存屏障的汇编指令是啥?
    2020-09-27:总线锁的副作用是什么?
    2020-09-26:请问rust中的&和c++中的&有哪些区别?
    自定义刷新控件的实现原理
    scrollView的bounds
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10552839.html
Copyright © 2020-2023  润新知