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

前端常用业务,单位转换ConvertUnit(妇女节万岁)

时间:2023-03-29 11:05:25 HTML

鏄ㄥぉ鏄?鏈?鏃ュ濂宠妭锛屾垜寰堥珮鍏翠粬浠兘鍋氬ソ鎴戝嚭鍘荤帺锛涗笉寰椾笉璇达紝鍒扮洰鍓嶄负姝紝鎴戠殑濡诲瓙瀵规垜甯姪寰堝ぇ銆傛垜琛峰績鎰熻阿濂圭殑鏀寔銆傚浗闄呭濂宠妭蹇箰锛佸湪鍗曚綅杞崲椤圭洰涓紝璁捐浜嗗緢澶氶暱搴︺€佽窛绂汇€侀€熷害銆佷綋绉瓑鍗曚綅淇℃伅锛屼綔涓轰竴涓垚鐔熺殑浜у搧锛屽崟浣嶅繀椤绘槸鍙厤缃殑锛涚粡杩囧垎鏋愶紝鍙渶瑕佽€冭檻鍓嶇鏄剧ず閮ㄥ垎銆傚洜姝わ紝瑕佸疄鐜颁竴涓墠绔崟浣嶈浆鎹㈠姛鑳斤紱涓氬姟鍒嗘瀽馃憰鎴戜滑鍙互鎯宠薄涓€涓嬶紝鎴戜滑棣栧厛闇€瑕佷竴涓厤缃帴鍙f潵閰嶇疆鍗曞厓锛涙垜浠渶瑕佷竴涓嚱鏁版潵浼犲叆鍊硷紝_鍘熷鍗曚綅_锛宊鏄剧ず鍗曚綅_锛屽苟杈撳嚭杞崲鍚庣殑鍊硷紱鏄剧劧杩欎釜鍔熻兘鏄瘮杈冪嫭绔嬬殑锛屽姛鑳藉崟涓€锛屾垜浠彲浠ヨ嚜宸卞啓涓€涓寘鏉ュ疄鐜般€傪煈栬€冭檻鍒颁竴浜涘崟浣嶈浆鎹㈠彲鑳戒細瀵艰嚧灏忔暟鐐瑰緢闀挎垨鑰呯簿搴︽崯澶憋紝鎴戜滑杩橀渶瑕佷竴涓厤缃潵鏄剧ず灏忔暟浣嶆暟鍜岃繘浣嶃€傚悓鏃?鍏佽涓€у寲鍗曢」閰嶇疆锛屾瘮濡傛埧闂撮粯璁ゅ崟浣嶆槸m锛屼絾鏄幓鐠冪殑鍗曚綅鏄痬m锛屾墍浠ユ垜浠厑璁镐釜鎬у寲閰嶇疆馃崕閰嶇疆锛氬崟浣嶉厤缃晫闈紱馃崐閰嶇疆锛氬皬鏁扮偣閰嶇疆锛涴煂洪厤缃細涓€у寲鍗曢」閰嶇疆锛堝崟浣嶃€佸皬鏁扮偣锛夝煋恌unction:convertUnit鍑芥暟瀹炵幇鍗曚綅杞崲锛堥€嗗悜杞崲锛夝煍unction:precision鍑芥暟瀹炵幇灏忔暟绮惧害鎺у埗鎶€鏈垎鏋愷煆垜浠殑椤圭洰閮芥槸鍩轰簬umiV3妗嗘灦瀹炵幇鐨勶紱鎵€浠ユ垜浠彲浠ヨ€冭檻鍐欎竴涓猆mi鎻掍欢鏉ュ疄鐜版垜浠兂瑕佺殑鍔熻兘锛涘綋鐒讹紝鐩存帴鍐欎竴涓猨s鍖呬篃鏈皾涓嶅彲锛屼絾鏄痷mi鎻掍欢鏈変釜濂藉灏辨槸闆嗕腑閰嶇疆锛岎煄圛mportAllFromUmi锛屾垜鏈€鍠滄馃き锛涙垜浠篃鍙互閫氳繃閰嶇疆瀹炵幇鍖呯殑澶у皬鎺у埗锛屽彧闇€瑕乪xport/package锛涴煍╂湁杞崲鍗曚綅鐨勫簱锛屾帹鑽恈onvert-units銆侰onvert-units鏈変竴涓畝鍗曠殑閾惧紡API锛屾槗浜庨槄璇汇€傚畠杩樺彲浠ラ厤缃弬涓庡叾鎵撳寘鐨勮閲忓崟浣嶏紝鎮ㄤ篃鍙互鑷畾涔夎閲忓崟浣嶃€俇mi鎻掍欢銆佽浆鎹㈠崟浣嶃€丷eact銆乀ypescript锛涙暟鎹粨鏋勷煆筹笍鈥嶐煂堥厤缃秺绠€鍗曡秺濂斤紱{"default":{//榛樿閰嶇疆锛堟埧灞嬭璁″崟浣嶏級"m":"m",//key閮ㄥ垎琛ㄧず鍚庡彴杩斿洖鐨勬暟鎹崟浣嶏紝value閮ㄥ垎琛ㄧず鏄剧ず鍗曚綅"m/s":"m/s","precision":1//绮惧害,[*0*鏁存暟,*1*涓€浣嶅皬鏁?*2*涓や綅灏忔暟]},"glass.length":{//涓€у寲鍗曞搧閰嶇疆锛堢幓鐠冮暱搴︼級"m":"cm","precision":1}}浠g爜瀹炵幇鍏堟潵瀹炵幇鍗曚綅杞崲鍔熻兘.鍏跺疄杩欏緢绠€鍗曘€備粠'convert-units'瀵煎叆configureMeasurements锛涗粠'convert-units/definitions/length'瀵煎叆闀垮害锛沜onstconvert=configureMeasurements({length,});console.log(convert(1).from('m').to('cm'));//杈撳嚭1000鎵€浠ユ垜浠殑鍑芥暟鏄痶ypeUnits=LengthUnits;/***Unitconversion*@paramvalue*@param鏉ヨ嚜鈥滃帢绫斥€潀'绫?|'鍏噷';*@param鍒?cm'|'绫?|'鍏噷';*@returns*/functionconvert(value:number,from:Units,to:Units){浠?==杩斿洖鍒帮紵value:ConvertUnits(value).from(from).to(to);}console.log(convert(1,'m','cm'));//杈撳嚭1000馃敟馃敟馃敟娉ㄦ剰杩欓噷鐨刦rom,to鍐欐垚瀛楃涓蹭細鎶ョ被鍨嬮敊璇紝杩欓噷鎴戜滑浣跨敤type鍏抽敭瀛楀崟鐙0鏄庯紝鐒跺悗瀹炵幇绮惧害杩涗綅鍑芥暟/***precision*@paramvalue榛樿淇濈暀涓や綅灏忔暟*@paramprecision0|1|2*@param鐪焲false鏄惁鍥涜垗浜斿叆*@returns*/functionprecision(value:number,precision:number=2,round:boolean=false):number{constp=1/Number('1e-'+precision);//鏁板瓧銆侲PSILON閬垮厤绮惧害鎹熷けreturnMath[!round?'trunc':'round']((value+Number.EPSILON)*p)/p;}export{ConvertUnits,convert,precision};console.log(precision(1.345,0));//杈撳嚭1console.log(precision(1.345,1));//杈撳嚭1.3console.log(precision(1.345,2));//杈撳嚭1.34,console.log(precision(1.345,2,true)));//杈撳嚭1.35锛岃繖涓嚱鏁版病浠€涔堝ソ璇寸殑锛岎煍ヰ煍ヰ煍ユ敞鎰忕簿搴︽崯澶辩殑闂锛岄伩鍏嶄娇鐢╰oFixed銆傝鎴戜滑鐪嬩竴涓嬪崟鍏冮厤缃€傛晥鏋滃緢绠€鍗曘€傛牴鎹暟鎹粨鏋勶紝鎴戜滑鍙互鐩存帴绠$悊鐘舵€併€傛垜浠笉浼氳皥璁烘帴鍙i儴鍒嗭紝杩欒秴鍑轰簡鏈璁ㄨ鐨勮寖鍥达紱const[unitConfigs,setUnitConfig]=useState({//鍚庨潰鍙互鎹㈡垚useSelector锛屼娇鐢╩odels绠$悊鐘舵€侊紝杩炴帴鍚庣API銆傞粯璁ゅ€硷細{mm:'mm','cm/s':'cm/s',绮惧害锛?},'glass.length':{mm:'cm',绮惧害:1},});start,棣栧厛鏂板缓涓€涓猽mi鎻掍欢椤圭洰yarncreateumi鈼廢miPlugin锛堢敤浜庢彃浠跺紑鍙戯級鈼弝arn鈼弔aobao锛堝浗鍐呮帹鑽愶級鈼弖mi-plugin-convert-unit馃惐棣栧厛鎴戜滑鑰冭檻浣跨敤convert-units锛屾垜浠彲浠ヤ娇鐢╱mi鎻掍欢脧api.addOnDemandDeps脧鑷姩瀹夎convert-units锛?.馃惗鎴戜滑鍦╟onvert-units瀹樼綉鐪嬪埌涓€鍙ヨ瘽銆俢onvert-units鎸夐渶寮曠敤娴嬮噺鍗曚綅importconfigureMeasurementsfrom'convert-units';importvolumefrom'convert-units/definitions/volume';/*`configureMeasurements`鏄竴涓棴鍖咃紝瀹冩帴鍙楁祴閲忕洰褰曞苟杩斿洖涓€涓伐鍘傚嚱鏁?`convert`)浠呬娇鐢ㄩ偅浜涘害閲忋€?/constconvert=configureMeasurements({volume,mass,length,});鍥犳锛屾病鏈夎寮曠敤鐨勬ā鍧楀皢涓嶄細琚墦鍖呫€備絾闂鏉ヤ簡銆傛垜浠兂閫氳繃涓嬮潰绫讳技鐨勯厤缃姩鎬佸鍏ラ渶瑕佺殑娴嬮噺妯″潡銆傛垜浠簲璇ユ€庝箞鍋氾紵///.umirc.tsexportdefault{ConvertUnits:["area","length","mass","pressure","speed","volume"],...鏌ョ湅api.writeTmpFileAPI锛屽彂鐜拌繖涓狝PI鏄敮鎸佺殑妯℃澘瀛楃涓诧紱鍔ㄦ€佸鍏ユ槸閫氳繃鍔ㄦ€佺粰瀹歝ontext妯℃澘context鏉ュ疄鐜扮殑锛屼唬鐮佸涓嬶紱///**index.ts**//鑷姩瀹夎convert-unitsapi.addOnDemandDeps(()=>[{name:"convert-units",version:"^3.0.0-beta.5"}]);api.onGenerateFiles(async()=>{api.writeTmpFile({path:"index.ts",tplPath:join(__dirname,"./core/convert.tpl"),context:{measures:(api.config.ConvertUnits||[鈥滈暱搴︹€漖).map((value:any,index:number)=>({value,index})),upper:function(){returnthis.value.slice(0,1).toUpperCase()+this.value.slice(1).toLowerCase();},first:function(){returnthis.index===0;},link:function(){杩斿洖this.index!==0;},},});//types.d.tsapi.writeTmpFile({path:"types.d.ts",content:"export{}",});});脧馃敟馃敟馃敟鏄庣櫧鍛婅瘔浣狅紝Umi鎻掍欢妯″瀷瀛楃浣跨敤鐨勬槸<>锛屼笉瑕侀棶鎴戜綘鎬庝箞鐭ラ亾鐨勶紱///**core/convert.tpl**importconfigureMeasurements,{{{#measures}}{{value}}锛寋{#upper}}{{.}}{{/upper}}绯荤粺锛寋{#upper}}{{.}}{{/upper}}鍗曚綅锛寋{/measures}}}from"convert-units";//Measures锛氭鍦ㄤ娇鐢ㄧ殑搴﹂噺鐨勫悕绉皌ypeMeasures={{#measures}}{{#first}}'{{value}}'{{/first}{{#link}}|'{{value}}'{{/link}}{{/measures}};//Systems锛氭墍鏈塵easurestype绯荤粺涓娇鐢ㄧ殑绯荤粺={{#measures}}{{#first}}{{#upper}{{.}}{{/upper}}绯荤粺{{/first}}{{#link}}|{{#upper}}{{.}}{{/upper}}Systems{{/link}}{{/measures}};//Units锛氭墍鏈夊害閲忕殑鎵€鏈夊崟浣嶅強鍏剁郴缁熺被鍨婾nits={{#measures}}{{#first}}{{#upper}}{{.}}{{/upper}}鍗曚綅{{/first}}{{#link}}|{{#upper}}{{.}}{{/upper}}鍗曚綅{{/link}}{{/measures}};letconfig={{{#measures}}{{value}},{{/measures}}};constConvertUnits=configureMeasurements(config);OKyarnlinktoprojectpilotFor涓€浼氬効锛屾垜浠彧閰嶇疆ConvertUnits:['length','speed'],涓や釜璁¢噺鍗曚綅鐪嬬湅鏁堟灉瀹岀編馃槝锛?//**src/.umi/plugin-convertunits/index.ts**//@ts-nocheckimportconfigureMeasurements,{length,LengthSystems,LengthUnits,speed,SpeedSystems,SpeedUnits,}from"convert-units";//Measures锛氭鍦ㄤ娇鐢ㄧ殑搴﹂噺鐨勫悕绉皌ypeMeasures='length'|'speed';//绯荤粺锛氳法鎵€鏈夋祴閲忕被鍨嬬郴缁熶娇鐢ㄧ殑绯荤粺=LengthSystems|SpeedSystems;//鍗曚綅锛氭墍鏈夊害閲忕殑鎵€鏈夊崟浣嶅強鍏剁郴缁熺被鍨婾nits=LengthUnits|SpeedUnits锛沴etconfig={length,speed,};constConvertUnits=configureMeasurements(config);...functionconvert(value:number,from:Units,to:Units){...}functionprecision(value:number,precision:number=2){...}OK,鑷虫Umi鎻掍欢寮€鍙戠殑鍐呮牳閮ㄥ垎鍩虹涓婂氨杩欎簺銆傗殸锔忓鏋渃onvert-units涓彁渚涚殑搴﹂噺鍗曚綅涓嶆弧鎰忥紝鎴戜滑鍙互鍗曠嫭灞曞紑锛岄€氳繃api.writeTmpFile鍐欏叆ts鏂囦欢锛屽啀灞曞紑涓婇潰configliteral鐨勭粨鏋勶紱鎻掍欢浣跨敤1锔忊儯鍦╬ackage.json瀹夎鎻掍欢yarnadd@umi/plugin-convert-units2锔忊儯鍦?umirc.ts涓厤缃彃浠讹紝鎻掍欢閰嶇疆锛堝ソ鍢村反锛塭xportdefaultdefineConfig({plugins:['@umi/plugin-convert-units'],ConvertUnits:['length','speed'],});3锔忊儯import:import{convert,precision}from'umi';4锔忊儯缁撳悎鎴戜滑涔嬪墠鐨勯厤缃疄鐜拌嚜鍔ㄥ崟浣嶈浆鎹?..const{unitConfig:{defaultConfig,...otherConfig},}=yieldselect((state:{configModel:any})=>state.configModel);...array.map((item:any)=>{let{value,unit,showUnit,key,...other}=item;constunitConfigItem=otherConfig?.[key]||defaultConfig;//瀹归敊if(!showUnit)showUnit=unit;//杞崲unitif(!!showUnit&&!!unit){value=convert(Number(value),showUnit,unit);}//precisionvalue=precision(Number(value),unitConfigItem?.['precision']);return{value,unit,key,...other}})...鎬荤粨馃尰鏁版嵁缁撴瀯锛氭垜浠洿鍠滄绠€鍗曞拰e鏄撲簬鎵╁睍鐨勬暟鎹粨鏋勶紱馃尰convert-units锛氳繖涓敤浜庤浆鎹㈠崟浣嶇殑绗笁鏂瑰簱鏀寔TS锛宊鍔ㄦ€佸姞杞絖锛宊鍗曞厓绫诲瀷闄愬埗_锛涴煂籾mi鎻掍欢锛氶€氳繃鎻掍欢锛屾垜浠彲浠ュ緢鏂逛究鐨勯泦鎴愪竴浜涘父鐢ㄧ殑鍔熻兘锛岃€屼笉鐢ㄨ€冭檻绫诲瀷妫€鏌ュ拰瀹夎鐗堟湰闂銆傪煂籱ustache.js锛氳繖鏄竴涓笉鍚堥€昏緫鐨勬ā鏉胯娉曘€傚畠鍙互鐢ㄤ簬HTML銆侀厤缃枃浠躲€佹簮浠g爜-浠讳綍涓滆タ锛屽畠閫氳繃浣跨敤鏁e垪鎴栧璞′腑鎻愪緵鐨勫€兼墿灞曟ā鏉夸腑鐨勬爣绛炬潵宸ヤ綔銆傛病鏈塱f璇彞銆乪lse瀛愬彞鎴杅or寰幆銆傛渶鍚庨檮涓婁竴娈祄ustache.js鐨勬悶绗戝姩鐢汇€傛湰鏂囩敱mdnice澶氬钩鍙板彂甯?/p>