VueJS
April 16, 2020
Using Vue Single-File Components Inside Shadow DOM
Let’s say you’re building a tiny little Vue app. Not a full-on single page app,
but something very tiny that will need to be embedded into other pages. Like a
fully interactive widget that can do a wide variety of things, but will need to
be self-contained so as not to interfere the rest of the page.
Traditionally, in the past, we did this with a wide variety of approaches. Going
back to the 90s, we use Java Applets (remember those?) and Active-X controls
(ugh). We used Flash too (double ugh). Lately the preferred approach has been
iframes, and while this is still a perfectly valid approach, it has it’s own
set of problems.
But now, we also have Shadow DOM
which provides us another approach to building richly interactive widgets that
are (mostly) contained from interfering with the styling of the surrounding page
and, crucially, doesn’t allow the surrounding page to interfere with the widget!
And, yes, Vue can totally be used inside a shadow tree. It just take a bit of
setup work.
Read More