在 Deno 中使用 Twind

Twind 是一种 tailwind-in-js 的解决方案,用于使用 Tailwind 。在 Deno 的服务器环境中,Twind 特别有用,在那里 Tailwind 和 CSS 可以很容易地在服务器端呈现,生成动态,高效的 CSS,同时具有使用 Tailwind 进行样式设置的可用性。

基本示例

在以下示例中,我们将使用 twind 服务器端呈现 HTML 页面并将其记录到控制台中。它演示了使用 tw 函数指定分组的 tailwind 类,并仅使用文档中指定的样式呈现,而不需要客户端 JavaScript 来实现 _tailwind-in-js_:

import { setup, tw } from "https://esm.sh/twind@0.16.16";
import { getStyleTag, virtualSheet } from "https://esm.sh/twind@0.16.16/sheets";

const sheet = virtualSheet();

setup({
  theme: {
    fontFamily: {
      sans: ["Helvetica", "sans-serif"],
      serif: ["Times", "serif"],
    },
  },
  sheet,
});

function renderBody() {
  return `
    <h1 class="${tw`text(3xl blue-500)`}">Hello from Deno</h1>
    <form>
      <input name="user">
      <button class="${tw`text(2xl red-500)`}">
        Submit
      </button>
    </form>
  `;
}

function ssr() {
  sheet.reset();
  const body = renderBody();
  const styleTag = getStyleTag(sheet);

  return `<!DOCTYPE html>
    <html lang="en">
      <head>
        <title>Hello from Deno</title>
        ${styleTag}
      </head>
      <body>
        ${body}
      </body>
    </html>`;
}

console.log(ssr());