Node.js黑马时钟案例

先上没有使用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 () {// 获取boxlet box = document.querySelector(".box")// 获取bosslet boss = document.querySelector(".boss")// 克隆boxlet 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 > 9 ? 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方法去查找 查找到返回一个数组 没查找到返回nullconst 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方法去查找 查找到返回一个数组 没查找到返回nullconst 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.mzph.cn/news/218086.shtml

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

相关文章

Zabbix+Grafana

背景 对指标采集 将采集的信息存储 可视化 报警 因为节点上本身就是zabbix&#xff0c;但对应的server在数据中心&#xff0c;不知道一个agent可否服务于多个server端&#xff0c;而且不确定数据中心是否会提供用户。所以还是放弃zabbix 架构

如何使用CFImagehost结合内网穿透搭建简洁易用的私人图床并远程访问

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

OBS如何安装NDI 插件

能检索到这个文章的人&#xff0c;想必是知道什么是OBS和NDI&#xff0c;也知道他们的用途的。所以&#xff0c;不作赘述。4 安装NDI插件 1 直接访问https://github.com/obs-ndi/obs-ndi&#xff0c;打不开的同志你们自己想办法。 2 有两个东西要下载&#xff0c;如下图所示&a…

Python中栈的概念和使用

目录 一、引言 二、栈的概念 三、栈的使用 1、创建栈 2、入栈操作 3、出栈操作 4、查看栈顶元素 5、判断栈是否为空 四、应用场景 1、函数调用 2、表达式求值 3、深度优先搜索 4、括号匹配 五、总结 一、引言 栈是一种重要的数据结构&#xff0c;它遵循后进先出…

Axure元件基本介绍进阶

Axure元件基本介绍进阶 1.Axure元件基本介绍1.在 Axure 中&#xff0c;元件是构建原型的基本构成单元&#xff0c;能够帮助设计师快速创建、重复使用和管理设计元素。以下是 Axure 中元件的基本介绍&#xff1a;1.基本元件&#xff1a; 2.基本元件的使用一.【举例说明】积木&am…

Qt提升绘制效率,绘制加速。

在我们绘制一些复杂逻辑且数据量巨大的图形时&#xff0c;经常会出现流畅性问题&#xff0c;本文就是来进行讲解如何提升绘制效率的。 实现思路&#xff1a; 场景1&#xff1a;我们绘制多个静态图形和绘制一张图片哪个更快。很明显绘制多个图形的时候要慢很多。所以我们将多个图…

【二分查找】【区间合并】LeetCode2589:完成所有任务的最少时间

作者推荐 【动态规划】【广度优先】LeetCode2258:逃离火灾 本文涉及的基础知识点 二分查找算法合集 有序向量的二分查找&#xff0c;向量只会在尾部增加删除。 题目 你有一台电脑&#xff0c;它可以 同时 运行无数个任务。给你一个二维整数数组 tasks &#xff0c;其中 ta…

圣诞节酷炫特效合集【含十几个HTML+CSS前端特效+34个桌面酷炫圣诞程序】

写在前面 ❤️源码获取:订阅后见文末 ❤️内容介绍:包含HTML+CSS等十几个圣诞特效;以及三十四个桌面酷炫圣诞树合集 ❤️订阅后所得如下: ❤️HTML圣诞+桌面圣诞程序效果如下: 下方展示代码仅举例其中几个 所有效果源码及文件订阅后找博主获取即可 🎄css3圣诞雪人动…

基于python的大数据分析与应用环境的搭建

一、主要目的&#xff1a; 初步熟悉Python数据分析工具&#xff0c;通过查阅相关说明文档掌握Numpy、Scipy和Pandas包的基本使用方法。对于不同形式的源数据文件&#xff0c;能够基于python开发环境正确的完成数据导入。 二、主要内容&#xff1a; 1、Python开发环境安装以及…

阿里云国际跨境直播解决方案,视频AI创新营销模式丰富直播场景

据第三方咨询公司iiMedia Research预测&#xff0c;2017-2020年&#xff0c;视频直播行业一直处于高速发展阶段。2020年&#xff0c;视频直播行业市场收入超1万亿元&#xff0c;累计覆盖用户5.26亿。 视频直播的应用范围已从视频娱乐、电子商务等泛互联网行业扩展到在线教育、…

分布式数据库 GaiaDB-X 金融应用实践

1 银行新一代核心系统建设背景及架构 在银行的 IT 建设历程中&#xff0c;尤其是中大行&#xff0c;大多都基于大型机和小型机来构建核心系统。随着银行业务的快速发展&#xff0c;这样的系统对业务的支持越来越举步维艰&#xff0c;主要体现在以下四个方面&#xff1a; 首先…

[C++] 继承

文章目录 1、继承的概念及定义1.1 继承的概念1.2 继承的定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 2、基类和派生类对象赋值转换3、继承中的作用域4、派生类的默认成员函数5、继承与友元6、继承与静态成员7、菱形继承&#xff0c;菱形虚拟…

centOS 64位安装node_exporter

下载node_exporter 我是在这里https://prometheus.io/download/#node_exporter下载到自己电脑&#xff0c;然后使用rz命令传到linux上的。 关于rz命令的使用可看我的这个文章linux上传下载文件lrzsz 解压 tar -xzf node_exporter-1.7.0.linux-amd64.tar.gz将执行文件移动到b…

数据中心到底是如何工作的?

数字时代的数据中心&#xff0c;就如同网络世界的心脏&#xff0c;它的鼓动关系到整个网络生态的运转。但这个复杂而庞大的数据枢纽背后隐藏着怎样的精密机制&#xff0c;是许多人颇感好奇的谜。 数字时代的数据中心&#xff0c;就如同网络世界的心脏&#xff0c;它的鼓动关系…

Python爬虫实战 | 爬取拼多多商品的详情价格SKU数据

本案例将为大家演示如何爬取拼多多商品的详情数据。目的是爬取大量的商品以及商品的评论&#xff0c;所以在程序设计上要考虑到该爬虫的高并发以及持久化存储。爬虫工具选用了Scrapy框架&#xff0c;以满足爬虫的高并发请求任务&#xff1b;持久化存储用了MongoDB&#xff0c;对…

Epicypher—CUTANA™ ChIC/CUTRUN Kit

核酸酶靶向切割和释放 (CUT&RUN)技术是由Steven henikoff博士团队开发的一种染色质图谱分析方法&#xff0c;基于Ulrich Laemmli博士的染色质免疫切割技术 (ChIC)&#xff0c;融合蛋白A与微球菌核酸酶 (pA-MNase)&#xff0c;选择性原位切割与抗体结合的染色质。在CUT&…

哪些因素影响转本复习效率?

一、精简资料 很多同学会搜集大量资料进行复习&#xff0c;在一轮轮复习之后你会很容易发现自己重复复习了大量内容和试题。 还有些同学将自己有限的精力和时间投入庞大的题海中&#xff0c;花费了大量的时间&#xff0c;但得到的提升不多。 同学们在脑海里一定要有清晰的认…

linux串口数据丢失--中断绑定CPU优化

问题现象 机器在户外测试时, 出现 轮速记 丢失的现象 小概率出现 50Hz丢失1~2帧极低概率出现 0.1~0.3秒内没有底盘数据 此问题导致slam定位漂, 需要优化处理. 验证与测试 问题1: 底盘串口 一个数据帧(head–data–crc) 被分片2~3报文 解决方法: 检测到head之后, 解析data…

MYSQL练题笔记-子查询-部门工资前三高的所有员工

这个系列的最后一个&#xff0c;也是所有的50题的第一个困难题&#xff0c;看着就有点吓人啧啧啧。 一、题目相关内容 1&#xff09;相关的表和题目 2&#xff09;帮助理解题目的示例&#xff0c;提供返回结果的格式 二、自己初步的理解 将每个部门分组&#xff0c;然后用ra…

搬运机器人行业分析:中国市场销量已达到6.3万台左右

近年来&#xff0c;随着我国人口红利的逐渐消失&#xff0c;企业用工成本不断上涨&#xff0c;各种工业机器人获得了广泛的应用。焊接、装配、切割、分拣、搬运等机器人的出现&#xff0c;不仅通过“机器换人”解放了企业和行业的生产力&#xff0c;更推动了产业发展由劳动密集…