jesuscuesta / codemotion-2020

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CodemotionMicro

This project was generated with Angular CLI version 10.2.0.

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 Overview and Command Reference page.

Pasos a Seguir

  • Tener instaladas dependencias

    • Git
    • Nodejs
    • Angular Cli
    • Vuestro IDE Favorito => Nosotros usaremos Visual Studio Code
  • Creación del proyecto

  • crear vuestro proyecto gitub ng new codemotion-micro

  • Instalar dependencias: npm install

  • Ejecutar proyecto ng serve

  • Vaciar contenido app

  • Instarlar compodoc npm install --save-dev compodoc

-- Añadir comando compodoc

Monorepo

new micro project

Generamos una nueva micro aplicación npx? ng generate application marvel --routing --prefix=marvel ng generate application dc --routing --prefix=dc

-- Analizamos estructura --- projects --- angular.json

  • Qué pasa si ejecutamos ng serve
  • ¿Cómo ejecutamos una subaplicación?
  • ¿Podemos generarlas todas juntas?
  • Como ejecutar una sola

Levantamos la subaplicación:

  • ng serve –-project marvel

  • Añadimos en el html los enlaces

  • Añadimos en el router las rutas

  • -- comparativa con lazy loading y normal

  • -- al poner lazy loading, da error, borrar browser module, poner CommonModule

  • -- Cambiar en app-routing, forRoot por forChild, añadir ruta al componente

  • probar ejectuar el dist, con npx static-server

  • -- problemas si usan enlace normal y no routerlink

  • añadir ng library ng generate library anime --prefix=anime compilar con prod, si no quieres que aparezca un error de IVY analizar las diferencias problemas con lazyloading -- lo añadimos como componente routing

-- lo añadimos como dependencia en el package.json creamos nuevo github subimos el dist añadimos dependencia npm install --save https://github.com/jesuscuesta/codemotion-2020-ang-library también con usuario y password también se puede hacer por ssh

creamos una nueva sección: ng g module pages/anime-dev --route anime-dev --module app.module mostramos ejemplo con network

  • ejemplo varios servidores Generamos otra aplicacion ng generate application doctor-strange --routing --prefix=strange generamos un nuevo enlace le añadimos al servidor, podemos ponerlo en un iframe, webcomponent, nueva pestaña, misma pestaña, etc...

Otras aplicaciones no angular en el mismo repositorio ejemplo con svelte npx degit sveltejs/template deadpool cd deadpool npm install npm run dev

Extras

  • explicar brevement NX

-- explicar sistema de plugins

Webpack 5 => module federation

Lerna: https://github.com/lerna/lerna ==> muchos proyectos mono repo

Hablar del sistema de gobierno del repositorio

==========================

  • Multirepo

  • creamos otro repositorio

  • ng new nombre-proyecto --prefix=nombre-proyecto

  • ng build --prod

  • vamos a dist, npx static-server

    • Iframes => tab virtual ==> crear modulo, y enlazar

    • ng g module pages/iframes --route iframes --module app.module

    • metemos el iframe, compilamos la otra aplicación y la cargamos

    • como library: dependencia assets, dependencia package.json o npm => crear modulo y enlazar -- creamos librería en el otro proyecto, build, y la enlazamos con el package.json, con hardcode, luego probamos subirla a github y la enlazamos explicar storybook, angular material explicar luego la publicación explicar ñapas, metiéndola en assets y cosas así

  • añadir con angular elements disney

  • ng new codemotion-elements

  • añadimos la dependencia de angular elements ng add @angular/elements añadimos el compilador: ng add ngx-build-plus tener cuidado que coincidan las versiones problema routing

  • añade el import en el main.ts

  • import 'zone.js/dist/zone';

  • Dejar ejemplo más completo angular elements: https://github.com/jesuscuesta/angular-elements

  • ++++ MIRAR LO DE ANGULAR ELEMETNS

-con un CDN

  • como webcomponent igual que en el caso anterior

  • como proyecto con .submodulo

  • crear repositorio a parte

  • crear subaplicación: ng generate application code-externa --routing --prefix=code-externa

  • git submodule add https://github.com/jesuscuesta/code-externa git clone https://github.com/jesuscuesta/code-externa Para recuperar los ficheros: git submodule init Para actualizarlos: git submodule update También podemos ahorrarnos las dos últimas líneas con --recursive:

git clone --recursive https://github.com/GeekyTheory/GeekyBlogs.git

  • Module federation
  • Configuración proxy

Más sobre webcomponents

  • angular elements
  • webcomponentjs
  • stenciljs
  • lit-element
  • Vaadin

URLS https://angular.io/cli/generate#application-command https://medium.com/disney-streaming/combining-multiple-angular-applications-into-a-single-one-e87d530d6527 https://www.angulararchitects.io/aktuelles/6-steps-to-your-angular-based-microfrontend-shell/ https://micro-frontends.org/ https://www.youtube.com/watch?v=wxnwPLLIJCY

About

License:GNU Affero General Public License v3.0


Languages

Language:TypeScript 67.9%Language:JavaScript 25.3%Language:HTML 4.1%Language:CSS 1.4%Language:Svelte 0.7%Language:SCSS 0.6%