node.js 学习入门(03 - path路径处理问题)

简介: node.js 学习入门(03 - path路径处理问题)

什么是 path 模块

Node.js path 模块是一个内置模块,可帮助您以独立于操作系统的方式使用文件系统路径。如果要构建支持 OSX、Linux 和 Windows 的 CLI 工具,则 Path 模块是必不可少的。

path.join 方法的使用


用于连接路径。该方法的主要用途在于,会正确使用当前系统的路径分隔符,Unix系统是"/“,Windows系统是”\"。

const path = require('path')
const fs = require('fs')
// 注意:../ 会抵消前面的一层路径
// console.log(path.join('/a', '/b/c', '../', './d', '/e')) // \a\b\d\e
// fs.readFile(__dirname + './files/1.txt', function (err, data) {
//     if (err) {
//         return console.log("读取文件失败")
//     }
//     console.log("读取文件成功")
// })
// 今后凡是涉及到路径拼接的操作,都需要使用 path.join() 方法进行处理。不要直接使用 + 进行字符串的拼接
// 使用 path.join() 方法可以直接把 . 屏蔽掉,用 + 号拼接不行会直接请求失败
fs.readFile(path.join(__dirname , './files/1.txt'), function (err, data) {
    if (err) {
        return console.log("读取文件失败")
    }
    console.log("读取文件成功")
})

path.basename 方法的使用

返回路径中的最后一部分。同 Unix 命令 bashname 类似。

const path = require('path')
// 定义文件的存放路径
const fpath = '/a/b/c/index.html'
// 获取路径的文件名
// console.log(path.basename(fpath))
// 获取路径的文件名,并去除扩展名
console.log(path.basename(fpath,'.html'))

path.extname 方法的使用

返回路径中文件的后缀名,即路径中最后一个 . 之后的部分。如果一个路径中并不包含 . 或该路径只包含一个 . 且这个 . 为路径的第一个字符,则此命令返回空字符串。

const path = require('path')
// 这是文件的存放路径
const fpath = 'a/b/c/index.html'
// 获取路径中的文件扩展名
console.log(path.extname(fpath))

path 基本案例

把一个 html 文件,更改为 htmlcssjs 三份文件

自己找一个 html 文件放在 clock 文件夹下,在 2.1 步骤处引入

// 1.1 导入 fs 模块
const fs = require('fs')
// 1.2 导入 path 模块
const path = require('path')
// 1.3 定义正则表达式,分别匹配 <style></style> 和 <script></script> 标签
// 小写 s 代表空白字符,大写 S 代表非空白字符,* 代表任意多次
const refStyle = /<style>[\s\S]*<\/style>/
const refScript = /<script>[\s\S]*<\/script>/
// 2.1 调用 fs.readFile() 方法读取文件
fs.readFile(path.join(__dirname, './files/index.html'), function (err, data) {
    // 2.2 读取 HTML 文件失败
    if (err) {
        return console.log("读取HTML文件失败!" + err.message)
    }
    // 2.3 读取文件成功后,调用对应的三个方法,分别拆解出 css,js,html 文件
    resolveCSS(data)
    resolveJS(data)
    resolveHTML(data)
})
// 3.1 定义处理 css 样式的方法
function resolveCSS(val) {
    // 3.2 使用正则提取需要的内容
    const r1 = refStyle.exec(val)
    // 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 样式失败!")
        console.log("写入样式文件成功")
    })
}
// 4.1 定义处理 js 样式的方法
function resolveJS(val) {
    // 4.2 通过正则,提取对应的 <script></script> 标签内容
    const r2 = refScript.exec(val)
    // 4.3 将提取出来的内容,做进一步处理
    const newJS = r2[0].replace('<script>', '').replace('</script>', '')
    // 4.4 调用 fs.writeFile() 方法,将提取的结果,写入到 clock 目录中 index.js的文件里面
    fs.writeFile(path.join(__dirname, './clock/index.js'), newJS, function (err) {
        if (err) return console.log("写入 CSS 样式失败!")
        console.log("写入样式文件成功")
    })
}
// 5.1 定义处理 HTML 样式的方法
function resolveHTML(val) {
    // 5.2 将字符串调用 replace 方法,把内嵌的 style 和 script 标签,替换为外联的 link 和 script 标签
    const newHTML = val.toString().replace(refStyle,'<link rel="stylesheet" href="./index.css">').replace(refScript,'<script src="./index.js"></script>')
    // 5.3 调用 fs.writeFile() 方法,将得出的结果,写入到 clock 目录中 index.html的文件里面
    fs.writeFile(path.join(__dirname, './clock/index.html'), newHTML, function (err) {
        if (err) return console.log("写入 HTML 样式失败!")
        console.log("写入样式文件成功")
    })
}

以上就是 node.js 中 path 的路径处理问题,不懂得也可以在评论区里问我,以后会持续发布一些新的功能,敬请关注。

相关文章
|
4月前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
862 2
|
2月前
|
JavaScript 前端开发
【JavaScript】——JS基础入门常见操作(大量举例)
JS引入方式,JS基础语法,JS增删查改,JS函数,JS对象
|
3月前
|
Web App开发 JavaScript 前端开发
如何学习JavaScript?
如何学习JavaScript?
64 5
|
3月前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
43 2
|
3月前
|
存储 JavaScript 前端开发
JavaScript学习第一章
本文档介绍了JavaScript的基础知识,包括其在网页中的作用、如何通过JavaScript动态设置HTML元素的CSS属性,以及JavaScript中的变量类型(`var`、`let`、`const`)和数据类型(基本数据类型与引用数据类型)。通过实例代码详细解释了JavaScript的核心概念,适合初学者入门学习。
64 1
|
4月前
|
JavaScript
js学习--制作猜数字
js学习--制作猜数字
50 4
js学习--制作猜数字
|
3月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
429 1
|
3月前
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
139 10
|
4月前
|
JavaScript
webpack学习五:webpack的配置文件webpack.config.js分离,分离成开发环境配置文件和生产环境配置文件
这篇文章介绍了如何将webpack的配置文件分离成开发环境和生产环境的配置文件,以提高打包效率。
70 1
webpack学习五:webpack的配置文件webpack.config.js分离,分离成开发环境配置文件和生产环境配置文件
|
3月前
|
数据采集 存储 JavaScript
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
本文介绍了如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。Puppeteer作为一个强大的Node.js库,能够模拟真实浏览器访问,支持JavaScript渲染,适合复杂的爬取任务。文章详细讲解了安装Puppeteer、配置代理IP、实现爬虫代码的步骤,并提供了代码示例。此外,还给出了注意事项和优化建议,帮助读者高效地抓取和分析招生数据。
117 0
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南

热门文章

最新文章