使用node.js拆分 html 文件

使用node.js拆分 html 文件
    目标:将html文件拆分为 css文件,js文件,html文件
    拆分步骤:
        1.导入文件处理模块


const fs = require('fs')


        2.导入处理路径模块

const path = require('path')


        3.定义两个正则表达式,分别筛选css代码,和js代码

​
// 定义一个正则表达式抽取 js 脚本
 const regJavaScript = /<script>[\s\S]*<\/script>/
 // 利用正则表达式抽取 style 样式
 let regStyle = /<style>[\s\S]*<\/style>/

​


        4.使用fs.readFile() 方法读取要拆分的文件

fs.readFile(path.join(__dirname, './时钟案例.html'), 'utf8', (err, dataStr) => {
    // 判断是否读取成功
    if (err) return console.log('文件读取失败', err.message)
    // 文件读取成功
    console.log('文件读取成功')
   
    resolveCSS(dataStr)
    resolveJS(dataStr)
    resolveHTML(dataStr)


})


        5.(1).定义一个方法分离css
                1.利用筛选css的正则表达式筛选出对应的css样式模块代码
                2.使用正则表达式中的exec() 方法,得到筛选后的代码,exec() 会返回一个数组,数组的第0项就是筛选的得到的部分 r1[0]
                3.使用replace() 方法将css样式中的<s>和</style>替换成空字符串 得到最终想要的部分newCss
                4.将最终处理好的newCss写入文件index.css中

// 定义一个方法分离CSS
function resolveCSS(dataHtml) {
    
    const r1 = regStyle.exec(dataHtml)
    // 将提取出来的字符串,进行字符串的 replace 替换操作
    const newCss = r1[0].replace('<style>', '').replace('</style>', '')
    // 使用 fs.writeFile() 方法给文件写入内容
    fs.writeFile(path.join(__dirname, './code/index.css'), newCss, 'utf8', (err) => {
        if (err) return console.log('文件写入失败')
        console.log('文件写入成功')
    })
}


          (2).定义一个方法分离js
                1.利用筛选JavaScript的正则表达式筛选出对应的JavaScript样式模块代码
                2.使用正则表达式中的exec() 方法,得到筛选后的代码,exec() 会返回一个数组,数组的第0项就是筛选的得到的部分 r1[0]
                3.使用replace() 方法将css样式中的<script>和</script>替换成空字符串 得到最终想要的部分newJs
                4.将最终处理好的newJs写入文件index.js中

// 定义一个方法分离JS 脚本
function resolveJS(dataHtml) {
    
    const r1 = regJavaScript.exec(dataHtml)
    // 将提取出来的字符串, 进行字符串 replace 替换操作
    const newJs = r1[0].replace('<script>', '').replace('</script>', '')
    // 使用 fs.writeFile() 方法给文件写入内容
    fs.writeFile(path.join(__dirname, './code/index.js'), newJs, 'utf8', (err) => {
        // 判断文件是否写入成功
        if(err) return console.log('文件写入失败')
        return console.log('文件写入成功')
    })
}


          (3).定义一个方法分离html
                1.使用筛选JavaScript 和 Css 的正则表达式 将对应部分替换掉
                2.替换的内容分别为<script src="index.js"></script> 和 <link rel="stylesheet" href="index.js"/>
                3.将替换后的内容 newHtml 写入 index.html 文件中

// 定义一个方法处理 html 文件
function resolveHTML(dataHtml) {
    // 使用正则表达式进行替换内容
    const newHtml = dataHtml.replace(regStyle, '<link rel="stylesheet" href="index.css">').replace(regJavaScript, '<script src="index.js"></script>')
    // 将newHtml 写入index.html文件中
    fs.writeFile(path.join(__dirname, './code/index.html'), newHtml, 'utf8', (err) => {
        // 判断是否写入成功
        if (err) return console.log('文件写入失败', errmessage);
        return console.log('文件写入成功')
    })
    
}


        7.调用三个方法,完成 html 分离

 resolveCSS(dataStr)
 resolveJS(dataStr)
 resolveHTML(dataStr)


        完整代码展示:
        

// 导入模块
const fs = require('fs')
const path = require('path')

 // 定义一个正则表达式抽取 js 脚本
 const regJavaScript = /<script>[\s\S]*<\/script>/
 // 利用正则表达式抽取 style 样式
 let regStyle = /<style>[\s\S]*<\/style>/

// 使用 fs.readFile() 方法读取文件
fs.readFile(path.join(__dirname, './时钟案例.html'), 'utf8', (err, dataStr) => {
    // 判断是否读取成功
    if (err) return console.log('文件读取失败', err.message)
    // 文件读取成功
    console.log('文件读取成功')
   
    resolveCSS(dataStr)
    resolveJS(dataStr)
    resolveHTML(dataStr)


})

// 定义一个方法分离CSS
function resolveCSS(dataHtml) {
    
    const r1 = regStyle.exec(dataHtml)
    // 将提取出来的字符串,进行字符串的 replace 替换操作
    const newCss = r1[0].replace('<style>', '').replace('</style>', '')
    // 使用 fs.writeFile() 方法给文件写入内容
    fs.writeFile(path.join(__dirname, './code/index.css'), newCss, 'utf8', (err) => {
        if (err) return console.log('文件写入失败')
        console.log('文件写入成功')
    })
}
// 定义一个方法分离JS 脚本
function resolveJS(dataHtml) {
    
    const r1 = regJavaScript.exec(dataHtml)
    // 将提取出来的字符串, 进行字符串 replace 替换操作
    const newJs = r1[0].replace('<script>', '').replace('</script>', '')
    // 使用 fs.writeFile() 方法给文件写入内容
    fs.writeFile(path.join(__dirname, './code/index.js'), newJs, 'utf8', (err) => {
        // 判断文件是否写入成功
        if(err) return console.log('文件写入失败')
        return console.log('文件写入成功')
    })
}

// 定义一个方法处理 html 文件
function resolveHTML(dataHtml) {
    // 使用正则表达式进行替换内容
    const newHtml = dataHtml.replace(regStyle, '<link rel="stylesheet" href="index.css">').replace(regJavaScript, '<script src="index.js"></script>')
    // 将newHtml 写入index.html文件中
    fs.writeFile(path.join(__dirname, './code/index.html'), newHtml, 'utf8', (err) => {
        // 判断是否写入成功
        if (err) return console.log('文件写入失败', errmessage);
        return console.log('文件写入成功')
    })
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值