2 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊
您只需使用 NodeJS 加載 CSS 文件的內(nèi)容fs.readFileSync
。
const fs = require('fs');
try {
const documentStyles = fs.readFileSync('styles/style.css');
const document = `
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
${documentStyles}
</style>
</head>
<body>
<p>Here's the test</p>
</body>
</html>
`;
} catch(e) {
console.log('Error:', e.stack);
}

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
正如 Christos Lytras 所指出的,通過(guò)文件系統(tǒng) (fs) 模塊在節(jié)點(diǎn)中獲取文件的字符串內(nèi)容非常容易,但是如果您關(guān)心的是如何通過(guò) API 獲取 JavaScript 可以使用的對(duì)象,您可能需要 CSSStyleSheet應(yīng)用程序接口。
這個(gè)對(duì)象有一個(gè).cssRules
屬性,它包含一個(gè)類似數(shù)組的 cssRule對(duì)象列表。您將遍歷這些并檢查它們的type
屬性(因?yàn)椴煌囊?guī)則類型具有不同的內(nèi)部結(jié)構(gòu))。
大多數(shù)將具有type: 1
,這意味著它們是 cssStyleRule對(duì)象,它們具有:
一個(gè)
selector
屬性(如.my-awesome-class
),以及一個(gè)
style
屬性(如{ font-size: 1.5em; color: hotpink; }
)。
一旦達(dá)到這個(gè)級(jí)別,您可能需要使用正則表達(dá)式解析選擇器和樣式,除非它們都非常簡(jiǎn)單。您將構(gòu)建一個(gè)自定義對(duì)象以分配給您的documentStyles
變量。
除此之外,您還需要將 CSS 的kebab-case
名稱轉(zhuǎn)換為 JavaScript 的camelCase
格式(或者您可能會(huì)在網(wǎng)上找到可以為您完成此操作的代碼。)
(這個(gè)問(wèn)題的答案為您提供了一個(gè)深入研究樣式表以查找特定規(guī)則并檢查其樣式屬性的示例。)
添加回答
舉報(bào)