Node.js 拆分HTML文件中 样式<style> 和 脚本<script>标签中的内容

  • 创建两个正则表达式,分别匹配 style 和 script 标签
  • 使用 fs 模块,读取需要被处理的 html 文件
  • 自定义 resolveCSS 方法,把 <style> 里的内容写入index.css 样式文件
  • 自定义 resolveJS 方法,把 <script> 里的内容写入index.js脚本文件
  • 自定义 resolveHTML 方法,替换掉style和script内容,写入index.html 样式文件
const fs = require('fs')
const path = require('path')

// \s表示空白字符,\S表示非空白字符,*表示匹配前面的任意次
const regExpStyle = /<style>[\s\S]*<\/style>/
const regExpScript = /<script>[\s\S]*<\/script>/

fs.readFile(path.join(__dirname,'./index.html'),'utf8',(err,dataStr)=>{
  if(err){
    return console.log('读取文件失败:',err.message)
  }
  resolveCSS(dataStr)
  resolveJS(dataStr)
  resolveHTML(dataStr)
})

resolveCSS = (str)=>{
  str = str.match(regExpStyle)[0]
  str = str.replace('<style>','').replace('</style>','')
  fs.writeFile(path.join(__dirname,'./index.css'),str,(err)=>{
    if(err) return console.log('创建JS文件失败:',err.message)
    console.log('CSS文件创建成功!')
  })
}
resolveJS = (str)=>{
  str = str.match(regExpScript)[0]
  str = str.replace('<script>','').replace('</script>','')
  fs.writeFile(path.join(__dirname,'./index.js'),str,(err)=>{
    if(err) return console.log('创建JS文件失败:',err.message)
    console.log('JS文件创建成功!')
  })
}
resolveHTML = (dataStr) => {
  let styleLink = "<link rel='stylesheet' href='./index.css' />",
  scriptLink = "<script src='./index.js'></script>"
  dataStr = dataStr.replace(regExpStyle,styleLink).replace(regExpScript,scriptLink)
  fs.writeFile(path.join(__dirname,'./newIndex.html'),dataStr,(err)=>{
    if(err) return console.log('创建新的HTML文件失败:',err.message)
    console.log('HTML文件创建成功!')
  })
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值