水曜日, 7月 30, 2025
水曜日, 7月 30, 2025
- Advertisment -
ホームニューステックニュースVanilla JavaScriptでHeadless UI的なことを実現するTailwind Elementsがかなり面白い

Vanilla JavaScriptでHeadless UI的なことを実現するTailwind Elementsがかなり面白い


はじめに

UIライブラリとして最近話題なのはshadcnです。これは擬銃的にはRadix UIのスライル無しなコンポーネントにTailwind CSSでスタイリングをしたものです。

ただしRadix UIはReactに完全に依存します。Reactが無い環境ではい使用できず、Vue、SvelteやただのHTML/JSで使用することができません。もちろんHotwireで使用することもできません。同じようにスタイル無しのコンポーネントを提供するHeadlessUIもReactもしくはVueを必要としており、最新のUIコンポーネントライブラリはReact等が前提という流れになっていました。

そこに一石を投じるのが、Tailwind Labsが7月25日に公開したTailwind Elementsです。Tailwind LabsはHeadless UIも作ったのですが、今回のTailwind ElementsはHeadless UIをReact無しのVanilla JavaScriptで作成したものと言えそうですReact/Vueに依存しませんので、Svelte、ただのHTML/JS、そしてもちろんHotwireでも使用できます

これはUIライブラリの風向きをも変える可能性がある、非常に面白い技術だと思いますので、ここで紹介したいと思います。

なぜ切望されていたか

Reactの大きな強みの一つは、UIライブラリの充実です。

インタラクティブ性だけならSvelteでもHotwireでも、Reactと肩を並べるもしくは凌駕するものが作れます。またReactが可能にするCSS-in-JSやCSS moduleも、最近ではTailwind CSSに押され、またReact Server Componentsとの相性の悪さから第一選択肢ではなくなりました。そんな中でも、Reactは依然としてUIライブラリエコシステムの充実で他のものを寄せ付けませんでした。ある意味、これがReactの砦です。

特にHotwireのコミュニティではプロ級のUIライブラリを作る努力がされてきていましたが、これといったものはなかなか生まれませんでした。

そこでTailwind Labsから出てきたTailwind Elementsは、Tailwind CSSの後押しもあり、大いに注目できるものだと思います。Headless UIを作ったのと同じ人たちですので、a11yを含めてプロ級のもののはずです。これがReactでもVueでもなく、Vanilla JSとHTMLでできたことのインパクトは大きいと思います。

実際に試してみた

Tailwind PlusはTailwind Labsが提供する有料のサービスで、個人であれば$299、チーム(25名まで)であれば$979のサービスです。自分が作った製品の中で使用するのであれば、使用に制限はありません。

今回はNext.jsを使って、複数のフロントエンド環境で試してみました。試したのは以下のものです。Tailwind Labsが作ったものですので当然のように完成度が高く、Tailwind ElementsとHeadless UIの間でUI/UX的に差異が気になることはありません。

  1. ただのHTML (plain HTML)でTailwind Elementsを使用したもの:
    デモ: https://tailwind-elements-demo.vercel.app/plain.html
    ソースコード: https://github.com/naofumi/tailwind_elements_demo/blob/main/public/plain.html
  2. Next.jsのServer Components (RSC)でTailwind Elementsを使用したもの:
    デモ: https://tailwind-elements-demo.vercel.app/server_component
    ソースコード: https://github.com/naofumi/tailwind_elements_demo/blob/main/app/server_component/page.tsx
  3. Reactの従来手法 – useEffectを使ったデータ読み込みでTailwind Elementsを使用したもの:
    デモ: https://tailwind-elements-demo.vercel.app/use_effect
    ソースコード: https://github.com/naofumi/tailwind_elements_demo/blob/main/app/use_effect/page.tsx
  4. HeadlessUIを使ったもの (Tailwind Elementsとの比較として):
    デモ: https://tailwind-elements-demo.vercel.app/headless_ui
    ソースコード: https://github.com/naofumi/tailwind_elements_demo/blob/main/app/headless_ui/page.tsx

ただのHTML (plain HTML)で使用した時の感想

  1. 紹介記事でも記載されているように、Tailwind Elementsを使うには

    Source link

    Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -