当前位置: 首页 > news >正文

path综合案例--时钟案例

综合案例--时钟案例
要求:将素材目录下的index.html页面,拆分成三个文件,分别是:
index.css; index.js; index.html
并且将拆分出来的3个文件,存放到clock目录中。
案例实现步骤:
①创建两个正则表达式,分别用来匹配style和script标签
②使用fs模板,读取需要被处理的HTML文件
③自定义resolveCSS方法,来写入index.css样式文件
④自定义resolveJS方法,来写入index.js脚本文件
⑤自定义resolveHTML方法,来写入index.html文件

// 1.1 导入 fs 文件系统模块
const fs = require('fs')
// 1.2 导入 path 路径处理模块
const path = require('path')// 1.3 定义正则表达式,分别匹配 <style></style> 和 <script></script> 标签
//其中\s表示空白字符,\S表示非空白字符,*表示匹配任意次,style前面斜杠是为了转义
const regStyle = /<style>[\s\S]*<\/style>/
const regScript = /<script>[\s\S]*<\/script>/// 2.1 调用 fs.readFile() 方法读取文件
fs.readFile(path.join(__dirname, '../Node.js DATA/素材/index.html'), 'utf8', function(err, dataStr) {// 2.2 读取 HTML 文件失败if (err) return console.log('读取HTML文件失败!' + err.message)// 2.3 读取文件成功后,调用对应的三个方法,分别拆解出 css, js, html 文件resolveCSS(dataStr)resolveJS(dataStr)resolveHTML(dataStr)
})
// 3.1 定义处理 css 样式的方法
function resolveCSS(htmlStr) {// 3.2 使用正则提取需要的内容const r1 = regStyle.exec(htmlStr)// 3.3 将提取出来的样式字符串,进行字符串的 replace 替换操作const newCSS = r1[0].replace('<style>', '').replace('</style>', '')// 3.4 调用 fs.writeFile() 方法,将提取的样式,写入到 clock 目录中 index.css 的文件里面fs.writeFile(path.join(__dirname, './clock/index.css'), newCSS, function(err) {if (err) return console.log('写入 CSS 样式失败!' + err.message)console.log('写入样式文件成功!')})
}
// 4.1 定义处理 js 脚本的方法
function resolveJS(htmlStr) {// 4.2 通过正则,提取对应的 <script></script> 标签内容const r2 = regScript.exec(htmlStr)// 4.3 将提取出来的内容,做进一步的处理const newJS = r2[0].replace('<script>', '').replace('</script>', '')// 4.4 将处理的结果,写入到 clock 目录中的 index.js 文件里面fs.writeFile(path.join(__dirname, './clock/index.js'), newJS, function(err) {if (err) return console.log('写入 JavaScript 脚本失败!' + err.message)console.log('写入 JS 脚本成功!')})
}
// 5.1 定义处理 HTML 结构的方法
function resolveHTML(htmlStr) {// 5.2 将字符串调用 replace 方法,把内嵌的 style 和 script 标签,替换为外联的 link 和 script 标签const newHTML = htmlStr.replace(regStyle, '<link rel="stylesheet" href="./index.css" />').replace(regScript, '<script src="./index.js"></script>')// 5.3 写入 index.html 这个文件fs.writeFile(path.join(__dirname, './clock/index.html'), newHTML, function(err) {if (err) return console.log('写入 HTML 文件失败!' + err.message)console.log('写入 HTML 页面成功!')})
}

注意:
①fs.writeFile()方法只能用来创建文件,不能用来创建路径
②重复调用fs.writeFile()写入同一个文件,新写入的内容会覆盖之前的旧内容。

http://www.jsqmd.com/news/422193/

相关文章:

  • 从WPF到Avalonia:铁路信号集中监测系统的信创跨平台重构思考 - T
  • DLL 文件丢失、DirectX 组件损坏引修复
  • 基于Spring Boot的高校办公室行政事务管理系统
  • A1平台多路aes67出现scheduling while atomic问题
  • 我的老师在AI时代之前就被淘汰了!一个“学渣”的自白:我的老师是小说和谷歌
  • [兰溪民间故事]赵阁老作弄亲家:一句玩笑话,十万雪花银
  • MySQL数据库
  • 基于springboot高校学生辅助系统
  • 东方博宜OJ 1153:查找“支撑数” ← 数组
  • 如何利用iPad作为Mac的高效副屏:功能解析与实际体验
  • ifstream和ofstream分别是什么
  • JS对象-事件监听
  • CSV文件具有简单易用、广泛兼容、人类可读和高压缩性的优点
  • 0xgame2025
  • 基于springboot高校创新创业系统
  • 面向对象三大特征之一:封装
  • 论文排版利器:8款目录生成软件深度测评
  • windows注册表编辑工具ExecTI - Run as TrustedInstaller
  • AI网关
  • 高效论文写作必备:8款目录生成工具横向评测
  • path路径模块
  • Agentic AI提示工程自我学习能力的教育应用,提示工程架构师介绍
  • 大数据领域数据建模的物联网数据处理
  • 一键生成目录:8款智能工具全面对比,排版更省心
  • AI应用架构师视角:私有化大模型部署的技术难点
  • 【UI自动化测试】6_Appium基础API _App基础操作
  • 大数据领域数据工程的关键流程详解
  • 捷克技术大学提出RNS:让AI“看图说话“更准确的新方法
  • 【回溯】BISHI83 迷宫问题
  • 康考迪亚大学研究团队发明了会“不确定“的AI医生