Slide 1

Slide 1 text

RainerHahnekamp Powerduo Nx and Sheriff Rainer Hahnekamp - 24. April 2024

Slide 2

Slide 2 text

RainerHahnekamp About Me... Professional NgRx https://www.youtube.com/ @RainerHahnekamp https://www.ng-news.com https://github.com/softarc-consulting/sheriff ● Rainer Hahnekamp ANGULARarchitects.io ● Developer / Trainer / Speaker Modern Spring for Angular @RainerHahnekamp

Slide 3

Slide 3 text

RainerHahnekamp Agenda 1. What is Nx? 2. Nx Quick Feature Run 3. Nx and Modules 4. Sheriff 5. Sheriff & Nx 6. Current Challenges: Barrel File / Tree Shaking / Code Splitting

Slide 4

Slide 4 text

RainerHahnekamp

Slide 5

Slide 5 text

RainerHahnekamp

Slide 6

Slide 6 text

RainerHahnekamp

Slide 7

Slide 7 text

RainerHahnekamp Nx Highlights 1. Tooling 2. Caching & Affected 3. Cloud 4. Visualization 5. Library Support

Slide 8

Slide 8 text

RainerHahnekamp Shared Forms Grid Error Handling Widgets Backend Middleware ... App Shell Domain (Holidays ) Domain (Customers) Domain (Bookings) Domain (Diary) Layer 1 - Domain modules

Slide 9

Slide 9 text

RainerHahnekamp Domain Feature (Container Cmp.) Data UI (Presentational Cmp.) Domain Models Layer 2 Sub Modules

Slide 10

Slide 10 text

RainerHahnekamp Sheriff: Modularity in TypeScript ● Module Encapsulation

Slide 11

Slide 11 text

RainerHahnekamp

Slide 12

Slide 12 text

RainerHahnekamp

Slide 13

Slide 13 text

RainerHahnekamp

Slide 14

Slide 14 text

RainerHahnekamp

Slide 15

Slide 15 text

RainerHahnekamp Sheriff: Modularity in TypeScript ● Module Encapsulation ● Dependency Rules

Slide 16

Slide 16 text

RainerHahnekamp

Slide 17

Slide 17 text

RainerHahnekamp

Slide 18

Slide 18 text

RainerHahnekamp Sheriff: Modularity in TypeScript ● Module Encapsulation ● Dependency Rules ● Lightweight

Slide 19

Slide 19 text

RainerHahnekamp Sheriff: Modularity in TypeScript ● Module Encapsulation ● Dependency Rules ● Lightweight ● Convention over Configuration

Slide 20

Slide 20 text

RainerHahnekamp Sheriff: Modularity in TypeScript ● Module Encapsulation ● Dependency Rules ● Lightweight ● Convention over Configuration ● Zero Dependencies

Slide 21

Slide 21 text

RainerHahnekamp Sheriff: Modularity in TypeScript ● Module Encapsulation ● Dependency Rules ● Lightweight ● Convention over Configuration ● Zero Dependencies ● For all TypeScript Projects

Slide 22

Slide 22 text

RainerHahnekamp Sheriff: Modularity in TypeScript ● Module Encapsulation ● Dependency Rules ● Lightweight ● Convention over Configuration ● Zero Dependencies ● For all TypeScript Projects ● (Heavily) Influenced by Nx

Slide 23

Slide 23 text

RainerHahnekamp Nx Pros & Cons ✅ Provides a set of exclusive Features ✅ Must-Have for certain application size ⛔ Diverging from the Angular CLI ⛔ Small Modules unfit as Libraries ⛔ Additional Layer ⛔ Not that stable as Angular CLI

Slide 24

Slide 24 text

RainerHahnekamp Domain Feature (Container Cmp.) UI (Presentational Cmp.) Domain Models Nx Lib Sheriff Module Data

Slide 25

Slide 25 text

RainerHahnekamp Application Evolution 1. Angular CLI or NX Standalone with Sheriff 2. Nx with Domain Libs (and Sheriff) 3. Nx with build-optimized Libs (and Sheriff)

Slide 26

Slide 26 text

RainerHahnekamp The Problem with the Barrel File…

Slide 27

Slide 27 text

RainerHahnekamp Thanks