Using the micro frontend pattern in Angular (11)

This is mainly for my own archival purposes, collecting all of the information I have gathered on MFEs in Angular in one place. If it helps you, great, let me know!

I started this post in Angular 11, 12 has since come out and made many of the steps easier since it automatically uses Webpack 5 with Module Federation.

https://go.nrwl.io/angular-enterprise-monorepo-patterns-new-book

https://medium.com/agorapulse-stories/building-a-micro-frontends-architecture-in-2021-with-angular-and-webpack-module-federation-50d073617645

https://indepth.dev/posts/1173/webpack-5-module-federation-a-game-changer-in-javascript-architecture

https://www.angulararchitects.io/aktuelles/the-microfrontend-revolution-module-federation-in-webpack-5/

https://angular.io/guide/elements

https://single-spa.js.org/

https://codeburst.io/breaking-a-large-angular-app-into-microfrontends-fb8f985d549f

https://blog.bitsrc.io/the-dilemma-of-code-reuse-in-microservices-a925ff2b9981

https://www.rapidvaluesolutions.com/implementing-micro-frontend-architecture-with-angular-for-increased-team-productivity/

https://www.angulararchitects.io/aktuelles/6-steps-to-your-angular-based-microfrontend-shell/

Digging into CSS variables at runtime

I’ve had a need to be able to see how multiple CSS variables are computed at runtime. I’m dealing with interactions between SCSS and CSS variables so I needed to know what was happening. There are a few ways to do this in Chrome Dev Tools.

One way is in the Styles inspector, you can see the various definitions of the variable as values are assigned to it.

Another way is using the Computed inspector with the Show All checkbox checked. This will show all of the variables.

Both methods can use the Filter box to narrow down what you are looking at.

Checking to see if an npm package is tree shake-able (is-esm)

Sometimes on a project I need to know if an npm package is tree shake-able. The is-esm utility checks to see if the package contains a distribution with ECMAScript module and outputs.

To run it: `npx is-esm PACKAGE_NAME`

ex: `npx is-esm @angular/core`

Minko Gechev originally posted this method on Twitter. At least that is where I found it. 🙂 I’m posting it here so I know where I can look for this method later.

Journal the Day – April 12, 2020

Blades in the Dark custom map snippet

Whelp, didn’t make it a habit, unless you count seven months between posts.

Work has been pretty heavy since that post. My current client is averaging 50 hours a week of work.

I’m currently working on several projects outside of work in the spare time I have, but also to keep me sane outside of work.

Standing Desktop

I picked up the frame for a sitting/standing desk since I work remotely and find myself sitting far too much. Some days I get in less than 500 steps according to the tracking stuff I use. Far far too few.

When I say a frame, I mean just that. I am in the middle of crafting a desktop for it out of shagbark hickory. I had looked into buying a top with the desk as well as buying a butcher block style top from a big box store, but neither really appealed to me and the price was pretty high for some of the options that had mdf at their core.

Since I enjoy woodworking and have never used rough lumber I decided to create my own desktop. It’s been an adventure. I found an arborist in my area that had just the last year started selling lumber and was lucky that he was willing to open for me just as the first Covid-19 social distancing measures went into place.

I picked up several slabs of 8/4 shagbark hickory and have planed them down, cut them to rough size, and am almost ready to glue them up into the desktop. Right now I am having trouble getting them to join, since I don’t own a jointer. I’m currently waiting for the glue to dry on a jig I hope will work with the tablesaw to give me true and straight edges. We’ll see.

Gaming Maps

I’m also working on a challenging coding project, since it uses technologies I know about but haven’t yet needed to learn myself. It’s a gaming mapping project that I hope to release to the world at some point.

Right now, I am able to take in a high resolution map image, cut it up, and have a user be able to see the map, zoom in and out, and look at markers on it, similar to Google Maps.

The next steps will be to take this prototype and fit it to a back end, so that a gaming group could upload their own map, add markers, notes, and be able to have those notes link to a wiki-like set of pages to manage a campaign.

I haven’t done much back end coding in my career given that I have specialized in UI development. I’ve chosen NestJS as the back end since it is very similar to Angular, I am hoping that this will mean that I have less of a learning curve and more time to just create.

I haven’t chosen a database to store the data yet. I am considering MongoDB or Contentful. Both of which I am not familiar with, so I’m going to need to research what the best option for me is. Since I am going with a Node back end, I’ll eventually need to dig into how to host it. Right now with static data, I can host it here, but once I implement the NestJS back end, I’ll need to host that somewhere else.

Here’s a prototype of what I am working on now with a map of Duskvol from Blades in the Dark. https://vandermore.com/bitd/ All of the data is hard-coded at the time of this writing. Feel free to click around and see the different marker text and the information about the polygons.

That’s all for now!