精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩中文字幕| 拍真实国产伦偷精品| 一本久道综合久久精品| 日韩精品视频在线播放| 国产无套内射久久久国产| youjizz在线播放| 国产精品资源站在线| 午夜美女久久久久爽久久| 亚欧洲乱码视频| 国产精品免费精品自在线观看| 一区二区三区日本| 欧美成人一区二区在线| 一级黄色片免费| 在线播放日韩| 最新国产精品亚洲| 国产av一区二区三区传媒| 日韩a**中文字幕| 亚洲最新视频在线观看| 欧美污视频久久久| 精品国精品国产自在久不卡| 亚洲少妇自拍| 久久伊人精品视频| 91久久免费视频| 日本一区二区三区播放| 色老汉av一区二区三区| 日韩欧美一级在线| √天堂资源地址在线官网| 成人午夜视频在线观看| 国产精品一区二区久久国产| 日韩三级小视频| 亚洲九九视频| 在线亚洲欧美视频| 国产一级伦理片| www 久久久| 欧美性色aⅴ视频一区日韩精品| 极品粉嫩国产18尤物| 欧美高清视频| 国产日韩欧美精品在线| 精品乱子伦一区二区三区| 国产精品久久久久久免费| 蜜桃伊人久久| 国产69久久精品成人| 免费又黄又爽又色的视频| 亚洲国产精品日韩专区av有中文| 中文字幕国产精品久久| 青青草福利视频| 久久精品色综合| 精品电影一区二区| 中文字幕制服丝袜| 136福利精品导航| 欧美一区欧美二区| 欧美在线a视频| 99tv成人影院| 91麻豆精品91久久久久同性| 女同激情久久av久久| www.一区| 欧美日韩精品免费观看视频| 在线观看免费视频高清游戏推荐| 国产精品久久久久77777丨| 欧美日韩日本国产| 无码aⅴ精品一区二区三区浪潮| 91九色在线看| 黄色精品在线看| 男人日女人下面视频| 筱崎爱全乳无删减在线观看 | 亚洲一二区在线| 国产主播福利在线| 国产精品人成在线观看免费| 一区不卡字幕| 成a人片在线观看| 一区二区理论电影在线观看| 久草视频这里只有精品| av影院在线免费观看| 婷婷成人综合网| 亚洲乱码中文字幕久久孕妇黑人| 中文日产幕无线码一区二区| 在线一区二区三区| 91亚洲免费视频| 国产情侣一区在线| 亚洲精品一区二区三区精华液| av黄色一级片| 久久av综合| 久久精品亚洲热| 久久av高潮av无码av喷吹| 亚洲经典在线| 欧亚精品中文字幕| 亚洲在线视频播放| 国产成人一区二区精品非洲| 精品无人区一区二区三区竹菊| 日本免费一区二区三区最新| 欧美国产激情二区三区| 女女同性女同一区二区三区按摩| 日日夜夜天天综合入口| 欧美日韩国产综合新一区 | 国产真实精品久久二三区| 成人在线看片| 免费在线超碰| 亚洲黄色性网站| www.com毛片| 久久精品资源| 亚洲成人av片在线观看| 亚洲自拍偷拍图| 欧美涩涩视频| 国产精品第七十二页| 精品国产区一区二| 久久九九久精品国产免费直播| a级黄色片网站| 天堂在线中文网官网| 这里只有精品电影| 久久精品成人av| 国产精品xvideos88| 国产精品99一区| 国产自产一区二区| 国产精品天美传媒| 国产97在线 | 亚洲| 超碰国产精品一区二页| 日韩黄色av网站| 曰本女人与公拘交酡| 久久婷婷丁香| 国产精选一区二区| a级在线观看| 在线观看日产精品| 国产一级二级视频| 亚洲91视频| 国产精品av电影| 姝姝窝人体www聚色窝| 亚洲另类在线一区| 鲁一鲁一鲁一鲁一av| 色狼人综合干| 91国产一区在线| 亚洲产国偷v产偷v自拍涩爱| 国产精品高潮呻吟久久| 日韩亚洲在线视频| 青青草原在线亚洲| 久久久亚洲国产| www.com欧美| 亚洲免费在线视频一区 二区| 日本激情视频在线| 婷婷成人在线| 777777777亚洲妇女| 亚洲美女综合网| 亚洲卡通动漫在线| 日韩欧美中文视频| 亚洲精品va| 91久久久久久久久| 麻豆最新免费在线视频| 精品视频全国免费看| 摸摸摸bbb毛毛毛片| 久久久天天操| 日本一区视频在线播放| 成人免费短视频| 亚洲精品视频中文字幕| av中文在线播放| 国产91精品一区二区麻豆亚洲| 欧美 亚洲 视频| 日韩欧美中文字幕在线视频 | 久久精品日产第一区二区三区 | 天天干天天插天天操| 婷婷国产在线综合| 人妻无码一区二区三区| 亚洲作爱视频| 日本亚洲导航| 国产69精品久久| 久久天堂电影网| www.日本在线观看| 亚洲成人一二三| 日韩精品卡通动漫网站| 日韩影院精彩在线| 中文字幕中文字幕在线中心一区| 精品一区二区三区免费看| 久久久精品久久久| 成人h动漫精品一区二区无码| 一区二区三区在线播放| 国产一线在线观看| 鲁大师影院一区二区三区| 日韩在线导航| 国产精品欧美一区二区三区不卡| 九九热精品视频国产| 黑人乱码一区二区三区av| 日韩欧美国产高清91| 俄罗斯毛片基地| 国产成人免费在线| 日韩欧美国产免费| 日本久久综合| 波多野结衣精品久久| 亚洲私拍视频| 精品国内产的精品视频在线观看| 精品人妻av一区二区三区| 福利视频第一区| 国产三级黄色片| 国产成人在线网站| 手机看片福利盒子久久| 亚洲乱码免费伦视频| 国产一区二区免费在线观看| 外国电影一区二区| 欧美激情在线狂野欧美精品| 国产二区在线播放| 日韩欧美电影在线| 色老头在线视频| 一区二区三区四区乱视频| www.久久av| 国产精品一区二区在线播放| 情侣黄网站免费看| 中文字幕一区二区精品区| 九九九九精品九九九九| 四虎精品永久免费| 欧日韩在线观看| 青春草视频在线观看| 一本大道久久加勒比香蕉| 黄色av网站免费在线观看| 欧美日韩精品综合在线| 国产成人自拍视频在线| 亚洲免费看黄网站| 一级片久久久久| 99久久精品费精品国产一区二区| 中文字幕精品一区二区三区在线| 亚洲在线国产日韩欧美| 久久久久亚洲av无码专区喷水| 国产99久久精品一区二区300| 91久久精品国产91久久性色tv| 亚洲成人av观看| 欧美夜福利tv在线| 日本天码aⅴ片在线电影网站| 自拍偷拍亚洲区| 黄色片在线播放| 亚洲国产女人aaa毛片在线| 国产三级按摩推拿按摩| 欧美性受xxxx| 香蕉影院在线观看| 婷婷开心激情综合| 免费在线一区二区三区| 亚洲精选一二三| 小向美奈子av| 国产精品理论片在线观看| 白白色免费视频| 91在线观看视频| 中文字幕 亚洲一区| 不卡一区二区中文字幕| 精品国产aⅴ一区二区三区东京热 久久久久99人妻一区二区三区 | 成人天堂yy6080亚洲高清 | 九七影院97影院理论片久久| 欧美综合激情网| 久草在线资源站手机版| 久久理论片午夜琪琪电影网| 青草av在线| 欧美极品欧美精品欧美视频| 啦啦啦中文在线观看日本| 欧美国产精品人人做人人爱| 成人av黄色| 久久婷婷国产麻豆91天堂| 麻豆tv入口在线看| 久久亚洲精品中文字幕冲田杏梨| 日本在线观看免费| 久久夜色精品国产| 91国内在线| 久久久久久一区二区三区| 99爱在线观看| 青草青草久热精品视频在线观看| 欧美久久天堂| 日本亚洲欧洲色α| 伊人久久高清| 国产主播在线一区| 精品国产一区二区三区性色av| 69174成人网| 国产精品久久久网站| 国内不卡一区二区三区| 夜夜躁狠狠躁日日躁2021日韩| 欧美连裤袜在线视频| 精品久久中文| 亚洲精品一区二区三区樱花| 日韩久久精品| 亚洲爆乳无码精品aaa片蜜桃| 亚洲欧洲日本mm| 色婷婷综合久久久久中文字幕| 蜜桃91丨九色丨蝌蚪91桃色| 黄色一级片免费播放| 成人精品视频.| 亚洲av无码一区二区二三区| 亚洲国产高清不卡| www.色小姐com| 精品国产精品自拍| 18国产免费视频| 欧美xxxx老人做受| 青青草在线播放| 久久婷婷国产麻豆91天堂| 国产传媒av在线| 国产精品视频在线播放| 日韩欧美激情电影| 欧洲视频一区二区三区| 欧美在线看片| 动漫av网站免费观看| 免费人成在线不卡| 欧美日韩人妻精品一区在线| 国产亚洲精品bt天堂精选| 午夜69成人做爰视频| 欧美视频免费在线| 国产男男gay体育生网站| 亚洲电影av在线| 日本不卡不卡| 欧美亚洲成人xxx| 国产亚洲高清一区| 日韩中文字幕一区| 狠狠色综合网| 国产精品自在自线| 久久久精品欧美丰满| 欧美日韩大片在线观看| 欧美探花视频资源| 亚洲人妻一区二区三区| 超碰97人人做人人爱少妇| 黑人巨大亚洲一区二区久| 成人h在线播放| 四季av一区二区三区免费观看| 国产精品网站免费| 久色婷婷小香蕉久久| 欧美一区二区三区成人精品| 亚洲欧美在线另类| 欧美超碰在线观看| 亚洲国产精品人久久电影| 黄a在线观看| 国产精品99久久久久久久久久久久| 国产极品模特精品一二| 在线观看成人免费| 久久草av在线| 2019男人天堂| 精品久久久久久亚洲精品| 国产富婆一级全黄大片| 色噜噜狠狠狠综合曰曰曰| 国产精品av一区二区三区 | 亚洲品质自拍| 日韩精品一区二区免费| 国产精品一级在线| 欧美一级特黄高清视频| 日本韩国精品一区二区在线观看| 天天射,天天干| 久久久久久com| 成人台湾亚洲精品一区二区| 中国黄色录像片| 国产综合色产在线精品| 99久久久无码国产精品不卡| 欧美在线免费观看视频| 久青青在线观看视频国产| 欧美亚洲国产日韩2020| 久久99精品国产自在现线| 成人午夜精品久久久久久久蜜臀| 国产91精品久久久久久久网曝门| 一区二区国产精品精华液| 欧美日本国产一区| 国产秀色在线www免费观看| 成人av在线亚洲| 婷婷激情图片久久| 日本一本在线视频| 亚洲综合图片区| 欧美一区二区公司| 2019中文字幕免费视频| 少妇精品导航| 中文久久久久久| 中文天堂在线一区| 97超碰资源站| 蜜臀久久99精品久久久无需会员| 精品一区二区三区亚洲| 国产av熟女一区二区三区| 成人三级伦理片| 国产高潮久久久| 亚洲人成绝费网站色www| 日韩毛片在线| 中文字幕一区二区三区有限公司| 国产一区二区伦理片| 清纯粉嫩极品夜夜嗨av| 亚洲第一精品久久忘忧草社区| а√天堂中文在线资源8| 久久久免费看| 蜜臀久久99精品久久久久宅男| sm捆绑调教视频| 日韩欧美中文字幕一区| 蜜桃麻豆av在线| 亚洲精品一区二区三| 国产精品77777| 四虎精品永久在线| 日韩一区二区av| 精品视频自拍| 亚洲精品一二三四五区| 亚洲人xxxx| 午夜视频www| 国产精品天天狠天天看| 国产精品av久久久久久麻豆网| 国产偷人妻精品一区| 欧美伊人久久久久久午夜久久久久| 美女隐私在线观看| 久久99精品久久久久久青青日本 | 美女日批在线观看| 欧美日韩亚洲高清| 午夜视频在线观看网站| 国产福利久久| 久久精品国产免费| 精品美女久久久久| x99av成人免费| 日韩精选在线| 一区二区三区中文在线观看| 中文字幕免费在线观看视频| 日韩中文在线中文网在线观看|