国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

nodejs遍歷文件夾下并操作HTML/CSS/JS/PNG/JPG的方法

2024-05-06 15:28:19
字體:
來源:轉載
供稿:網友

需求描述,由于工作的需要,需要將原本用于1280720的網頁改為19201080的網頁(電視端頁面)。需求可以拆分為兩部分,代碼部分的修改以及圖片的修改。在代碼部分,需要將所有位置以及大小相關的值乘以1.5,圖片的尺寸也要放大1.5倍。

首先使用nodejs遍歷當前的文件夾:

// 遍歷所有的文件var fs = require("fs")var path = require("path")var relativePath = '//test'// 拿到需要遍歷的路徑var root = path.join(__dirname)+relativePathreadDirSync(root)// 使用異步獲取路徑// 參數是遍歷文件的根路徑function readDirSync(path){  var pa = fs.readdirSync(path);  // 循環遍歷當前的文件以及文件夾  pa.forEach(function(ele,index){    var info = fs.statSync(path+"http://"+ele)      if(info.isDirectory()){      // console.log("dir: "+ele)      readDirSync(path+"http://"+ele);    }else{      var filePath = path +'//'+ ele;      // 找到 .css .html .js 文件      let fileNameReg = //.css|/.js|/.html|/.htm/g;      let shouldFormat = fileNameReg.test(filePath);      if (shouldFormat) {        console.log('find file:',filePath);        // 這里就拿到了符合條件的文件路徑,后面就可以根據這個路徑來執行相關的操作      }    }    })}

如果是HTMLCSSJS文件使用nodejs文件相關api來操作文件,首先是讀取到文件,然后是寫入文件。代碼:

var formatObj = new ChangePosFor4K();// 創建對象,構造函數在下文尾部function readFile(params) {  // 讀取文件示例  fs.readFile(params, function (err, data) {    if (err) {      console.log('happen an error when read file , error is ' + err)    }    else {      var codeTxt = data.toString();      // 使用對象來修改文件內容,執行位置以及大小相關值的擴大操作      var formatReturn = formatObj.formatNumber(codeTxt);      codeTxt = formatReturn.code;      // 給不同的文件添加不同的注釋      let jsFileReg = /.js$/i;      let htmlFileReg = /.html$|.htm$/i;      let cssFileReg = /.css$/i;      let tip1 = 'auto formatting tool has check this file.'      let tip2 = ' block has been handle in this code.'      let now = new Date();      if ( jsFileReg.test(params) || cssFileReg.test(params) ) {        codeTxt += '/n /* '+ tip1 +'*/'        codeTxt += '/n /* '+ formatReturn.times +' '+ tip2+' at ' + now +'*/'      } else if(htmlFileReg.test(params)){        codeTxt += '/n <!-- '+ tip1 +' -->'        codeTxt += '/n <!-- '+ formatReturn.times +' '+ tip2+' at ' + now +'-->'      }      // 將修改好內容寫入當前路徑的文件      writeFile(params,codeTxt);    }  })  }// 寫入文件// fs.writeFile(file, data[, options], callback)// file - 文件名或文件描述符。// data - 要寫入文件的數據,可以是 String(字符串) 或 Buffer(流) 對象。// options - 該參數是一個對象,包含 { encoding, mode, flag } 。默認編碼為 utf8, 模式為 0666 , flag 為 'w'// callback - 回調函數,回調函數只包含錯誤信息參數(err) ,在寫入失敗時返回。function writeFile(_path , _txt) {  fs.writeFile(_path , _txt , function (err) {    if (err) {      console.log('happen an error when write file , error is ' + err)    }    else{      console.log("format file success :",_path);    }  })}// 樣式操作相關/* * fun:*/function ChangePosFor4K(){        var format = //d+px/gi;  var tempSufixx = '@@' // 臨時占位符,因為需要靠數字+px的正則來匹配,已經修改過的就不能再有px  this.formatNumber = function(arg){    // 匹配出所有的 數字和px的組合 dd.px     var initalStr = arg;    var locIndex = initalStr.search(format); //獲取到起始索引    var changeTimes = 0;    while(locIndex>0){      // 拿到值      var locStr = getFullPos(initalStr , locIndex);      // 乘以相關比例      var locValue =Math.ceil(parseInt(locStr) * 1.5);       var locReplaceStr = locValue+tempSufixx;      // 替換      initalStr = replaceStr(initalStr , locIndex , locStr.length , locReplaceStr);      locIndex = initalStr.search(format);      // 計數      changeTimes++;    }    var locReg = new RegExp(tempSufixx,'gi')    initalStr = initalStr.replace(locReg , 'px');    return {code:initalStr,times:changeTimes};  }    // 根據字符串和起始位置找到 xxx.px 字符串  function getFullPos(_str , _begin){    var output = '';    while(output.indexOf('px')<0){// 當沒有沒有找到完整的字符串      output += _str.charAt(_begin);      _begin++;    }    return output;  }  // 被替換的元素,根據起始索引,替換長度,替換元素   function replaceStr( _str , _begin , _len , _subStr ){    // 首先將字符串和拼接字符串轉化為數組    var strArr = _str.split('');    var subStrArr = _subStr;    // 完成替換    strArr.splice(_begin,_len,subStrArr);    return strArr.join('');  }}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 玛纳斯县| 双牌县| 华阴市| 英吉沙县| 青冈县| 赤城县| 琼中| 昌平区| 洛宁县| 长丰县| 宁晋县| 错那县| 项城市| 洞口县| 广元市| 保亭| 合江县| 英德市| 樟树市| 文安县| 白河县| 米泉市| 金昌市| 黄平县| 金华市| 潞城市| 永和县| 商丘市| 石河子市| 调兵山市| 宾川县| 林西县| 德庆县| 兰坪| 城步| 陆良县| 福鼎市| 苍溪县| 略阳县| 根河市| 宁阳县|