核心思路
1俺猿、導(dǎo)入fs模塊茎匠,path模塊
2、分別創(chuàng)建CSS,JS正則表達(dá)式
3押袍、fs.readFile()讀取index.html這個文件诵冒,成功后調(diào)用函數(shù);
4谊惭、封裝一個函數(shù)汽馋,定義正則表達(dá)式,分別匹配<script></script>和<style></style>標(biāo)簽
5午笛、replace()方法去除標(biāo)簽惭蟋;
6、將提取出來的css樣式药磺,寫入對應(yīng)的文件中
const fs = require('fs')
const path = require('path')
const { resolve } = require('path/posix')
// 定義正則表達(dá)式,分別匹配<script></script>和<style></style>標(biāo)簽
// [\s\S]匹配任意字符(空白字符+非空白字符) *匹配多次
const regStyle = /<style>[\s\S]*<\/style>/
const regScript = /<script>[\s\S]*<\/script>/
// 使用fs.readFile()讀取被處理的文件index.html
fs.readFile(path.join(__dirname,'/index.html'),'utf8',(err,dataStr)=>{
if(err) {
return console.log('讀取失斆何啊癌佩!' + err);
}
console.log('讀取成功!');
// 讀取html文件成功后便锨,調(diào)用對應(yīng)的方法围辙,拆解出html,css,js文件
resolveCSS(dataStr)
resolveJS(dataStr)
resolveHTML(dataStr)
})
// 處理 CSS樣式
function resolveCSS(htmlStr) {
// 使用正則提取頁面中<script></st>標(biāo)簽
const r1 = regStyle.exec(htmlStr)
// 將提取出來的樣式字符串,進(jìn)一步處理(刪除<script></script>)
const newCSS = r1[0].replace('<style>','').replace('</style>','')
// 將提取出來的css樣式放案,寫入index.css文件中
fs.writeFile(path.join(__dirname,'/clock/index.css'),newCSS, err => {
if(err) {
console.log('寫入CSS樣式失斠ā!' + err);
} console.log('寫入CSS樣式成功吱殉!');
})
}
// 處理JS
function resolveJS(htmlStr) {
// 使用正則提取頁面中<script></script>標(biāo)簽
const r2 = regScript.exec(htmlStr)
// 將提取出來的樣式字符串掸冤,進(jìn)一步處理(刪除<script></script>)
const newJS = r2[0].replace('<script>','').replace('</script>','')
// 將提取出來的css樣式厘托,寫入index.css文件中
fs.writeFile(path.join(__dirname,'/clock/index.js'),newJS, err => {
if(err) {
console.log('寫入JS腳本失敗稿湿!' + err);
} console.log('寫入JS腳本成功铅匹!');
})
}
// 處理HTML
function resolveHTML(htmlStr) {
// 將字符串調(diào)用replace()方法,將內(nèi)嵌的<script></script>和<style></style>標(biāo)簽饺藤,替換成link 和script標(biāo)簽
const newHTML = htmlStr.replace(regStyle,'<link rel="stylesheet" href="./index.css">').replace(regScript,'<script src="./index.js"></script>');
// 將提取出來的css樣式包斑,寫入index.css文件中
fs.writeFile(path.join(__dirname,'./clock/index.html'),newHTML, err => {
if(err) {
console.log('寫入html失敗涕俗!' + err);
} console.log('寫入html成功罗丰!');
})
}