当前位置: 首页 > Web前端 > JavaScript

你所不知道的Node.jsUtil

时间:2023-03-27 10:11:02 JavaScript

鏉ヨ嚜绫诲瀷鍒ゆ柇鍦↗avaScript涓紝瀵瑰彉閲忚繘琛岀被鍨嬫牎楠屾槸涓€浠堕潪甯搁夯鐑︾殑浜嬫儏銆傚鏋滃崟绾殑浣跨敤typeof锛屽氨浼氶亣鍒板悇绉嶅悇鏍风殑闂銆傝繖閲屾湁鍑犱釜绠€鍗曠殑馃尠锛歝onsole.log(typeofnull)//'object'console.log(typeofnewArray)//'object'console.log(typeofnewString)//'object'鍚庢潵澶у鍙戠幇瀹冨彲浠ヤ娇鐢∣bject.prototype.toString()鏂规硶鏉ュ垽鏂彉閲忕被鍨嬨€俢onstgetTypeString=obj=>Object.prototype.toString.call(obj)getTypeString(null)//'[objectNull]'getTypeString('string')//'[objectString]'getTypeString(newString)//'[objectString]'浠g悊toString()鏂规硶寰楀埌涓€涓瓧绗︿覆绫诲瀷锛屾垜浠彲浠ュ湪杩欎釜瀛楃涓蹭笂鍋氫竴浜涗簨鎯呫€俢onstgetTypeString=obj=>{returnObject.prototype.toString.call(obj)}constisType=type=>{returnobj=>{returngetTypeString(obj)===`[object${type}]`}}constisArray=isType('Array')//杩欎釜鏂规硶涓€鑸敤Array.isArray浠f浛constisNull=isType('Null')constisObject=isType('Object')constisRegExp=isType('RegExp')constisFunction=isType('Function')constisAsyncFunction=isType('AsyncFunction')isNull(null)//trueisObject({})//trueisRegExp(/\w/)//trueisFunction(()=>{})//trueisAsyncFunction(async()=>{})//true浣嗘槸锛屽湪Node.js涓紝鍏跺疄鏈変竴濂楀垽鏂彉閲忕被鍨嬬殑API銆傝€屼笖鍔熻兘鏋佸叾涓板瘜銆傞櫎浜嗗熀鏈被鍨嬬殑鍒ゆ柇澶栵紝杩樻敮鎸佸Promise瀵硅薄銆丏ate瀵硅薄銆佸悇绉岮rrayBuffers鐨勫垽鏂€俢onsttypes=require('util/types')types.isDate(newDate)//truetypes.isPromise(newPromise(()=>{}))//truetypes.isArrayBuffer(newArrayBuffer(16))//true涓ユ牸鐩哥瓑鍦↗avaScript涓紝鍦ㄥ垽鏂璞°€佹暟缁勭瓑鍙橀噺鏄惁鐩哥瓑鐨勮繃绋嬩腑锛屽鏋滀娇鐢?==锛岄€氬父鍙細鍒ゆ柇涓や釜鍙橀噺鏄惁鎸囧悜鍚屼竴涓唴瀛樺湴鍧€銆傚鏋滆鍒ゆ柇瀵硅薄鐨刱ey瀵瑰簲鐨勬墍鏈夊€兼槸鍚︾浉绛夛紝闇€瑕侀亶鍘嗕袱涓璞°€倁til涓繕鎻愪緵浜嗗垽鏂袱涓璞℃槸鍚︿弗鏍肩浉绛夌殑鏂规硶锛?shenfq'}console.log('val1===val2',val1===val2)//falseconsole.log('isDeepStrictEqual',util.isDeepStrictEqual(val1,val2))//true杩欎釜鏂规硶鏄竴鏍风殑鍙互鐢ㄦ潵鍒ゆ柇鏁扮粍鏄惁涓ユ牸鐩哥瓑锛歝onstutil=require('util')constarr1=[1,3,5]constarr2=[1,3,5]console.log('arr1===arr2',arr1===arr2)//falseconsole.log('isDeepStrictEqual',util.isDeepStrictEqual(arr1,arr2))//trueErrorFirst&PromiseEarlyNodeAPIs閮芥槸ErrorFirst椋庢牸锛屽嵆鎵€鏈夌殑寮傛鍑芥暟閮戒細灏嗗畠鎺ュ彈涓€涓洖璋冨嚱鏁帮紝鍥炶皟鍑芥暟鐨勪竴涓弬鏁版槸閿欒瀵硅薄銆傚鏋滄甯歌繑鍥瀍rror瀵硅薄锛屽垯涓簄ull锛屽悗闈㈢殑鍙傛暟涓哄搷搴旀垚鍔熺殑缁撴灉銆?/涓嬮潰鏄竴涓鍙栨枃浠剁殑渚嬪瓙constfs=require('fs')fs.readFile('nginx.log',(error,data)=>{if(error){//璇诲彇鏂囦欢鎺у埗鍙板け璐?error(error)return}//璇诲彇鏂囦欢鎴愬姛骞舵墦鍗扮粨鏋渃onsole.log(data)})Node8鍙戝竷鏃讹紝澧炲姞浜嗕竴涓猵romisify鎺ュ彛锛岀敤浜庡皢ErrorFirst椋庢牸鐨凙PI杞崲涓篜romiseAPI銆俢onstfs=require('fs')constutil=require('util')constreadFile=util.promisify(fs.readFile)readFile('./2021-11-11.log',{缂栫爜:'utf-8'}).then(text=>console.log(text)).catch(error=>console.error(error))浣嗘槸鍚庢潵寰堝浜鸿寰楄繖浜涘師鐢烝PI鏀寔Promise鐨勬柟寮忓お绻佺悙浜嗭紝姣忎釜API閮芥槸闇€瑕佷竴灞傚崟鐙殑promisify鍖呰銆侼ode10鍙戝竷鏃讹紝鍘熺敓妯″潡澧炲姞浜嗕竴涓?promises灞炴€э紝璇ュ睘鎬т笅鐨勬墍鏈堿PI閮芥槸Promise椋庢牸鐨勩€俢onstfs=require('fs').promisesfs.readFile('./2021-11-11.log',{encoding:'utf-8'}).then(text=>console.log(text))銆俢atch(error=>console.error(error))娉ㄦ剰锛氬湪Node14涔嬪悗锛宲romisesAPI鏂板浜嗕竴涓鍏ユ柟娉曪紝閫氳繃淇敼鍖呭悕寮曞叆銆俢onstfs=require('fs/promises')fs.readFile('./2021-11-11.log',{encoding:'utf-8'}).then(text=>console.log(text)).catch(error=>console.error(error))闄や簡灏咵rrorFirst椋庢牸鐨凙PI杞崲涓篜romiseAPI澶栵紝util杩樻彁渚涗簡涓€涓猚allbackify鏂规硶灏哸sync鍑芥暟杞崲涓篍rrorFirst椋庢牸鐨勫嚱鏁般€備笅闈㈤€氳繃callbackify灏嗗熀浜巔romise鐨刦s鎭㈠涓篍rrorFirst椋庢牸鐨勫嚱鏁般€俢onstfs=require('fs/promises')constutil=require('util')constreadFile=util.callbackify(fs.readFile)readFile('./2021-11-12.log',{缂栫爜:'utf-8'},(error,text)=>{if(error){console.error(error)return}console.log(text)})璋冭瘯杈撳嚭濡傛灉寮€鍙戣繃Node鏈嶅姟锛屽簲璇ョ敤杩嘾ebugmodule锛岄€氳繃璇ユā鍧楀彲浠ュ湪鎺у埗鍙扮湅鍒版洿娓呮櫚鐨勮皟璇曚俊鎭€俢onstdebug=require('debug')constlog=debug('app')constuser={name:'shenfq'}log('currentuser:%o',user)鍏跺疄绫讳技鐨勪篃鍙互閫氳繃util瀹炵幇.debug鏁堟灉锛歝onstdebug=require('debug')constlog=debug('app')constuser={name:'shenfq'}log('currentuser:%o',user)鍙湪鍚姩鏃讹紝鎮ㄩ渶瑕佸皢DEBUG鐜鍙橀噺鏇挎崲涓篘ODE_DEBUG銆備粩缁嗙湅涓婇潰鐨勪唬鐮侊紝搴旇浼氬彂鐜板湪log('currentuser:%o',user)鏂规硶鍓嶉潰鐨勫瓧绗︿覆涓湁涓€涓?o鍗犱綅绗︼紝琛ㄧず杩欎釜鍦版柟浼氳涓€涓璞″~鍏咃紙鐩殑锛夈€傝繖绫讳技浜嶤鎴朠ython涓殑printf銆傚悓鏍凤紝鍦╱til妯″潡涓紝鐩存帴鎻愪緵浜嗕竴涓牸寮忓寲鏂规硶锛歶til.format銆俢onst{format}=require('util')console.log(format('currentuser:%o',{name:'shenfq',age:25}))闄?o鍗犱綅绗﹀锛屼笉鍚岀殑鏁版嵁绫诲瀷搴旇浣跨敤涓嶅悓鐨勫崰浣嶇銆傚崰浣嶇绫诲瀷%s瀛楃涓?d鏁板瓧锛堝寘鎷暣鏁板拰娴偣鏁帮級%i鏁存暟%f娴偣鏁?jJSON%oObjectJavaScript涓殑瀵硅薄鏄竴涓緢澶嶆潅鐨勪笢瑗匡紝闄や簡鐩存帴浣跨敤util.format澶栧姞%o鍗犱綅绗﹀璞′互绗﹀彿鐨勫舰寮忚繘琛屾牸寮忓寲锛寀til涔熸彁渚涗簡涓€涓柟娉曞彨inspect鏉ユ牸寮忓寲瀵硅薄銆俢onst{inspect}=require('util')constuser={age:25,name:'shenfq',work:{name:'coding',seniority:5}}console.log(inspect(user))鐪嬭捣鏉ュ儚杩欎釜inspect濂藉儚娌′粈涔堜綔鐢紝浣嗘槸inspect鏂规硶杩樻湁绗簩涓弬鏁帮紝鐢ㄦ潵鏍煎紡鍖栫殑鏃跺€欏仛涓€浜涗釜鎬у寲鐨勯厤缃€俤epth:number锛氭帶鍒舵樉绀哄眰娆★紱sorted:boolean|鍔熻兘锛氭槸鍚︽寜鐓ey鐨勭紪鐮佸€艰繘琛屾帓搴忥紱compact:boolean:鏄惁鍗曡鏄剧ず锛涘綋鐒讹紝浠ヤ笂鍙槸閮ㄥ垎閰嶇疆锛屾洿璇︾粏鐨勯厤缃彲浠ユ煡鐪媙ode鏂囨。銆傚啓鍑犱釜妗堜緥锛氭墍鏈夊睘鎬ф崲琛屾樉绀猴細inspect(user,{compact:false})鍙牸寮忓寲瀵硅薄绗竴灞傜殑鍊硷細inspect(user,{depth:0,compact:false})鏍规嵁閿€肩殑缂栫爜鍊掑簭杈撳嚭锛歩nspect(user,{compact:false,sorted:(a,b)=>a