Jedną z kluczowych cech bloga programistycznego są bloki kodu. Nie musisz ich formatować za pomocą zakreślacza składni, ale dzięki temu Twoje blogi wyglądają o wiele ładniej, jeśli to zrobisz. Może również poprawić czytelność kodu.
W tym artykule dowiesz się, jak używać react-syntax-highlighter do podświetlania bloków kodu w React. Stworzysz komponent bloku kodu, który będzie mógł podświetlać przekazany do niego kod przy użyciu składni podanego języka.
Podświetlanie składni Z reakcją-syntax-highlighter
Podświetlacz składni w React umożliwia podświetlanie kodu za pomocą Reacta. W przeciwieństwie do innych wyróżnienia składni, React-syntax-highlighter nie polega na ComponentDidUpdate lub ComponentDidMount do wstawiania podświetlonego kodu do DOM za pomocą DangerlySetInnerHTML.
Takie podejście jest niebezpieczne, ponieważ naraża aplikację na: ataki cross-site scripting.
Zamiast tego używa drzewa składni do budowania wirtualnego DOM i aktualizuje go tylko zmianami.
Komponent wykorzystuje w tle PrismJS i Highlight.js. Możesz wybrać, czy chcesz podświetlić swój kod. Jest bardzo łatwy w użyciu, ponieważ zapewnia nieszablonową stylizację.
Komponent react-syntax-highlighter akceptuje kod, język i styl jako rekwizyty. Komponent akceptuje również inne opcje dostosowywania. Znajdziesz je w React dokumentacja wyróżniania składni.
Korzystanie z komponentu react-syntax-highlighter
Aby zacząć używać podświetlacza składni React w React, zainstaluj go przez npm.
npm zainstalować React-syntax-highlighter --ratować
Utwórz nowy komponent o nazwie CodeBlock.js w aplikacji React i importuj React-syntax-highlighter:
import Podświetlanie składni z „zaznaczanie składni reakcji”;
import {dokument} z 'react-syntax-highlighter/dist/esm/styles/hljs';
stały CodeBlock = ({ciąg kodowy}) => {
zwrócić (
<Język wyróżnienia składni="javascript" styl={docco}>
{Ciąg kodu}
</SyntaxHighlighter>
);
};
Składnik SyntaxHighlighter akceptuje używany język i styl. Jako zawartość przyjmuje również ciąg kodu.
Możesz renderować powyższy komponent w następujący sposób:
stały Aplikacja = () => {
stały ciąg kodu = `
stały Kwadrat = (n) => zwrócić n * n
`
zwrócić(
<Ciąg kodu CodeBlock = {Ciąg kodu}/>
)
}
Ważne jest, aby pamiętać, że użycie React-syntax-highlighter może zwiększyć rozmiar kompilacji, więc jeśli zajdzie taka potrzeba, możesz zaimportować lekką kompilację. Wersja lekka nie ma jednak domyślnych stylów.
Będziesz także musiał zaimportować i zarejestrować języki, które chcesz za pomocą ZarejestrujJęzyk funkcja wyeksportowana z lekkiej kompilacji.
import { Światło jak Podświetlanie składni } z „zaznaczanie składni reakcji”;
import js z 'react-syntax-highlighter/dist/esm/languages/hljs/javascript';
SkładniaHighlighter.registerLanguage('javascript', js);
Ten komponent używa Highlight.js do podświetlenia kodu.
Aby zamiast tego użyć PrismJS, zaimportuj go z pakietu react-syntax-highlighter w następujący sposób:
import { Pryzmat jak Podświetlanie składni } z „zaznaczanie składni reakcji”;
import { vscDarkPlus } z „react-syntax-highlighter/dist/esm/styles/prism”;
W przypadku oświetlenia pryzmatu zaimportuj PrismLight i zarejestruj używany język.
import { PryzmatŚwiatło jak Podświetlanie składni } z „zaznaczanie składni reakcji”;
import jsx z 'react-syntax-highlighter/dist/esm/languages/prism/jsx';
import pryzmat z 'react-syntax-highlighter/dist/esm/style/prism/prism';
SkładniaHighlighter.registerLanguage('jsx', jsx);
Korzystanie z pryzmatu jest korzystne, szczególnie podczas podświetlania jsx, ponieważ reakcja-syntax-highlighter nie obsługuje go w pełni.
Dodawanie numerów linii do bloku kodu
Teraz, gdy wiesz, jak podświetlić blok kodu, możesz zacząć dodawać dodatkowe funkcje, takie jak numery linii.
Z React-syntax-highlighter wystarczy zdać showLineNumbers do składnika SyntaxHighlighter i ustaw go na true.
<Język wyróżnienia składni="javascript" style={docco} showLineNumbers="PRAWDA">
{Ciąg kodu}
</SyntaxHighlighter>
Komponent będzie teraz wyświetlał numery wierszy obok kodu.
Używanie stylów niestandardowych w Twoim komponencie
Mimo że reakcja-syntax-highlighter zapewnia stylizację, czasami może być konieczne dostosowanie bloków kodu.
W tym celu pakiet pozwala przejść inline Style CSS do właściwości customStyle, jak pokazano poniżej:
<Język wyróżnienia składni="javascript" style={vscDarkPlus} customStyle={{borderPromień: "5px", kolor tła: "#001E3C"}} >
{ciąg kodowy}
</SyntaxHighlighter>
W tym przykładzie podświetlony blok kodu będzie miał niestandardowy promień obramowania i kolor tła.
Znaczenie podświetlania składni
Aby podświetlić kod w React, możesz użyć pakietu react-syntax-highlighter. Możesz użyć wersji uproszczonej, aby zmniejszyć rozmiar kompilacji i dostosować bloki kodu przy użyciu własnych stylów.
Wyróżnianie fragmentów kodu sprawia, że kod wygląda dobrze, poprawia jego czytelność i jest bardziej przystępny dla czytelników.