Przejdź do treści stopki
POMOC NODE

tailwind npm (jak to działa dla programistów)

Tailwind CSS to popularny framework CSS oparty na podejściu "utility-first", który umożliwia szybkie projektowanie stron HTML. Jest wysoce konfigurowalny i płynnie współpracuje z React, potężną biblioteką JavaScript do tworzenia interfejsów użytkownika. W tym artykule przeprowadzimy Cię przez proces integracji Tailwind CSS z projektem React przy użyciu npm. Ponadto przyjrzymy się bibliotece IronPDF do generowania plików PDF na podstawie adresów URL stron internetowych.

Czym jest Tailwind CSS?

Tailwind CSS to framework CSS oparty na podejściu "utility-first", który pozwala na bardziej wydajne tworzenie aplikacji. Dzięki Tailwind możesz kontrolować układ, kolory, odstępy, typografię, cienie i wiele innych elementów za pomocą klas użytkowych bezpośrednio w kodzie HTML. A co najlepsze? Nie musisz pisać własnego CSS!

Jeśli masz dość zmagań z tradycyjnymi semantycznymi nazwami klas, wypróbuj Tailwind CSS — możesz się zastanawiać, jak kiedykolwiek pracowałeś z CSS w inny sposób!

Poniżej przedstawiono kroki integracji Tailwind CSS z aplikacją React.

Krok 1: Utwórz projekt React

Utwórz aplikację React App za pomocą poniższego polecenia. Narzędzie to tworzy nowy projekt React z rozsądną konfiguracją domyślną.

npx create-react-app my-tailwind-react-app
cd my-tailwind-react-app
npx create-react-app my-tailwind-react-app
cd my-tailwind-react-app
SHELL

Krok 2: Zainstaluj Tailwind CSS

Zainstaluj Tailwind CSS i jego zależności za pomocą npm. Otwórz terminal i uruchom następujące polecenie:

npm install -D tailwindcss postcss autoprefixer
npm install -D tailwindcss postcss autoprefixer
SHELL

Krok 3: Zainicjuj Tailwind CSS

Następnie należy zainicjować Tailwind CSS, aby utworzyć domyślne pliki konfiguracyjne. Uruchom następujące polecenie:

npx tailwindcss init -p
npx tailwindcss init -p
SHELL

Spowoduje to utworzenie dwóch nowych plików w projekcie: tailwind.config.js i postcss.config.js.

Krok 4: Skonfiguruj Tailwind CSS

Otwórz plik konfiguracyjny tailwind.config.js i ustaw opcję purge, aby usunąć nieużywane arkusze CSS w środowisku produkcyjnym. Pomaga to utrzymać niewielki rozmiar końcowego pakietu CSS. W tym miejscu można również zdefiniować nazwę klasy trybu ciemnego oraz ścieżkę do modułów niestandardowych.

// tailwind.config.js
module.exports = {
  purge: ['./src/**/*.{js,jsx,ts,tsx}', './public/index.html'],
  darkMode: false, // or 'media' or 'class'
  theme: {
    extend: {},
  },
  variants: {
    extend: {},
  },
  plugins: [],
}
// tailwind.config.js
module.exports = {
  purge: ['./src/**/*.{js,jsx,ts,tsx}', './public/index.html'],
  darkMode: false, // or 'media' or 'class'
  theme: {
    extend: {},
  },
  variants: {
    extend: {},
  },
  plugins: [],
}
JAVASCRIPT

Krok 5: Utwórz plik Tailwind CSS

Utwórz nowy plik o nazwie src/tailwind.css i dodaj do niego następującą treść:

@tailwind base;
@tailwind components;
@tailwind utilities;

Krok 6: Zaimportuj Tailwind CSS do swojego projektu React

Otwórz plik src/index.js i zaimportuj właśnie utworzony plik Tailwind CSS:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css'; // Existing CSS imports
import App from './App';
import './tailwind.css'; // Tailwind CSS import

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css'; // Existing CSS imports
import App from './App';
import './tailwind.css'; // Tailwind CSS import

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);
JAVASCRIPT

Krok 7: Zacznij korzystać z Tailwind CSS

Teraz możesz zacząć używać klas Tailwind CSS w kodzie swoich komponentów React. Otwórz plik src/App.js i zmodyfikuj go w następujący sposób:

import React from 'react';

function App() {
  return (
    <div className="text-center min-h-screen flex items-center justify-center">
      <header className="bg-blue-500 text-white p-8 rounded">
        <h1 className="text-4xl font-bold">Welcome to Tailwind CSS in React</h1>
        <p className="mt-4">This is a sample application using Tailwind CSS with React.</p>
      </header>
    </div>
  );
}

export default App;
import React from 'react';

function App() {
  return (
    <div className="text-center min-h-screen flex items-center justify-center">
      <header className="bg-blue-500 text-white p-8 rounded">
        <h1 className="text-4xl font-bold">Welcome to Tailwind CSS in React</h1>
        <p className="mt-4">This is a sample application using Tailwind CSS with React.</p>
      </header>
    </div>
  );
}

export default App;
JAVASCRIPT

Krok 8: Uruchom swój projekt React

Na koniec uruchom serwer deweloperski, aby zobaczyć Tailwind CSS w akcji:

npm start
npm start
SHELL

Twoja aplikacja powinna teraz działać z zintegrowanym Tailwind CSS. Możesz zacząć korzystać z klas użytkowych Tailwind, aby w prosty sposób stylizować swoje komponenty React.

Wprowadzenie do IronPDF

IronPDF to popularna biblioteka służąca do generowania, edycji i konwersji dokumentów PDF w różnych środowiskach programistycznych. Pakiet IronPDF NPM został zaprojektowany specjalnie dla aplikacji Node.js.

Oto kilka kluczowych funkcji i szczegółów dotyczących pakietu IronPDF NPM:

Najważniejsze cechy

Konwersja HTML do PDF

Z łatwością konwertuj treści HTML na dokumenty PDF. Ta funkcja jest szczególnie przydatna do generowania dynamicznych plików PDF na podstawie treści internetowych.

Konwersja adresów URL do formatu PDF

Generuj pliki PDF bezpośrednio z adresów URL, co pozwala na przechwytywanie treści stron internetowych i zapisywanie ich jako pliki PDF za pomocą kodu.

Manipulacja plikami PDF

Z łatwością scalaj, dziel i edytuj istniejące dokumenty PDF. IronPDF oferuje takie funkcje, jak dodawanie stron, dzielenie dokumentów, dostosowywanie plików PDF i wiele innych.

Zabezpieczenia plików PDF

Zabezpiecz swoje dokumenty PDF, szyfrując je hasłami lub stosując podpisy cyfrowe. IronPDF oferuje opcje ochrony poufnych dokumentów przed nieuprawnionym dostępem.

Wysoka jakość tłumaczenia

Tworzenie wysokiej jakości dokumentów PDF z precyzyjnym renderowaniem tekstu, obrazów i formatowania. IronPDF gwarantuje, że wygenerowane pliki PDF zachowują wierność oryginalnej treści.

Kompatybilność międzyplatformowa

IronPDF jest kompatybilny z różnymi platformami, w tym Windows, Linux i macOS, dzięki czemu nadaje się do szerokiego zakresu środowisk programistycznych.

Prosta integracja

Z łatwością zintegruj IronPDF ze swoimi aplikacjami Node.js, korzystając z pakietu npm. API jest dobrze udokumentowane, co ułatwia włączenie funkcji generowania plików PDF do projektów.

Instalacja

Aby zainstalować pakiet IronPDF NPM, użyj następującego polecenia:

 npm i @ironsoftware/ironpdf

Wygeneruj dokument PDF za pomocą IronPDF i użyj pakietu Tailwind NPM

Skonfiguruj projekt Next.js

Zainstaluj zależności: Najpierw utwórz nowy projekt Next.js (jeśli jeszcze tego nie zrobiłeś) za pomocą poniższego polecenia. Proszę zapoznać się ze stroną konfiguracji.

npx create-next-app@latest tailwind-pdf --use-npm --example "https://github.com/vercel/next-learn/tree/main/basics/learn-starter"
npx create-next-app@latest tailwind-pdf --use-npm --example "https://github.com/vercel/next-learn/tree/main/basics/learn-starter"
SHELL

Następnie przejdź do katalogu projektu:

cd tailwind-pdf
cd tailwind-pdf
SHELL

Zainstaluj wymagane pakiety:

yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
yarn add -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
yarn add -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
SHELL

Powyższe instrukcje utworzą plik tailwind.config.js, jak poniżej:

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./app/**/*.{js,ts,jsx,tsx,mdx}",
    "./pages/**/*.{js,ts,jsx,tsx,mdx}",
    "./components/**/*.{js,ts,jsx,tsx,mdx}",
    // Or if using `src` directory:
    "./src/**/*.{js,ts,jsx,tsx,mdx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}
/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./app/**/*.{js,ts,jsx,tsx,mdx}",
    "./pages/**/*.{js,ts,jsx,tsx,mdx}",
    "./components/**/*.{js,ts,jsx,tsx,mdx}",
    // Or if using `src` directory:
    "./src/**/*.{js,ts,jsx,tsx,mdx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}
JAVASCRIPT

Dodaj następujący kod do pliku global.css:

@tailwind base;
@tailwind components;
@tailwind utilities;

Otwórz lub utwórz plik _app.js i dołącz plik global.css, jak pokazano poniżej:

// These styles apply to every route in the application
import '@/styles/globals.css'

export default function App({ Component, pageProps }) {
  return <Component {...pageProps} />
}
// These styles apply to every route in the application
import '@/styles/globals.css'

export default function App({ Component, pageProps }) {
  return <Component {...pageProps} />
}
JAVASCRIPT

Utwórz plik PDF

Teraz stwórzmy prosty przykład generowania pliku PDF przy użyciu IronPDF. W komponencie Next.js (np. pages/index.tsx) dodaj następujący kod:

API do generowania plików PDF: Pierwszym krokiem jest stworzenie backendowego API do generowania dokumentów PDF. Ponieważ IronPDF działa wyłącznie po stronie serwera, musimy utworzyć wywołanie API, gdy użytkownik chce wygenerować plik PDF. Utwórz plik w ścieżce pages/api/pdf.js i dodaj poniższą treść.

IronPDF wymaga klucza licencyjnego, który można uzyskać na stronie licencji i umieścić w poniższym kodzie.

// pages/api/pdf.js
import { IronPdfGlobalConfig, PdfDocument } from "@ironsoftware/ironpdf";

// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Your license key";

export default async function handler(req, res) {
    try {
        const url = req.query.url;
        const pdf = await PdfDocument.fromUrl(url);
        const data = await pdf.saveAsBuffer();
        console.error('Data PDF:', data);
        res.setHeader('Content-Type', 'application/pdf');
        res.setHeader('Content-Disposition', 'attachment; filename=awesomeIron.pdf');
        res.send(data);
    } catch (error) {
        console.error('Error generating PDF:', error);
        res.status(500).end();
    }
}
// pages/api/pdf.js
import { IronPdfGlobalConfig, PdfDocument } from "@ironsoftware/ironpdf";

// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Your license key";

export default async function handler(req, res) {
    try {
        const url = req.query.url;
        const pdf = await PdfDocument.fromUrl(url);
        const data = await pdf.saveAsBuffer();
        console.error('Data PDF:', data);
        res.setHeader('Content-Type', 'application/pdf');
        res.setHeader('Content-Disposition', 'attachment; filename=awesomeIron.pdf');
        res.send(data);
    } catch (error) {
        console.error('Error generating PDF:', error);
        res.status(500).end();
    }
}
JAVASCRIPT

Teraz zmodyfikuj kod index.js, aby używać Tailwind CSS:

import Head from 'next/head';
import { useState } from "react";

export default function Home() {
    const [textInput, setTextInput] = useState('');

    // Function to generate PDF from the given URL
    const generatePdf = async () => {
        try {
            const response = await fetch('/api/pdf?url=' + textInput);
            const blob = await response.blob();
            const url = window.URL.createObjectURL(new Blob([blob]));
            const link = document.createElement('a');
            link.href = url;
            link.setAttribute('download', 'example.pdf');
            document.body.appendChild(link);
            link.click();
            link.parentNode.removeChild(link);
        } catch (error) {
            console.error('Error generating PDF:', error);
        }
    };

    // Handle change in text input for URL
    const handleChange = (event) => {
        setTextInput(event.target.value);
    }

    return (
        <div>
            <Head>
                <title>Demo Tailwind and Generate PDF From IronPDF</title>
                <link rel="icon" href="/favicon.ico" />
            </Head>
            <main className='text-center'>
                <h1 className='text-blue-500 text-4xl p-6 mt-12' >
                    Demo Tailwind and Generate PDF From IronPDF
                </h1>
                <p className='w-full text-center'>
                    <span className='px-4 text-xl border-gray-500'>
                        Enter URL To Convert to PDF:
                    </span>{" "}
                </p>
                <input 
                    type="text" 
                    className="border p-2 m-4"
                    value={textInput}
                    onChange={handleChange} 
                    placeholder="Enter URL here" 
                />
                <button 
                    className='rounded-sm bg-blue-800 p-2 m-12 text-xl text-white' 
                    onClick={generatePdf}
                >
                    Generate PDF
                </button>
            </main> 
        </div>
    );
}
import Head from 'next/head';
import { useState } from "react";

export default function Home() {
    const [textInput, setTextInput] = useState('');

    // Function to generate PDF from the given URL
    const generatePdf = async () => {
        try {
            const response = await fetch('/api/pdf?url=' + textInput);
            const blob = await response.blob();
            const url = window.URL.createObjectURL(new Blob([blob]));
            const link = document.createElement('a');
            link.href = url;
            link.setAttribute('download', 'example.pdf');
            document.body.appendChild(link);
            link.click();
            link.parentNode.removeChild(link);
        } catch (error) {
            console.error('Error generating PDF:', error);
        }
    };

    // Handle change in text input for URL
    const handleChange = (event) => {
        setTextInput(event.target.value);
    }

    return (
        <div>
            <Head>
                <title>Demo Tailwind and Generate PDF From IronPDF</title>
                <link rel="icon" href="/favicon.ico" />
            </Head>
            <main className='text-center'>
                <h1 className='text-blue-500 text-4xl p-6 mt-12' >
                    Demo Tailwind and Generate PDF From IronPDF
                </h1>
                <p className='w-full text-center'>
                    <span className='px-4 text-xl border-gray-500'>
                        Enter URL To Convert to PDF:
                    </span>{" "}
                </p>
                <input 
                    type="text" 
                    className="border p-2 m-4"
                    value={textInput}
                    onChange={handleChange} 
                    placeholder="Enter URL here" 
                />
                <button 
                    className='rounded-sm bg-blue-800 p-2 m-12 text-xl text-white' 
                    onClick={generatePdf}
                >
                    Generate PDF
                </button>
            </main> 
        </div>
    );
}
JAVASCRIPT

Teraz uruchom aplikację za pomocą polecenia:

yarn dev
yarn dev
SHELL

WYNIK dla Tailwind CSS i IronPDF

tailwind npm (Jak to działa dla programistów): Rysunek 1 – Strona wyjściowa aplikacji Tailwind i IronPDF Next.js

Kliknij przycisk "Generuj PDF", aby wygenerować plik PDF z podanego adresu URL.

tailwind npm (Jak to działa dla programistów): Rysunek 2 – Plik PDF wygenerowany z adresu URL przy użyciu pakietu IronPDF

Licencja IronPDF

Strona IronPDF.

Umieść tutaj klucz licencyjny:

import { IronPdfGlobalConfig, PdfDocument } from "@ironsoftware/ironpdf";
// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Add Your key here";
import { IronPdfGlobalConfig, PdfDocument } from "@ironsoftware/ironpdf";
// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Add Your key here";
JAVASCRIPT

Wnioski

Włączenie Tailwind CSS do projektu React za pomocą npm jest proste. Postępując zgodnie z tymi krokami, można szybko skonfigurować Tailwind CSS i zacząć korzystać z jego klas typu "utility-first" do tworzenia responsywnych i konfigurowalnych interfejsów użytkownika. Elastyczność i rozbudowane opcje dostosowywania Tailwind CSS sprawiają, że jest to doskonały wybór dla programistów React, którzy chcą usprawnić proces stylizacji. IronPDF to wszechstronny pakiet do generowania plików PDF, który pomaga programistom w łatwej integracji z aplikacjami Enterprise. Opanowanie obu tych technologii umożliwia programistom tworzenie nowoczesnych, bogatych w funkcje aplikacji.

Aby uzyskać więcej informacji na temat rozpoczęcia pracy z IronPDF oraz zapoznać się z przykładami kodu pokazującymi różne sposoby włączenia go do projektu, odwiedź stronę z przykładami kodu i dokumentacją. IronPDF oferuje wsparcie techniczne i opcje aktualizacji dla wszystkich posiadaczy licencji wieczystych. W okresie próbnym oferowane jest również wsparcie techniczne dostępne 24 godziny na dobę, 5 dni w tygodniu.

Należy pamiętać, że do uzyskania bezpłatnej licencji probnej nie są wymagane dane karty kredytowej ani zakładanie konta, a jedynie prawidłowy adres e-mail.

Darrius Serrant
Full Stack Software Engineer (WebOps)

Darrius Serrant posiada tytuł licencjata z informatyki z Uniwersytetu Miami i pracuje jako Full Stack WebOps Marketing Engineer w Iron Software. Już od młodych lat zainteresował się kodowaniem, postrzegając informatykę jako zarówno tajemniczą, jak i dostępną, co czyni ją doskonałym medium dla kreatywności ...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie