精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Node在項目中應用案例之給幾百個下拉框統一加Filterable實現可搜索

開發 前端
項目中有下拉框El-select組件,可前人在寫代碼時,部分El-select加上了Filterable屬性,部分沒有加上,導致部分下拉框可模糊匹配搜索,部分不可以。

問題描述

  • 最近接手一個老項目,vue2+elementUI+webpack+...技術棧。
  • 主要做的就是改改bug,優化一下,提升用戶的使用體驗。
  • nvm改一下node版本,npm裝一下依賴,跑起來,然后點一點,看看長什么樣子。
  • 上來筆者就發現了一個可以優化的點,就是:項目中有下拉框el-select組件,可前人在寫代碼時,部分el-select加上了filterable屬性,部分沒有加上,導致部分下拉框可模糊匹配搜索,部分不可以。
  • 正常來說,下拉框都要支持模糊匹配搜索的。
  • 問題不大,一個個加,可是手動復制粘貼filterable屬性效率太低,能不能統一批量修改,批量添加filterable屬性呢?

答案是可以的。

解決方案一 使用vscode自帶的搜索工具,統一加filterable

簡化一下,假設我有下面的目錄結構。

添加圖片注釋,不超過 140 字(可選)。

  • 如上圖,我們需要把el-select組件,沒filterable的,加上。有的不用動。
  • 我們可以直接使用vscode自帶的文件搜索功能。
  • 先把所有的filterable替換為空(filterable屬性,只有el-select組件用到了)。
  • 再匹配到所有的el-select標簽,再直接替換就完成任務了。
  • 如下圖示操作。

第一步圖示:(filterable關鍵字替換為空,只針對.vue文件操作)。

添加圖片注釋,不超過 140 字(可選)。

第二步圖示:針對.vue文件的el-select標簽匹配替換(即為新加屬性)從而完成任務。

添加圖片注釋,不超過 140 字(可選)。

解決方案二 使用node寫一個腳本(重點),統一加filterable

通過上述圖示,我們發現vscode自帶的搜索匹配功能,也就是做了兩件事。

  • 找到所有匹配的文件下的,目標字符串。
  • 然后進行替換。

那我們是不是也可以使用node自己寫對應功能呢?答案是肯定的。

在此之前,我們先來回顧復習一下之前的相關知識。

知識點回顧一 使用正則統一替換字符串中的某個字符

我們寫一個函數,把字符串中的某些字符,替換成新的字符:

let str = `
    白66依山盡,
    黃河66入海流,
    欲窮千66里目,
    更上一層66樓
`
/**
 * 一個用來在字符串中替換指定字符的函數
 * @param {string} str 原來的字符串
 * @param {string} targetStr 要替換的目標字符
 * @param {string} replaceStr 把目標字符替換成什么字符
 * @returns {string} 返回替換好的新的字符串
 */
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') // 就去讀取這個文件的內容

            /**
             * 第一步,把文件中的filterable關鍵字字符串替換成空
             * */ 
            let newFileStr = replaceAllStr(fileStr, 'filterable', '') 
            /**
             * 第二步,把文件中的el-select通過替換的方式加屬性filterable
             * */ 
            // let newFileStr = replaceAllStr(fileStr, '<el-select', '<el-select filterable ')
            fs.writeFileSync(filePath, newFileStr) // 文件更新替換
        } else if (stats.isDirectory()) { // 若是文件夾
            printAllFilesInFolder(filePath, fileSuffix); // 文件夾就遞歸繼續操作
        }
    });
}

// 用法示例:傳入文件夾路徑來打印所有文件
const folderPath = './page';
const fileSuffix = '.vue';
printAllFilesInFolder(folderPath, fileSuffix);

gif效果演示圖

  • 至此,我們的這個腳本,就有了vscode的搜索匹配功能的雛形了
  • 也解決了自己的這個需求問題《給幾百個el-select統一加filterable屬性》

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

Github倉庫

總結

  • 很多時候,當我們使用一個工具,用的很順手的時候,空閑了,不妨想一想,這個工具的底層原理是啥,我自己能搞一個類似的小工具demo嗎?
  • 當我們遇到一個問題的時候,前期的知識儲備,決定了我們解決這個問題的思路如何,或者沒思路。
  • A bad pen is better than a good memory...
責任編輯:姜華 來源: 今日頭條
相關推薦

2022-10-08 12:58:05

控制并發前端

2021-08-16 10:40:36

數據庫耦合

2020-08-03 10:52:35

Python自動化工具

2015-07-17 07:39:44

搜索下拉框產

2013-07-23 16:43:28

Android開源項目

2011-04-19 17:24:09

JavaScript二級聯動下拉框

2022-06-29 09:02:31

go腳本解釋器

2009-08-03 16:06:28

ASP.NET下拉框

2014-02-19 10:52:43

ETL項目SSIS框架

2022-06-28 08:17:10

JSON性能反射

2010-02-01 15:24:04

網絡核心交換機

2010-03-10 17:15:02

核心交換機

2024-04-30 08:12:05

CRUD方法JavaAC架構

2013-04-27 16:44:54

大數據大數據全球技術峰會

2024-12-11 09:13:00

2020-06-10 09:57:23

Kubernetes日志容器

2010-04-16 16:49:00

WPS Office

2012-02-01 10:13:04

2017-11-06 08:52:13

管理崗位騰訊
點贊
收藏

51CTO技術棧公眾號

午夜国产在线观看| 69av.com| 成人短视频软件网站大全app| 国产精品久久久久久妇女6080 | 亚洲国产精品久久| 国模无码视频一区二区三区| 99视频在线观看地址| 国产在线精品一区二区三区不卡 | 日本不卡在线观看| 国产视频在线观看免费| 性欧美videos另类喷潮| 久久综合国产精品台湾中文娱乐网| 中国免费黄色片| 91精品美女| 亚洲国产欧美在线人成| 日韩精品一区二区三区四区五区| 国产sm主人调教女m视频| 久久精品在线| 国内精品久久久久伊人av| 国产精品综合激情| 香蕉视频一区二区三区| 日韩一区二区电影| 岛国毛片在线播放| 日韩激情电影| 亚洲制服欧美中文字幕中文字幕| 日韩欧美手机在线| 色吊丝在线永久观看最新版本| 国产一区二区成人久久免费影院| 国产91在线播放九色快色| 亚洲一区 视频| 一区二区三区午夜探花| 综合国产在线视频| 摸摸摸bbb毛毛毛片| 91久久奴性调教| 成人有码在线视频| 青青视频在线免费观看| 激情偷拍久久| 成人软件在线观看| 99久久精品国产网站| 成人动漫网站在线观看| 亚洲天堂视频在线播放| 亚洲男女自偷自拍| 亚洲91精品在线| 加勒比av在线播放| 外国成人激情视频| 狂野欧美激情性xxxx欧美| 精品一区二区三区在线视频| 国产成人极品视频| 欧美啪啪小视频| 99精品视频免费观看| 欧美精品手机在线| 丝袜美腿小色网| 久久久五月天| 久久久国产视频| 91视频最新网址| 日韩久久电影| 中文字幕在线观看亚洲| 国产盗摄一区二区| 欧美特黄aaaaaaaa大片| 亚洲一区二区三区四区在线免费观看| 亚洲精品资源美女情侣酒店| 亚洲怡红院在线| 青青国产精品| 欧美喷潮久久久xxxxx| 久久99爱视频| 婷婷久久综合九色综合99蜜桃| 欧美日韩精品是欧美日韩精品| 日本特黄a级片| 亚洲一区二区三区久久久| 在线91免费看| 少妇欧美激情一区二区三区| 日韩区一区二| 亚洲国产成人一区| 全黄一级裸体片| 欧美丝袜一区| 久久久999国产| 久久午夜鲁丝片午夜精品| 在线国产日韩| 国产成人在线一区二区| 一级做a爱片性色毛片| 激情文学综合丁香| 91精品国自产在线观看 | 亚洲另类色综合网站| 成人在线观看91| 五月婷婷丁香六月| 国产亚洲欧美日韩俺去了| 亚洲欧洲精品一区| 羞羞网站在线免费观看| 亚洲r级在线视频| aaa毛片在线观看| 色噜噜成人av在线| 亚洲高清久久网| 少妇精品无码一区二区免费视频| 香蕉国产精品| 97精品国产91久久久久久| 日批视频免费观看| 国产成人精品影院| 日本一区二区精品| 乱插在线www| 欧美自拍偷拍一区| 中文字幕18页| 成人3d动漫在线观看| 欧美激情精品久久久| 无码人妻一区二区三区线| 国产精品自拍av| 日本一区免费| 丰满的护士2在线观看高清| 欧美综合亚洲图片综合区| 国产精品成人免费一区久久羞羞| 成人羞羞网站入口| 国内精品视频久久| 国产精品久久久久精| 91蜜桃免费观看视频| 色爽爽爽爽爽爽爽爽| 日韩在线观看不卡| 亚洲国产成人精品久久| 国产极品国产极品| 日韩电影在线观看电影| 精品久久久久久亚洲| www视频在线看| 欧美优质美女网站| 37p粉嫩大胆色噜噜噜| 国产在线日韩| 91亚洲精品一区二区| 成黄免费在线| 欧美日韩在线观看视频| 中文字幕人妻熟女在线| 天天天综合网| 国产欧美日韩91| 国产一区二区影视| 欧美色播在线播放| 国产大学生视频| 欧美日本中文| 3d动漫精品啪啪一区二区三区免费| 9色在线观看| 欧美三级电影精品| 免费看裸体网站| 久久亚洲一区| 欧美另类视频在线| 中文在线资源| 亚洲欧美www| 日韩中文字幕在线观看视频| 97久久久精品综合88久久| 久久99久久久久久| 成人黄色av网址| 久久天天躁夜夜躁狠狠躁2022| 国产又粗又长又大视频| 亚洲天堂久久久久久久| 亚洲综合av在线播放| 日韩欧美精品| 成人福利在线观看| 2020国产在线视频| 欧美mv日韩mv国产网站| 久久丫精品久久丫| 成人av动漫在线| 精品无码一区二区三区在线| 日本韩国欧美超级黄在线观看| 2019亚洲男人天堂| 欧美孕妇孕交| 欧美伊人久久久久久午夜久久久久| 亚洲一级黄色录像| 久久99国产精品尤物| 欧美 国产 精品| 6080成人| 日本午夜在线亚洲.国产| jizz视频在线观看| 7777精品伊人久久久大香线蕉的| 丁香花五月激情| 成人在线综合网| 黄色影院一级片| 加勒比久久综合| 成人国产在线视频| 日本片在线看| 亚洲男人的天堂网站| 日韩中文字幕高清| 中文字幕综合网| 精品无码人妻少妇久久久久久| 国产日韩欧美一区| 亚洲福利av在线| 免费观看亚洲视频大全| 97视频在线观看免费高清完整版在线观看 | 91最新国产视频| 久草在线新免费首页资源站| 亚洲精品视频免费在线观看| 91福利在线观看视频| 亚洲无人区一区| 日韩免费成人av| 国产成人精品一区二| 18禁免费无码无遮挡不卡网站| 日韩成人激情| 国产日韩精品推荐| 成人自拍av| 久久久久久久久91| 福利在线午夜| 精品国产一区二区三区久久影院| 国产性生活视频| 亚洲影视资源网| 中国特黄一级片| 99国产精品久久久久久久久久 | 在线一区二区日韩| 黄色aaa毛片| 欧美日韩精品欧美日韩精品一综合| 国产精品99无码一区二区| 亚洲国产成人在线| 人妻av一区二区| 久久电影网电视剧免费观看| 久久久久久久中文| 女生裸体视频一区二区三区| 日韩久久久久久久| 美女视频免费精品| 亚洲一区二区三区毛片| 日韩欧美精品电影| 国内精品美女av在线播放| 国产区在线观看| 在线日韩中文字幕| 欧美偷拍视频| 精品欧美乱码久久久久久1区2区| 91亚洲国产成人精品一区| 欧美性色视频在线| 国产在线免费视频| 亚洲黄色免费网站| 亚洲美女91| 91久久在线视频| 免费成人直播| 久久人人爽人人| av毛片在线免费看| 日韩在线中文视频| 番号在线播放| 亚洲男人天堂2024| 香蕉视频成人在线| 精品国产乱码久久久久久老虎| 国产乱色精品成人免费视频 | 亚洲免费在线观看av| 国产精品传媒视频| 中文字幕被公侵犯的漂亮人妻| 久久婷婷人人澡人人喊人人爽| 日本久久久久| 国产成人精品久久亚洲高清不卡| xxx在线免费观看| 美女福利视频一区| 黄色网页在线免费观看| www.日韩系列| 深夜福利在线看| 日韩成人av网| 婷婷五月综合久久中文字幕| 欧美精品一区二区三区久久久| 精品国自产在线观看| 6080午夜不卡| 99国产精品欲| 欧美一区二区精品久久911| 国产精品久久欧美久久一区| 欧美久久久久久久久久| 亚洲资源在线播放| 欧美日本高清视频在线观看| 97久久人国产精品婷婷| 777色狠狠一区二区三区| 一区二区日韩在线观看| 欧美高清视频www夜色资源网| 国产精品呻吟久久| 日韩午夜激情视频| 日本黄视频在线观看| 日韩成人高清在线| 久久99久久| 中文字幕精品www乱入免费视频| 亚乱亚乱亚洲乱妇| 另类视频在线观看| 7777kkk亚洲综合欧美网站| 456国产精品| 偷拍视频一区二区三区| 国产主播在线一区| 97青娱国产盛宴精品视频| 国模一区二区三区私拍视频| 国产欧美日韩精品高清二区综合区| 亚洲精品成人久久久998| 久久激情电影| 日韩成人手机在线| 久久激情婷婷| 91热视频在线观看| 成+人+亚洲+综合天堂| b站大片免费直播| ㊣最新国产の精品bt伙计久久| 久久久久免费看| 日本韩国欧美三级| 国产精品一二三四五区| 亚洲国产成人在线播放| 成a人v在线播放| 久久久久久久爱| 澳门av一区二区三区| 91精品综合久久| 亚洲自拍电影| 4444在线观看| 久久精品日产第一区二区| 51自拍视频在线观看| 91在线观看一区二区| 99成人在线观看| 精品福利在线视频| 91精品国产色综合久久不8| 亚洲精品一区二区三区99| 中文字幕日本在线观看| 国外成人在线播放| 亚洲一区二区av| 精品一区日韩成人| 自由日本语亚洲人高潮| 黄色一级大片在线观看| 高清国产一区二区三区| 自拍偷拍你懂的| 狠狠躁18三区二区一区| 国产福利资源在线| 在线看日韩欧美| 国产精欧美一区二区三区蓝颜男同| 97久久人人超碰caoprom欧美| 精品日韩一区| 精品人妻一区二区三区四区在线 | 一区二区三区在线| 五月婷婷狠狠操| 97aⅴ精品视频一二三区| 国产高潮国产高潮久久久91| 欧美日韩中文字幕一区二区| 五月天丁香视频| 欧美日韩ab片| 四虎国产精品免费久久| 日本一区二区三区视频在线播放 | 欧美一级大片在线观看| 亚洲性视频在线| 手机成人av在线| 另类综合日韩欧美亚洲| av网在线播放| 一本一本大道香蕉久在线精品| 色哟哟中文字幕| 欧美黑人性视频| 欧美激情三级| 男人天堂成人网| 国产又黄又大久久| 天海翼在线视频| 欧美日韩一级二级三级| av一区在线观看| 国产精品中文久久久久久久| 精品国产91久久久久久浪潮蜜月| 青青青在线播放| 久久久亚洲精品一区二区三区| 国产精品视频久久久久久久| 日韩精品久久久久久福利| 97蜜桃久久| 久久99精品久久久久久水蜜桃| 一本一道久久综合狠狠老精东影业| 国产激情视频网站| 精品久久久久久亚洲国产300| 日本高清视频免费观看| 国模精品一区二区三区色天香| 高清一区二区三区| 激情五月宗合网| 91亚洲午夜精品久久久久久| 亚洲GV成人无码久久精品| 亚洲天堂影视av| 日韩色淫视频| 在线视频福利一区| 国产伦精一区二区三区| 久久久一区二区三区四区| 亚洲第一视频网站| 日韩精品av| 亚洲国产综合自拍| 激情综合一区二区三区| 欧美日韩三级在线观看| 亚洲国产精久久久久久| 欧美magnet| 伊人久久99| 粉嫩一区二区三区在线看| 国产精品免费av一区二区| 亚洲免费成人av电影| 99久久伊人| 国产女主播av| 91蝌蚪porny九色| 亚洲天堂免费av| 欧美黄色小视频| 久久av免费看| 久久出品必属精品| 五月天婷婷综合| 高h视频在线| 俄罗斯精品一区二区三区| 久久精品九九| 老湿机69福利| 精品一区二区三区电影| 欧美aaaaaaaa| 日韩日韩日韩日韩日韩| 国产欧美一区二区精品秋霞影院 | 国产精品一区在线免费观看| 成人av午夜电影| 国产精品高清无码| 欧美黑人xxxⅹ高潮交| 啪啪亚洲精品| 亚洲精品乱码久久久久久蜜桃欧美| 日本韩国一区二区三区视频| av免费在线免费观看| 美国av一区二区三区| 国产精品资源在线| 国产成人avxxxxx在线看| 亚洲欧洲美洲一区二区三区| 爱爱免费小视频| 欧美一区二区免费| 3d性欧美动漫精品xxxx软件|