Node.js黑马时钟案例(本人详细介绍实现过程)

news2024/9/21 20:48:10

先上没有使用node.js之前的html部分代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        html,
        body {
            height: 100%;
            overflow: hidden;
            background-image: linear-gradient(to bottom right, red, yellow);
        }
        .box,
        .box1 {
            position: absolute;
            left: 50%;
            margin-left: -300px;
            margin-top: 0px;
            display: flex;
            justify-content: space-around;
            align-items: center;
            width: 600px;
            height: 400px;
            background-color: rgba(0, 0, 0, 0.2);
            font-size: 80px;
        }
        .box1 {
            transform: translateY(400px) rotate(180deg);
            background-color: rgba(255, 255, 255, 0.2);
        }
    </style>
</head>
<body>
    <!-- 最大的盒子 -->
    <div class="boss">
        <!-- 时分秒 -->
        <div class="box">
            <div class="hours">00</div>
            <div>:</div>
            <div class="minutes">00</div>
            <div>:</div>
            <div class="second">00</div>
        </div>
    </div>
</body>
<script>
    // 页面加载事件
    window.addEventListener("load", function () {
        // 获取box
        let box = document.querySelector(".box")
        // 获取boss
        let boss = document.querySelector(".boss")
        // 克隆box
        let divs = box.cloneNode(true)
        divs.className = "box1"
        boss.appendChild(divs)
        // 获取时分秒元素标签
        let times = document.querySelectorAll(".box > div")
        let times1 = document.querySelectorAll(".box1 > div")
        console.log(times1);
        function timer() {
            // 获取时分秒
            let nowDate = new Date()
            // 时
            let hours = nowDate.getHours()
            // 分
            let minutes = nowDate.getMinutes()
            // 秒
            let second = nowDate.getSeconds()
            // 添加到页面
            times[0].innerHTML = zero(hours)
            times[2].innerHTML = zero(minutes)
            times[4].innerHTML = zero(second)
            times1[0].innerHTML = zero(hours)
            times1[2].innerHTML = zero(minutes)
            times1[4].innerHTML = zero(second)
        }
        setInterval(timer, 1000)
        //补零
        function zero(n) {
            return n > 1 ? n : "0" + n
        }
    })
</script>
</html>

效果如下图所示:

在这里插入图片描述
我们的需求是什么?
使用nodejs创建文件

1.index.css
2.index.js
我们需要把style与script中的内容分别写入到这两个文件当中,然后替换掉html当中的style与script标签,替换为外链的方式

详细介绍实现过程,介绍在代码注释当中,请看代码:

// 引入fs模块
const fs = require("fs")
// 引入path模块
const path = require("path")
// 正则匹配
// 正则匹配style标签
// 需要使用\分离
// s表示空白字符 S表示非空白字符 *表示匹配所有
const regStyle = /<style>[\s\S]*<\/style>/
// 正则匹配script标签
const regScript = /<script>[\s\S]*<\/script>/
// 读取html部分
fs.readFile(path.join(__dirname,"./index.html"),"utf8",(err,data)=>{
    if(err) {
        // 读取失败打印错误信息
        return console.log(err.message)
    }
    // 读取成功调用函数
    resolveStyle(data)
    resolveScript(data)
    resolveHtml(data)
})
// // 处理style部分的函数
function resolveStyle(value){
    // 使用exec方法去查找 查找到返回一个数组 没查找到返回null
    const r = regStyle.exec(value)
    // 返回数组选中下标0
    // 做替换操作 我们需要把style标签去掉 所以替换为""
    const newStyle = r[0].replace("<style>","").replace("</style>","")
    // 我们需要使用writeFile的方法创建一个 .css的文件 然后把处理好的r[0]的内容写入进去
    fs.writeFile(path.join(__dirname,"index.css"),newStyle,"utf8",err=>{
        if(err){
            return err.message
        }
        console.log("成功")
    })
}
function resolveScript(value){
    // 使用exec方法去查找 查找到返回一个数组 没查找到返回null
    const r = regScript.exec(value)
    // 返回数组选中下标0
    // 做替换操作 我们需要把script标签去掉 所以替换为""
    const newScript = r[0].replace("<script>","").replace("</script>","")
    // 我们需要使用writeFile的方法创建一个 .js的文件 然后把处理好的r[0]的内容写入进去
    fs.writeFile(path.join(__dirname,"index.js"),newScript,"utf8",err=>{
        if(err){
            return err.message
        }
        console.log("成功")
    })
}
// 最后我们需要操作html当中的标签内容 更改为外链的方法写入
function resolveHtml(value){
    // 处理style标签与script标签 外链进html文件中
    const newHtml = value.replace(regStyle,'<link rel="stylesheet" href="./index.css">').replace(
        regScript,'<script src="./index.js"></script>'
    )
    // 我们把我们处理好的newHtml写入到旧的html当中
    fs.writeFile(path.join(__dirname,"index.html"),newHtml,"utf8",err=>{
        if(err){
            return err.message
        }
    })
}

当我们在终端运行之后:

在这里插入图片描述

文件被创建出来了,内容也分别添加进到了文件当中
我们来看看index.html部分

在这里插入图片描述

看看效果是否还是原来的样子:
在这里插入图片描述

感谢大家的阅读,如有不对的地方,可以向我提出,感谢大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1229380.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「Verilog学习笔记」ROM的简单实现

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 要实现ROM&#xff0c;首先要声明数据的存储空间&#xff0c;例如&#xff1a;[3:0] rom [7:0]&#xff1b;变量名称rom之前的[3:0]表示每个数据具有多少位&#xff0…

EfficientPhys

研究背景 基于相机的生理测量是一种非接触式方法&#xff0c;用于通过从身体反射的光捕获心脏信号。最常见的此类信号是通过光电体积描记图 (PPG) 测量的血容量脉搏 (BVP)。由此&#xff0c;可以推导出心率、呼吸率和脉搏传导时间。神经网络模型是当前最先进的 rPPG 测量方式。…

Rapid chain

这篇文章中提到 Elastico 运行6个epoch就会退化到公式失败率高达 0.97 omnileger 在第一个epoch需要一个初始化的随机种子&#xff0c;来初始化 VRF。这需要 O ( n 2 ) O(n^2) O(n2) 的复杂度&#xff0c;并且OminLedger 需要通过轻节点驱动枷锁和解锁的过程&#xff0c;这户家…

2023年中国中端连锁酒店分类、市场规模及主要企业市占率[图]

中端连锁酒店行业是指定位于中档酒店市场、具有全国统一的品牌形象识别系统、全国统一的运营体系、会员体系和营销体系的酒店。中端酒店通常提供舒适、标准化的房间设施和服务&#xff0c;价格较为合理&#xff0c;符合广大消费者的需求。其价格略高于经济型酒店&#xff0c;但…

【数字图像处理】Gamma 变换

在数字图像处理中&#xff0c;Gamma 变换是一种重要的灰度变换方法&#xff0c;可以用于图像增强与 Gamma 校正。本文主要介绍数字图像 Gamma 变换的基本原理&#xff0c;并记录在紫光同创 PGL22G FPGA 平台的布署与实现过程。 目录 1. Gamma 变换原理 2. FPGA 布署与实现 2…

unity-模块卸载重新安装

unity-模块卸载重新安装 发现模块错误&#xff1f;发现不可以卸载重装&#xff1f;... 依据以下步骤试试&#xff1a; 1. 删除模块文件夹&#xff08;以安卓模块为例&#xff09; 2. 找见编辑器模块json 3. 找见所有安卓相关模块修改selected为false&#xff1a;"sel…

2023年中国地产SaaS分类、产业链及市场规模分析[图]

SaaS是一种基于云计算技术&#xff0c;通过订阅的方式向互联网向客户提供访问权限以获取计算资源的一项软件即服务。地产SaaS则是SaaS的具体应用&#xff0c;提供了一个线上平台&#xff0c;用于协助房地产供应商与购房者、建筑承建商、材料供应商及房地产资产管理公司之间的协…

Kotlin学习——hello kotlin 函数function 变量 类 + 泛型 + 继承

Kotlin 是一门现代但已成熟的编程语言&#xff0c;旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作&#xff0c;并提供了多种方式在多个平台间复用代码&#xff0c;以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

5G与中国的海

今年国庆假期&#xff0c;香港迎来了阔别5年的国庆维港烟花汇演 10月1日晚上9点&#xff0c;“HKT x FWD 2023 年国庆烟花汇演”在维多利亚港上空上演。在23分钟时间里&#xff0c;燃放了超过3万枚烟花。而与以往维港烟花秀不同的是&#xff0c;为了让更多民众欣赏这次表演&…

【canvas】了解canvas,并实现会议预定记录钟表盘、页面水印

初识canvas Canvas 有什么用 Canvas 允许使用直线、曲线、矩形、圆形等基本图形绘制出复杂的图形 Canvas 可以加载图像&#xff0c;并进行各种处理&#xff0c;如裁剪、缩放、旋转等操作 Canvas 可以通过 JavaScript 控制&#xff0c;所以你可以利用帧动画原理&#xff0c;…

【C++】​——多态性与模板(其一)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

2023年中国稀土精密加工分类、市场规模及发展趋势分析[图]

稀土精密加工行业是指通过精密加工技术对稀土材料进行加工、制造和加工成品的一种行业。稀土精密加工行业主要包括稀土材料的提取、分离、纯化、加工和制造等环节&#xff0c;其中加工和制造是该行业的核心环节。稀土材料是指具有特殊物理、化学和磁性等性质的一类元素&#xf…

Oracle for Windows安装和配置——Oracle for Windows net配置

2.3. Oracle for Windows net配置 2.3.1. Oracle net配置 2.3.1.1. Oracle net简介 前述章节中,我们只是安装了数据库软件,创建了数据库,测试在服务器本地连接查询数据库。但还不能通过网络远程连接访问数据库,因为我们还没配置用来远程连接访问该数据库的组件Oracle ne…

数字IC前端学习笔记:时钟切换电路

相关阅读 数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 有些时候我们需要在系统运行时切换系统时钟&#xff0c;最简单的方法就是使用一个MUX&#xff08;数据选择器&#xff09;选择输出的时钟&#xff0c;如下代码片所…

提取图像文本的 5 大 Python 库

引言 光学字符识别是一个古老但依然具有挑战性的问题&#xff0c;涉及从非结构化数据中&#xff08;包括图像和PDF文档&#xff09;检测和识别文本。它在银行、电子商务和社交媒体内容管理等领域具有广泛的应用。 但与数据科学中的每个主题一样&#xff0c;尝试学习如何解决OC…

YOLOv8改进 | EIoU、SIoU、WIoU、DIoU、FocusIoU等二十余种损失函数

一、本文介绍 这篇文章介绍了YOLOv8的重大改进&#xff0c;特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体&#xff0c;如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU&#xff0c;还融合了“Focus”思想&#xff0c;创造了一系列新的损失函数。这些组合形式的…

OpenAI 地震!首席执行官被解雇,背后的原因是?

11月17日&#xff0c;ChatGPT的制造商OpenAI表示&#xff0c;经过审查后发现联合创始人兼首席执行官 Sam Altman与董事会“沟通时并不一贯坦诚”&#xff0c;因此公司已经决定解雇他。这家人工智能&#xff08;AI&#xff09;公司在一份声明中表示&#xff1a;“董事会不再相信…

美团外卖9元每周星期一开工外卖红包优惠券怎么领取?

美团外卖9元周一开工红包活动时间是什么时候&#xff1f; 美团外卖9元周一开工红包优惠券是指每周星期一可以领取的美团外卖红包优惠券&#xff0c;在美团外卖周一开工红包领取活动时间内可领取到9元周一开工美团外卖红包优惠券&#xff1b;&#xff08;温馨提醒&#xff1a;如…

2023年中国全自动烘干机产业链、产能及发展趋势分析[图]

全自动烘干机设备是工业化生产制造过程中不可缺少的一种机械设备设备&#xff0c;它广泛应用于工业化工原料加工中药材烘干、农副产品加工等&#xff0c;因此制造了多种干燥设备&#xff0c;目前有多层网带干燥机、热泵干燥机、微波干燥机和冷冻干燥机四种自动干燥机&#xff0…

jetbrains ai 提示该地区不可用的百分百解决方案,亲测有效

问题 申请 jetbrains 的 ai assistant 白名单已经通过&#xff0c;但是在使用 ai assistant 的过程中提示 The usage of the service is not permitted in your location ,我所在的地区是中国&#xff0c;目前该插件是对中国大陆关闭的。 刚开始我怀疑是代理的问题&#xff…