<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: bUxEE</title>
    <description>The latest articles on DEV Community by bUxEE (@buxee).</description>
    <link>https://dev.to/buxee</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3873427%2F279cddb0-73a0-4e13-9264-de99bdf01e14.png</url>
      <title>DEV Community: bUxEE</title>
      <link>https://dev.to/buxee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/buxee"/>
    <language>en</language>
    <item>
      <title>Stop Adding Components for Everything — Try This Instead (Vue)</title>
      <dc:creator>bUxEE</dc:creator>
      <pubDate>Sat, 11 Apr 2026 11:51:09 +0000</pubDate>
      <link>https://dev.to/buxee/stop-adding-components-for-everything-try-this-instead-vue-1lgd</link>
      <guid>https://dev.to/buxee/stop-adding-components-for-everything-try-this-instead-vue-1lgd</guid>
      <description>&lt;p&gt;Most Vue libraries solve problems with more components.&lt;/p&gt;

&lt;p&gt;Need a loader? → add a component&lt;br&gt;
Need selection? → wrap everything&lt;br&gt;
Need scroll tracking? → install a plugin + wire state&lt;/p&gt;

&lt;p&gt;After a while, your UI becomes a tree of wrappers and glue code.&lt;/p&gt;

&lt;p&gt;💡 What if behavior didn’t need components?&lt;/p&gt;

&lt;p&gt;I’ve been experimenting with a different approach:&lt;/p&gt;

&lt;p&gt;👉 using directives as a behavior layer&lt;/p&gt;

&lt;p&gt;Instead of adding structure, you attach behavior directly to elements.&lt;/p&gt;

&lt;p&gt;⚡ Example&lt;br&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;


&lt;p&gt;No wrappers. No extra components. No layout changes.&lt;/p&gt;

&lt;p&gt;🧠 Why directives?&lt;/p&gt;

&lt;p&gt;Directives:&lt;/p&gt;

&lt;p&gt;work at the DOM level&lt;br&gt;
don’t affect component structure&lt;br&gt;
are composable by nature&lt;br&gt;
integrate with any UI library&lt;/p&gt;

&lt;p&gt;They’re perfect for:&lt;br&gt;
👉 UI behavior&lt;/p&gt;

&lt;p&gt;🔥 What I built: Dirigo&lt;/p&gt;

&lt;p&gt;I started building a small library around this idea:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://dirigo.woptima.com" rel="noopener noreferrer"&gt;https://dirigo.woptima.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s a collection of advanced Vue directives focused on real-world UX.&lt;/p&gt;

&lt;p&gt;✨ Some examples&lt;br&gt;
Skeleton loader (no wrapper)&lt;br&gt;
&lt;br&gt;
Drag-to-select (like desktop)&lt;br&gt;
&lt;/p&gt;
&lt;br&gt;
Scroll spy (that actually feels right)

&lt;p&gt;Most scroll-spy implementations trigger when the top hits 0.&lt;/p&gt;

&lt;p&gt;This one activates when the section reaches ~40% of the viewport —&lt;br&gt;
which feels much closer to what the user is actually reading.&lt;/p&gt;

&lt;p&gt;🧩 The idea&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;components → structure&lt;br&gt;
composables → logic&lt;/p&gt;

&lt;p&gt;👉 directives can become:&lt;/p&gt;

&lt;p&gt;behavior primitives&lt;/p&gt;

&lt;p&gt;🤔 When this works well&lt;br&gt;
dashboards&lt;br&gt;
admin panels&lt;br&gt;
editors&lt;br&gt;
complex UI interactions&lt;/p&gt;

&lt;p&gt;Anywhere you’d normally write a lot of UI glue code.&lt;/p&gt;

&lt;p&gt;⚠️ Trade-offs&lt;/p&gt;

&lt;p&gt;This approach isn’t for everything:&lt;/p&gt;

&lt;p&gt;not ideal for purely declarative UI&lt;br&gt;
requires careful implementation (performance matters)&lt;br&gt;
less common pattern → some learning curve&lt;br&gt;
🚀 Playground&lt;/p&gt;

&lt;p&gt;You can try everything live here:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://dirigo.woptima.com" rel="noopener noreferrer"&gt;https://dirigo.woptima.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💬 Feedback&lt;/p&gt;

&lt;p&gt;Still early, and I’m exploring the direction.&lt;/p&gt;

&lt;p&gt;Would love to hear:&lt;/p&gt;

&lt;p&gt;does this pattern make sense to you?&lt;br&gt;
where would you use it (or not)?&lt;/p&gt;

</description>
      <category>vue</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
