In diesem Artikel analysieren wir die Verwendung von String.raw im Tailwindcss-Quellcode.
In der MDN-Dokumentation heißt es:
„Die statische Methode String.raw() ist eine Tag-Funktion von Vorlagenliteralen.
Dies ähnelt dem r-Präfix in Python oder dem @-Präfix in C# für String-Literale.
Es wird verwendet, um die rohe Stringform von Vorlagenliteralen zu erhalten – also Ersetzungen
(z. B. ${foo}) werden verarbeitet, Escape-Sequenzen (z. B. n) jedoch nicht.“
Das folgende Beispiel stammt aus MDN:
// Create a variable that uses a Windows // path without escaping the backslashes: const filePath = String.raw`C:\Development\profile\aboutme.html`; console.log(`The file was uploaded from: ${filePath}`); // Expected output: "The file was uploaded from: C:\Development\profile\aboutme.html"
Das Ausführungsergebnis dieses obigen Beispiels sieht folgendermaßen aus:
> "The file was uploaded from: C:\Development\profile\aboutme.html"
Wenn Sie dasselbe Beispiel ohne String.raw mit dem folgenden Code ausführen:
// Create a variable that uses a Windows // path without escaping the backslashes: const filePath = `C:\Development\profile\aboutme.html`; console.log(`The file was uploaded from: ${filePath}`); // Expected output: "The file was uploaded from: C:\Development\profile\aboutme.html"
Ergebnis sieht so aus:
> "The file was uploaded from: C:Developmentprofileaboutme.html"
Wenn Sie dasselbe Beispiel mit n ausführen und den folgenden Code verwenden:
const filePathWithoutStringRaw = `\nC:\Development\profile\aboutme.html`; const filePathWithStringRaw = String.raw`\nC:\Development\profile\aboutme.html`; console.log("filePathWithoutStringRaw:", filePathWithoutStringRaw) console.log("*******") console.log("filePathWithStringRaw:", filePathWithStringRaw)
Ergebnis sieht so aus:
> "filePathWithoutStringRaw:" " C:Developmentprofileaboutme.html" > "*******" > "filePathWithStringRaw:" "\nC:\Development\profile\aboutme.html"
ui.spec.ts-Testdatei weist String.raw HTML und CSS zu.
HTML wird in vielen in ui.spec.ts geschriebenen Tests verwendet
Schauen wir uns diesen Testcode genauer an:
for (let [classes, expected] of [ [ 'bg-linear-to-r from-red-500', 'linear-gradient(to right, rgb(239, 68, 68) 0%, rgba(0, 0, 0, 0) 100%)', ], [ 'bg-linear-to-r via-red-500', 'linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgb(239, 68, 68) 50%, rgba(0, 0, 0, 0) 100%)', ], [ 'bg-linear-to-r to-red-500', 'linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgb(239, 68, 68) 100%)', ], [ 'bg-linear-to-r from-red-500 to-blue-500', 'linear-gradient(to right, rgb(239, 68, 68) 0%, rgb(59, 130, 246) 100%)', ], [ 'bg-linear-to-r via-red-500 to-blue-500', 'linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgb(239, 68, 68) 50%, rgb(59, 130, 246) 100%)', ], [ 'bg-linear-to-r from-red-500 via-green-500 to-blue-500', 'linear-gradient(to right, rgb(239, 68, 68) 0%, rgb(34, 197, 94) 50%, rgb(59, 130, 246) 100%)', ], [ 'bg-linear-[to_right,var( - color-red-500),var( - color-green-500),var( - color-blue-500)]', 'linear-gradient(to right, rgb(239, 68, 68), rgb(34, 197, 94), rgb(59, 130, 246))', ], ]) { test(`background gradient, "${classes}"`, async ({ page }) => { let { getPropertyValue } = await render( page, html`<div id="x" class="${classes}">Hello world</div>`, ) expect(await getPropertyValue('#x', 'background-image')).toEqual(expected) }) }
Es ist interessant zu sehen, wie ein ganzes Array in einer for-Schleife definiert wird.
html`<div id="x" class="${classes}">Hello world</div>`,
${classes} wird durch das erste Element des folgenden Arrays ersetzt:
[<br> 'bg-linear-to-r from-red-500',<br> 'linear-gradient(to right, rgb(239, 68, 68) 0%, rgba(0, 0, 0, 0) 100%)',<br> ],<br>
Bei Think Throo haben wir die Mission, die fortgeschrittenen Codebasis-Architekturkonzepte zu vermitteln, die in Open-Source-Projekten verwendet werden.
Verzehnfachen Sie Ihre Programmierkenntnisse, indem Sie fortgeschrittene Architekturkonzepte in Next.js/React üben, die Best Practices erlernen und Projekte in Produktionsqualität erstellen.
Wir sind Open Source – https://github.com/thinkthroo/thinkthroo (Geben Sie uns einen Stern!)
Wir bieten auch Webentwicklung und technische Redaktionsdienste an. Kontaktieren Sie uns unter hello@thinkthroo.com, um mehr zu erfahren!
https://github.com/tailwindlabs/tailwindcss/blob/next/packages/tailwindcss/tests/ui.spec.ts
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw
https://stackoverflow.com/questions/34772762/what-are-the-actual-uses-of-es6-raw-string-access
Das obige ist der detaillierte Inhalt vonString.raw im Tailwind CSS-Quellcode.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!