文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Node在项目中应用案例之给几百个下拉框统一加Filterable实现可搜索

2024-11-30 03:34

关注

问题描述

答案是可以的。

解决方案一 使用vscode自带的搜索工具,统一加filterable

简化一下,假设我有下面的目录结构。

添加图片注释,不超过 140 字(可选)。

第一步图示:(filterable关键字替换为空,只针对.vue文件操作)。

添加图片注释,不超过 140 字(可选)。

第二步图示:针对.vue文件的el-select标签匹配替换(即为新加属性)从而完成任务。

添加图片注释,不超过 140 字(可选)。

解决方案二 使用node写一个脚本(重点),统一加filterable

通过上述图示,我们发现vscode自带的搜索匹配功能,也就是做了两件事。

那我们是不是也可以使用node自己写对应功能呢?答案是肯定的。

在此之前,我们先来回顾复习一下之前的相关知识。

知识点回顾一 使用正则统一替换字符串中的某个字符

我们写一个函数,把字符串中的某些字符,替换成新的字符:

let str = `
    白66依山尽,
    黄河66入海流,
    欲穷千66里目,
    更上一层66楼
`

function replaceAllStr(str, targetStr, replaceStr) {
    // 把原来的字符串 通过正则 匹配到所有的目标字符,统一替换成要替换的字符
    return str.replace(new RegExp(targetStr, 'g'), replaceStr);
}

let newStr = replaceAllStr(str, '66', '88')
console.log('原来的字符串--->', str);
console.log('替换后的新字符串--->', newStr);

打印的效果图如下:

添加图片注释,不超过 140 字(可选)

知识点回顾二 本文用到的fs模块的api

// 读取对应路径下的目录,返回数组,数组中的每一项是文件夹名或文件名
fs.readdirSync(path) 

// 读取对应路径,获取标准信息,并看看此路径是文件还是文件夹
const stats = fs.statSync(path) 
stats.isFile()
stats.isDirectory()

// 同步读取文件内容,读取到的是文件中的所有字符串
fs.readFileSync(filePath, 'utf-8') 

// 将数据内容data同步写入到file文件中去
fs.writeFileSync(file, data)

知识点回顾三 本文用到的path模块的api

// 获取文件的后缀名
path.extname(file)

// 把文件夹和文件拼接成标准的路径
path.join(folderPath, file);

欲知更多详情如何,请访问nodejs中文网:https://nodejs.cn/api/

知识点回顾四 递归读取文件夹中的文件(可指定文件后缀)

根据上面的两个知识点回顾,写一个递归读取文件夹中的文件函数,代码如下:

const fs = require('fs');
const path = require('path');

function printAllFilesInFolder(folderPath, fileSuffix = '') {
    const files = fs.readdirSync(folderPath); // 读取对应目录【数组,文件夹或文件】
    files.forEach((file) => { // 遍历对应目录内容
        const filePath = path.join(folderPath, file); // 拼成标准路径
        const stats = fs.statSync(filePath); // fs模块读取此路径得到文件信息状态
        if (stats.isFile() && path.extname(file) === fileSuffix) { // 若是文件且后缀名对得上
            let fileStr = fs.readFileSync('./' + filePath, 'utf-8') // 就去读取这个文件的内容
            console.log('--读取到文件内容为:-->', fileStr); // 最后再打印出来
        } else if (stats.isDirectory()) { // 若是文件夹
            printAllFilesInFolder(filePath, fileSuffix); // 文件夹就递归继续操作
        }
    });
}

// 用法示例:传入文件夹路径来打印所有文件
const folderPath = './page';
const fileSuffix = '.vue';
printAllFilesInFolder(folderPath, fileSuffix);

最终脚本代码

const fs = require('fs');
const path = require('path');

function replaceAllStr(str, targetStr, replaceStr) {
    // 把原来的字符串 通过正则 匹配到所有的目标字符,统一替换成要替换的字符
    return str.replace(new RegExp(targetStr, 'g'), replaceStr);
}

function printAllFilesInFolder(folderPath, fileSuffix = '') {
    const files = fs.readdirSync(folderPath); // 读取对应目录【数组,文件夹或文件】
    files.forEach((file) => { // 遍历对应目录内容
        const filePath = path.join(folderPath, file); // 拼成标准路径
        const stats = fs.statSync(filePath); // fs模块读取此路径得到文件信息状态
        if (stats.isFile() && path.extname(file) === fileSuffix) { // 若是文件且后缀名对得上
            let fileStr = fs.readFileSync('./' + filePath, 'utf-8') // 就去读取这个文件的内容

             
            let newFileStr = replaceAllStr(fileStr, 'filterable', '') 
             
            // let newFileStr = replaceAllStr(fileStr, '

gif效果演示图

为了方便大家使用,笔者把代码推到了github上去了https://github.com/shuirongshuifu/efficiencyTool3。

Github仓库

总结

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯