devpato
2 tipos
Codigo compartido por app
Codigo Compartido en proyectos
devpato
devpato
devpato
donde search-lib es el nombre de tu librerias
ng generate library search-lib
devpato
Registro de NPM en Enterprise
devpato
devpato
lo bueno
devpato
lo malo
Actualiza tu proyecto con la version nueva de tu libreria
Mantener tu proyecto actualizado con la ultima version de la librerias
devpato
Monorepos es una forma de construir aplicaciones donde todo tu código vive bajo el mismo repositorio. Todos tus proyectos van a utilizar las misma version de código.
Que es un Monorepo?
devpato
La misma version de librerias para todas las apps.
Facil de mantener tus aplicaciones que utilizan librerias
No conflictos entre tus versiones de librerias
lo bueno
devpato
devpato
npm install -g nx
npx create-nx-workspace@latest thisdot
Instala Nx Globalmente
Crea una Nx Workspace
devpato
Agrega la habilidad de crear aplicaciones de Angular en NX:
ng add @nrwl/angular --defaults
Now create your Angular app
ng g @nrwl/angular:application employees
devpato
Las apps de Angular
Bibliotecas usadas por Angular
devpato
devpato
devpato
En tu linea de comando
ng g @nrwl/workspace:lib employee
Ve a libs/data/src/lib/employee.ts
export interface Employee {
id: number;
name: string;
}
devpato
ng g @nrwl/angular:lib ui
devpato
ng g component employee-list --project=ui --export
devpato
export * from './lib/ui.module';
export * from './lib/employee.service';
devpato
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { EmployeeListComponent } from './employee-list/employee-list.component';
@NgModule({
imports: [CommonModule],
declarations: [EmployeeListComponent],
exports: [EmployeeListComponent]
})
export class UiModule {}
devpato
apps/employees/src/app/app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { RouterModule } from '@angular/router';
import { HttpClientModule } from '@angular/common/http';
import { UiModule } from '@thisdot/ui';
@NgModule({
declarations: [AppComponent],
imports: [
UiModule,
HttpClientModule,
BrowserModule,
RouterModule.forRoot([], { initialNavigation: 'enabled' })
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}
devpato
<div class="employees-container">
<img src="../assets/images/logotdm.png" />
<h1>Employees</h1>
<thisdot-employee-list
[employees]="employeeService.employees$ | async">
</thisdot-employee-list>
</div>
devpato
devpato
"assets": [
"apps/employees/src/favicon.ico",
"apps/employees/src/assets",
{
"glob": "**/*",
"input": "./libs/ui/src/lib/shared-assets",
"output": "./assets"
}
]
devpato
devpato
https://tinyurl.com/wt2kmqb
devpato
devpato
devpato
Manten tus versiones de Angular actualizadas
No modifiques Angular en tu proyecto
Evita APIs en tu proyecto que Angula marco como “Security Risk.”
devpato
devpato
devpato
https://slides.com/patriciovargas/sass/fullscreen
devpato
devpato
@import '../../../shared/sass/variables';
.search-results-page {
width: 100%;
margin-top: 16px;
::ng-deep {
.ui-dataview {
width: 1000px;
height: 500px;
a {
&.ui-button {
&.ui-state-active {
background-color: $primary-green;
}
}
&.ui-paginator-page {
&.ui-state-active {
background-color: $primary-green;
}
}
}
&-content {
padding: 0;
}
}
}
}
https://tinyurl.com/w5nv8pz