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

vue实战中的一些小技巧

时间:2023-03-28 13:22:50 HTML

璁╀綘鍔犺浇鏇村揩锛岀涓€娆℃噿鍔犺浇璺敱锛屼綘鎬庝箞鑳藉繕璁板憿锛熻矾鐢辨噿鍔犺浇鍙互璁╂垜浠殑鍖呬笉闇€瑕佷竴娆℃€у姞杞芥墍鏈夐〉闈紝鑰屽彧鍔犺浇褰撳墠椤甸潰鐨勮矾鐢辩粍浠躲€傛瘮濡備綘杩欐牱鍐欙紝鍔犺浇鐨勬椂鍊欏氨鍏ㄩ儴鍔犺浇浜嗐€俢onstrouter=newVueRouter({routes:[{path:'/',name:'Home',component:Home},{path:'/about',name:'About',component:About}]})鎵€浠ワ紝搴旇閬垮厤涓婇潰鐨勫啓娉曪紝灏介噺浣跨敤lazyloading鎳掑姞杞藉啓娉曪紝缁撳悎webpack鐨勫鍏ユ秷鑰梒onstrouter=newVueRouter({routes:[{path:'/',name:'Home',component:()=>import(/*webpackChunkName:"home"*/'../views/Home.vue')},{path:'/about',name:'About',component:()=>import(/*webpackChunkName:"about"*/'../views/About.vue')}]})浣犺繕璁板緱鏈変竴涓柟娉曞彨鍋歄bject.freeze鍚楋紵鍚屽浠簲璇ラ兘鐭ラ亾锛孷ue鍦ㄥ垵濮嬪寲鐨勬椂鍊欙紝浼氬皢data閲岄潰鐨勬墍鏈夋暟鎹兘鍋氭垚鍝嶅簲寮忔暟鎹€備絾鏄紝鎴戜滑鍦ㄥ啓涓氬姟閫昏緫鐨勬椂鍊欙紝鏈変簺鏁版嵁涓€鏃﹀垵濮嬪寲灏辨案杩滀笉浼氭敼鍙樸€傛牴鏈笉闇€瑕乿ue鍋氭垚鍝嶅簲寮忔暟鎹紝鎵€浠ユ垜浠簲璇ラ€氳繃Object.freeze鏂规硶鍐荤粨涓嶉渶瑕佹敼鍙樼殑鏁版嵁銆傞伩鍏嶅湪Vue鍒濆鍖栨椂鍋氫竴浜涙棤鐢ㄧ殑鎿嶄綔銆傪煂癳xportdefault{data:()=>({list:Object.freeze([{title:'鎴戜粠鏉ヤ笉闇€瑕佹敼鍙橈紝鎴戜笉闇€瑕乺esponsive'}])})}寮傛缁勪欢杩欎箞寮猴紝涓嶈'浣犳病鐢ㄨ繃鍚楋紵寮傛缁勪欢鍏佽鎴戜滑鍦ㄩ渶瑕佺殑鏃跺€欏姞杞戒竴浜涚粍浠讹紝鑰屼笉鏄竴鍒濆鍖栧氨鍔犺浇锛岃繖鏄竴涓甫鏈夎矾鐢卞欢杩熷姞杞界殑姒傚康銆傪煂癳xportdefault{components:{AsyncComponent:()=>import(/*webpackChunkName:"AsyncComponent"*/'./Async')}}绗竴娆″姞杞界殑鍖呬笉鍖呭惈缁勪欢浠g爜銆傚綋鐐瑰嚮瑙﹀彂鏌愮琛屼负鏃秈mport鍖呭氨鏄繖鏍蜂竴涓紓姝ョ粍浠惰繕鏈夋洿瀹岀編鐨勫啓娉曫煂癳xportdefault{components:{AsyncComponent:()=>({component:import(/*webpackChunkName:"AsyncComponent"*/'./Async'),delay:200,//寤惰繜鍑犳绉掞紝榛樿200timeout:3000,//鍔犺浇鍑犳绫冲悗瓒呮椂锛岃Е鍙戦敊璇粍浠秎oading:LoadingComponent,//鏄剧ずerror:ErrorComponentbefore缁勪欢琚姞杞藉洖鏉?/褰撶粍浠惰秴鏃舵椂鏄剧ず})}}浣犺繕鍦ㄨ绠椾腑浣跨敤杩欎釜鍚楋紵鎴戜及璁¤繕鏄湁寰堝鍚屽鐢╰his.xxx鏉ヨ幏鍙杁ata涓殑鏁版嵁鍜宑omputed灞炴€т腑鐨刴ethods涓殑鏂规硶銆傚彲鑳戒粬浠繕浼氱敤this.$store鑾峰彇vuex鐨剆tate锛宑ommit绛夛紝鐢氳嚦浼氱敤this.$route鑾峰彇璺敱涓殑鏁版嵁銆傚叾瀹炴垜浠彲浠ラ伩鍏嶈繖浜涗笐闄嬬殑this锛屽畠鐢氳嚦浼氱粰鎴戜滑甯︽潵鏃犲舰鐨勬€ц兘闂銆傚湪瀹炵幇鏂归潰锛屾垜浠彲浠ラ€氳繃瀹冭闂殑鏁版嵁鍙互鍦ㄨ绠楃殑绗竴涓弬鏁颁笂杩涜缁撴瀯鍖栥€傪煂癳xportdefault{haha鈥嬧€?{$attrs,$route,$store,$listeners,$ref}){//杩樺彲浠ユ瀯閫犲緢澶氬睘鎬э紝鍙互鎵撳嵃kangkangreturn}}濡備綍閬垮厤v-if鍜寁-for涓€璧峰嚭鐜颁娇鐢紵涓轰粈涔堣閬垮厤鍚屾椂瀵瑰悓涓€涓厓绱犱娇鐢╲-if鍜寁-for锛熷洜涓哄湪vue鐨勬簮鐮佷腑鏈変竴娈典唬鐮佹槸澶勭悊鎸囦护浼樺厛绾х殑锛岃繖娈典唬鐮佸厛澶勭悊v-for锛屽啀澶勭悊v-if銆傛墍浠ュ鏋滄垜浠湪鍚屼竴灞備竴璧蜂娇鐢ㄤ袱鏉℃寚浠わ紝灏变細鍑虹幇涓€浜涗笉蹇呰鐨勬€ц兘闂銆傛瘮濡傝繖涓垪琛ㄦ湁涓€鐧炬潯鏁版嵁銆傚湪鏌愪簺鎯呭喌涓嬶紝瀹冧滑涓嶉渶瑕佹樉绀恒€傚綋Vue浠嶇劧浼氬惊鐜繖涓?00鏁版嵁鏄剧ず锛岀劧鍚庡垽鏂璿-if锛屾墍浠ユ垜浠簲璇ラ伩鍏嶈繖绉嶆儏鍐点€傚潖馃尠{{item}}濂金煂?templatev-if="status">{{item}}涓轰粈涔堜笉浣跨敤寮?sync淇グ绗︼紵濡傛灉鎯冲湪鐖剁粍浠朵腑鎺у埗瀛愮粍浠剁殑鏄剧ず鍜岄殣钘忥紝鏄笉鏄繕瑕佷紶閫掍竴涓猵rop鍜屼竴涓嚜瀹氫箟鐨勬柟娉曪紵杩欎細寰堥夯鐑︺€傛偍涓嶅Θ璇曡瘯sync淇敼鍣ㄣ€傪煂?/鐖剁粍浠舵ā鏉?

//鍒囨崲缁勪欢$attr鍜?listeners璁╀綘灏佽缁勪欢濡傞奔寰楁按锛佸緢澶氬悓瀛﹀彲鑳戒笉浼氱敤$attr鍜?listeners銆傚疄闄呬笂锛屽畠浠彲浠ヨ鎴戜滑閲嶆柊灏佽涓€浜涚粍浠跺簱鐨勭粍浠讹紝杩欐槸闈炲父鏈夌敤鐨勩€傜畝鍗曚粙缁嶄竴涓嬩粬浠袱涓細$attr锛氬鏋滀竴涓粍浠朵笉浠呬紶閫掍簡prop闇€瑕佺殑灞炴€э紝杩樹紶閫掍簡prop浠ュ鐨勫叾浠栧睘鎬э紝閭d箞杩欎簺灞炴€ч兘浼氳鏀堕泦鍒?attr涓€?listeners锛氬鏋滀竴涓粍浠朵紶閫掕嚜瀹氫箟浜嬩欢锛屼絾鏄瓙缁勪欢娌℃湁琚玡mit瑙﹀彂锛岄偅涔堣繖浜涜嚜瀹氫箟鏂规硶浼氳鏀堕泦鍒?listeners涓€傝繖閲屽ElementUI鐨凾abel缁勪欢杩涜绠€鍗曠殑浜屾灏佽寮曠敤鍓嶇楂樼骇闈㈣瘯棰樿瑙-model杩樻湁杩欎箞濂界殑淇グ绗︼紒v-model鏈?涓湁鐢ㄧ殑淇グ绗︺€備笉鐭ラ亾浣犳湁娌℃湁鐢ㄨ繃銆備竴涓槸鎳掓儼锛屼竴涓槸鏁板瓧锛屼竴涓槸淇壀銆俵azy锛欯input浜嬩欢鍙互鏀逛负@blur浜嬩欢number锛氬彧鑳借緭鍏ユ暟鍊紅rim锛氭竻闄や袱杈圭殑绌烘牸馃尠//lazy//number//trim浣犵煡閬搗-model涔熷彲浠ヨ嚜瀹氫箟灞炴€у悧锛熷鏋滆鍦ㄨ嚜瀹氫箟Input缁勪欢涓婁娇鐢╲-model锛岄渶瑕佸湪瀛愮粍浠朵腑寮曞叆涓€涓€煎苟瑙﹀彂input浜嬩欢銆倂-model鐨勯粯璁よ娉曠硸鏄繖涓よ€呯殑缁撳悎銆傪煂?/鐖剁粍浠?template>
//CustomInput浣嗘槸锛屽鏋滅粍浠朵笉鏄緭鍏ワ紝鑰屾槸澶嶉€夋鎴栧崟閫夋鍛紵鎴戜笉鎯虫帴鏀跺€煎拰杈撳叆浜嬩欢锛屾垜鎯虫帴鈥嬧€嬫敹鏇村璇箟妫€鏌ュ拰鏇存敼浜嬩欢锛岄偅涔堟垜鐜板湪搴旇鍋氫粈涔堬紵馃尠//鐖剁粍浠朵笉鐢ㄦ敼...//CustomInput浣犺繕鍦ㄧ敤娴忚鍣ㄧ殑scrollTop婊氬姩浣犵殑椤甸潰鍚楋紵鏈夋椂鍊欐垜浠湪鎿嶆帶椤甸潰鐨勬粴鍔ㄨ涓猴紝杩欐椂鎴戜滑椹笂灏变細鎯冲埌scrollTop銆傚叾瀹炴垜浠繕鏈夌浜岀閫夋嫨锛屽氨鏄疺ueRouter鎻愪緵鐨剆crollBehaviorhook銆傪煂癱onstrouter=newVueRouter({routes:[...],scrollBehavior(to,from,position){//position鍙傛暟鍙互鑷繁鎵撳嵃搴峰悍锛岀偣鍑绘祻瑙堝櫒宸﹀彸绠ご浼氳Е鍙戣繑鍥瀧//杩欓噷鍙互杩斿洖寰堝鍙傛暟锛屼笅闈㈢畝鍗曠綏鍒椾簡鍑犱釜锛屽叿浣撳彲浠ユ煡鐪嬪悍搴峰畼缃憍:100,y:100,selector:#app,offset:200,//etc}}})浣犲湪瀛愮粍浠朵笂瀹氫箟鐨勫師鐢熶簨浠朵笉鐢熸晥锛熸湁鏃跺€欐垜浠兂鍦ㄥ瓙缁勪欢涓婄洃鍚竴浜涗簨浠讹紝姣斿鐐瑰嚮锛屼絾鏄棤璁轰綘鐐瑰嚮浠€涔堬紝瀹冮兘娌℃湁鍝嶅簲锛屼负浠€涔堬紵馃尠鍥犱负杩欐牱鍐橵ue浼氭兂鎯筹紝浣犺嚜瀹氫箟浜嗕竴涓猚lick浜嬩欢锛岄渶瑕佸湪瀛愮粍浠朵腑閫氳繃$emit('click')瑙﹀彂銆傚鏋滄垜鍙兂鍦ㄧ埗缁勪欢涓Е鍙戞€庝箞鍔烇紵鐒跺悗浣跨敤native淇グ绗︺€傪煂?template>
浣跨敤keep-alive缂撳瓨浣犵殑椤甸潰鐘舵€侊紒keep-alive鍙互甯姪鎴戜滑鍦ㄥ垏鎹㈢粍浠剁殑鏃跺€欙紝璁╀箣鍓嶇殑缁勪欢涓嶈閿€姣併€傚鐢ㄤ簬绠$悊鍚庡彴绯荤粺銆傪煂?keep-alive>