node如何实现时钟效果 提取css和js脚本文件
dearweb
发布:2021-11-07 14:35:51阅读:
现在越来越多的前端开始使用node编程了,本文主要介绍node小案例,时钟展示,并且将css和js脚本文件抽离出来。
首先我们看下源代码
css与js脚本文件直接写入html中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
html,body{
margin: 0;
padding: 0;
background: yellow;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.box{
width: 400px;
height: 200px;
background-color: rgba(255,255,255,.6);
display: flex;
align-items: center;
font-size: 80px;
justify-content: center
}
</style>
</head>
<body>
<div class="box">
<div id="box1">02</div>
<span>:</span>
<div id="box2">01</div>
<span>:</span>
<div id="box3">02</div>
</div>
<script>
setInterval(()=>{
let dt = new Date()
let HH = dt.getHours()
let mm = dt.getMinutes()
let ss = dt.getSeconds()
document.getElementById('box1').innerHTML = HH < 10 ? ('0' + HH) : HH
document.getElementById('box2').innerHTML = mm < 10 ? ('0' + mm) : mm
document.getElementById('box3').innerHTML = ss < 10 ? ('0' + ss) : ss
},1000)
</script>
</body>
</html>页面效果展示

下面我们开始进行文件抽离
总共分三步
抽离css,抽离js,生成新的html文件代码如下
const { Console } = require('console')
const fs = require('fs')
const path = require('path')
//匹配<style></style>标签的正则
// \s表示空白符 \S表示任意非空白符 *表示匹配任意次
const regStyle = /<style>[\s\S]*<\/style>/
// 匹配匹配<script></script> 标签的正则
const regScript = /<script>[\s\S]*<\/script>/
// 调用fs.readFile() 方法 读取文件
fs.readFile(path.join(__dirname,'./clock/index.html'),'utf-8',function(err,data){
if(err) return console.log('读取文件失败')
// 读取成功之后 调用对应的三个方法 分别拆解出 css , js , html 文件
// 修改css文件
resolveCss(data)
// 修改js文件
resolveJs(data)
// 修改html文件
resolveHtml(data);
})
// 处理css方法
function resolveCss(data){
// 正则提取 css 并进行替换 style标签的处理
let resultCss = regStyle.exec(data)[0].replace('<style>','').replace('</style>',"")
// 将css样式写入css文件中
fs.writeFile(path.join(__dirname,'./clock/index.css'),resultCss,function(err){
if(err)return console.log('样式写入失败')
})
}
// 处理js
function resolveJs(data){
let resultJs = regScript.exec(data)[0].replace('<script>','').replace('</script>','')
// 将js写入文件中
fs.writeFile(path.join(__dirname,'./clock/index.js'),resultJs,function(err){
if(err)return console.log('脚本写入失败')
})
}
// 处理html
function resolveHtml(data){
// console.log(data.replace('html','9999'))
const newHtml = data.replace(regStyle,'<link rel="stylesheet" href="./index.css">').replace(regScript,'<script src="./index.js"></script>')
fs.writeFile(path.join(__dirname,'./clock/indexNew.html'),newHtml,function(err){
if(err)return console.log('写入文件失败')
console.log('文件写入成功')
})
}下图就是生成后的展示

注意点:
fs.writeFile() 不能创建文件夹路径,只能写入文件。
重复调用 fs.writeFile() 写入同一个文件,新写入的内容会覆盖之前的旧内容。
以上就是时钟的小案例,不足之处还望大神多多指教喔。
小礼物走一波,支持作者
赏还没有人赞赏,支持一波吧