精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

2025年 Vue 開發必備的25個超實用技巧!

開發 前端
在 Vue.js 中,默認情況下,切換組件時會卸載當前組件。使用 <KeepAlive> 可以緩存組件狀態。

本文來分享 25 個 Vue 開發必備的實用技巧!

使用 defineModel() 實現雙向數據綁定

在 Vue 3.4 中,推薦使用 defineModel() 宏來實現雙向數據綁定,這大大簡化了代碼。

<!-- 使用 defineModel 之前 -->
<script setup>
const props = defineProps(['modelValue'])
const emit = defineEmits(['update:modelValue'])
</script>

<template>
  <input
    :value="props.modelValue"
    @input="emit('update:modelValue', $event.target.value)"
  />
</template>

<!-- 使用 defineModel 之后 -->
<script setup>
const model = defineModel();
</script>

<template>
  <input v-model="model" />
</template>

避免濫用 ref()

在 Vue 中,不需要為每個變量都使用 ref(),只有在需要響應性時才使用。

<script setup>
  // 不需要響應性,不需要使用 ref()
  const links = [
    {
      name: 'about',
      href: '/about'
    },
    {
      name: 'terms of service',
      href: '/tos'
    },
    {
      name: 'contact us',
      href: '/contact'
    }
  ]

  // 需要響應性,使用 ref()
  const tabs = ref([
    {
      name: 'Privacy',
      url: '/privacy',
      isActive: true
    },
    {
      name: 'Permissions',
      url: '/permissions',
      isActive: false
    }
  ])
</script>

使用 v-bind 同名簡寫

Vue 3.4 引入了 v-bind 同名簡寫,進一步簡化了代碼。

<template>
  <!-- 之前 -->
  <img :id="id" :src="src" :alt="alt">

  <!-- 現在 -->
  <img :id :src :alt>
</template>

使用 shallowRef 優化性能

對于不需要深度響應性的大型數據結構,可以使用 shallowRef 來優化性能。

const state = shallowRef({ count: 1 })

// 不會觸發更新
state.value.count = 2

// 會觸發更新
state.value = { count: 2 }

類型化組件 emits

通過類型化 emits,可以獲得更好的錯誤處理和編輯器支持。

const emit = defineEmits<{
  change: [id: number]
  update: [value: string]
}>()

在 <style> 中使用 v-bind

Vue 允許在 <style> 中使用 v-bind 來綁定動態值,并且它是完全響應式的。

<style scoped>
  button {
    background-color: v-bind(backgroundColor);
  }
</style>

使用 Tanstack Query 簡化數據獲取

Tanstack Query(Vue Query)可以大大減少數據獲取的樣板代碼,并提供自動緩存、自動重新獲取等強大功能。

// 之前的數據獲取模式
const posts = ref([]);
const isLoading = ref(false);
const isError = ref(false);

async function fetchPosts() {
  isLoading.value = true;
  isError.value = false;
  try {
    const response = await fetch('someurl');
    posts.value = await response.json();
  } catch(error) {
    isError.value = true;
  } finally {
    isLoading.value = false;
  }
}

onMounted(() => {
  fetchPosts();
})

// 使用 Tanstack Query 簡化
const {data: posts, isLoading, isError} = useQuery({
  queryKey: ['posts'],
  queryFn: fetchPosts
})

async function fetchPosts() {
  const response = await fetch('someurl');
  const data = await response.json();
  return data;
}

使用 :global 偽類應用全局樣式

在 Vue 中,使用 :global 偽類可以在局部樣式中應用全局樣式。

<style scoped>
  :global(.red) {
    color: red;
  }
</style>

使用 withDefaults 設置默認值

即使在使用類型聲明的 defineProps 時,也可以使用 withDefaults 宏來設置默認值。

<script setup lang="ts">
  export interface Props {
    variant?: 'primary' | 'secondary'
    disabled?: boolean
  }

  const props = withDefaults(defineProps<Props>(), {
    variant: 'primary',
    disabled: false
  })
</script>

自定義指令

在 Vue 中,可以通過創建一個包含生命周期鉤子的對象來注冊自定義指令。

<script setup>
  // 在模板中啟用 v-focus
  const vFocus = {
    mounted: (el) => el.focus()
  }
</script>

<template>
  <input v-focus />
</template>

使用 :deep() 偽類影響子組件樣式

在局部樣式中,使用 :deep() 偽類可以影響子組件的樣式。

<style scoped>
  .a :deep(.b) {
    /* ... */
  }
</style>

使用 :slotted 偽類針對插槽內容

默認情況下,局部樣式不會影響通過 <slot/> 渲染的內容。使用 :slotted 偽類可以顯式地針對插槽內容。

<style scoped>
  :slotted(div) {
    color: red;
  }
</style>

使用 <KeepAlive> 緩存組件狀態

在 Vue.js 中,默認情況下,切換組件時會卸載當前組件。使用 <KeepAlive> 可以緩存組件狀態。

<template>
  <KeepAlive>
    <component :is="activeComponent" />
  </KeepAlive>
</template>

傳遞多個具名插槽

在 Vue.js 中,可以向子組件傳遞多個具名插槽。

<!-- 子組件 / Input.vue -->
<template>
  <div class="input-wrapper">
    <label>
      <slot name="label" />
    </label>
    <input />
    <div class="input-icon">
      <slot name="icon" />
    </div>
  </div>
</template>

<!-- 父組件 -->
<template>
  <Input>
    <template #label>
      Email
    </template>
    <template #icon>
      <EmailIcon />
    </template>
  </Input>
</template>

使用 Suspense 處理異步依賴

通過實驗性的 Suspense 組件,可以在組件樹中協調異步依賴,并在等待多個嵌套異步依賴解析時渲染加載狀態。

<template>
  <Suspense>
    <!-- 包含嵌套異步依賴的組件 -->
    <Dashboard />
    <!-- 通過 #fallback 插槽顯示加載狀態 -->
    <template #fallback>
      Loading...
    </template>
  </Suspense>
</template>

使用 Teleport 傳送模板部分

在 Vue 中,可以使用內置的 Teleport 組件將模板的一部分傳送到組件 DOM 層次結構之外的 DOM 節點。

<template>
  <Teleport to="body">
    <div v-if="open" class="modal">
      <p>Hello from the modal!</p>
      <button @click="open = false">Close</button>
    </div>
  </Teleport>
</template>

啟用性能追蹤

在 Vue 中,可以在瀏覽器開發者工具的性能/時間線面板中啟用性能追蹤。這僅在開發模式下有效。

const app = createApp(App);
app.config.performance = true;
app.mount('#app');

動態渲染組件

在 Vue 中,可以使用內置的 <Component> 組件動態渲染組件。

<script setup>
  import UserSettings from './Foo.vue'
  import UserNotifications from './Bar.vue'
  const activeComponent = ref(UserSettings);
</script>

<template>
  <component :is="activeComponent" />
</template>

布爾類型 prop 的簡寫

在 Vue 中,當傳遞布爾類型的 prop 且值為 true 時,可以使用簡寫形式。

<template>
  <!-- 可以使用這種形式 -->
  <BlogPost is-published />
  <!-- 而不是這種形式 -->
  <BlogPost :is-published="true" />
</template>

使用 v-model 修飾符

默認情況下,v-model 在每次 input 事件后同步數據??梢允褂?lazy 修飾符改為在 change 事件后同步。

<!-- 在 "change" 事件后同步 -->
<input v-model.lazy="msg" />

自動類型轉換

如果希望用戶輸入自動轉換為數字,可以在 v-model 上添加 number 修飾符。

<input v-model.number="age" />

自動修剪空格

如果希望自動修剪用戶輸入的空格,可以在 v-model 上添加 trim 修飾符。

<input v-model.trim="msg" />

使用 defineExpose 暴露屬性

在 <script setup> 組件中,默認是關閉的。使用 defineExpose 編譯器宏可以顯式暴露屬性。

<script setup>
  import { ref } from 'vue'
  
  const a = 1
  const b = ref(2)
  
  defineExpose({
    a,
    b
  })
</script>

合并類和樣式

在 Vue 中,當組件模板中有一些類,并且在父組件中也添加了一些類時,這些類會自動合并。

<!-- 父組件 -->
<template>
  <Table class="py-2"></Table>
</template>

<!-- 子組件 Table.vue -->
<template>
  <table class="border-solid border-2 border-sky-500">
    <!-- ... -->
  </table>
</template>

<!-- 合并后的類 -->
<template>
  <table class="border-solid border-2 border-sky-500 py-2">
    <!-- ... -->
  </table>
</template>

啟用自定義格式化器

在 Vue 中,啟用自定義格式化器可以在控制臺中更好地查看響應式數據。可以在 Chrome 瀏覽器的開發者工具中啟用自定義格式化器,選擇 Console -> custom formatters。

圖片

參考:https://vuejstips.com/

責任編輯:武曉燕 來源: 前端充電寶
相關推薦

2024-04-29 09:02:46

Vue頁面動畫樣式

2022-10-11 08:00:47

多線程開發技巧

2025-03-03 00:15:00

JavaScript開發效率

2025-09-22 07:31:11

2012-03-07 14:46:29

2020-03-09 10:31:58

vue前端開發

2024-03-28 08:15:09

Spring技巧配置

2024-05-22 09:29:43

2009-12-21 15:50:39

2009-09-04 10:27:28

Linux實用技巧linux操作系統linux

2022-03-23 09:18:10

Git技巧Linux

2025-06-03 09:06:20

2020-12-03 18:38:19

iPhoneiOS功能

2022-12-07 10:21:19

谷歌搜索技巧

2021-01-21 08:00:00

開發工具VS Code

2024-11-26 14:18:44

Python代碼技巧

2025-05-29 08:35:39

Python代碼開發

2024-01-08 18:05:19

PyCharm技巧功能

2023-07-24 07:11:43

2021-04-12 15:54:45

Android 開發技巧
點贊
收藏

51CTO技術棧公眾號

国产无人区一区二区三区| 一道本一区二区| 欧美一区二区国产| 成熟丰满熟妇高潮xxxxx视频| 日韩毛片在线一区二区毛片| 老司机免费视频一区二区| 欧美大片免费观看在线观看网站推荐| 国产ts丝袜人妖系列视频| 香蕉成人影院| 亚洲国产精品欧美一二99| 日韩不卡av| 亚洲欧美黄色片| 麻豆精品久久久| 热久久美女精品天天吊色| 色欲人妻综合网| 国产欧美日韩在线一区二区| 日韩欧美一级精品久久| www日韩视频| sm久久捆绑调教精品一区| 中文字幕一区在线| 欧美不卡福利| 色婷婷av一区二区三区之e本道| 蜜桃视频免费观看一区| 97精品一区二区三区| 国产精品久久久精品四季影院| 亚洲传媒在线| 精品国产不卡一区二区三区| 精品综合久久久久| 外国电影一区二区| 日韩欧美一区二区三区久久| 国产www免费| 啪啪免费视频一区| 亚洲色图另类专区| 中日韩在线视频| jizz在线观看| 国产欧美日韩另类视频免费观看| 久久亚洲精品欧美| 免费观看a视频| 国产精一品亚洲二区在线视频| 国产日韩av高清| 无码人妻精品一区二区三区蜜桃91| 国语自产精品视频在线看8查询8| 久久综合久中文字幕青草| 毛片久久久久久| 成人一区二区| 综合国产在线视频| 美女100%露胸无遮挡| 成人激情视频| 爽爽爽爽爽爽爽成人免费观看| 中文天堂资源在线| 欧美日韩国产传媒| 中文字幕视频在线免费欧美日韩综合在线看 | 欧美日韩免费在线视频| 亚洲欧洲日本精品| 亚洲成人a级片| 欧美一区二区成人6969| 免费观看黄网站| y111111国产精品久久久| 精品国产制服丝袜高跟| 又大又长粗又爽又黄少妇视频| 日本在线视频一区二区三区| 精品乱人伦小说| 最近中文字幕无免费| 欧美电影在线观看完整版| 日韩经典第一页| 国产成人一区二区在线观看| 日韩电影二区| 美女精品久久久| 国产一级av毛片| 亚洲一区二区网站| 国产精品h片在线播放| 一级特黄录像免费看| 国产在线精品一区在线观看麻豆| 99re在线观看视频| 污视频在线免费| 日本一区二区三级电影在线观看| 中文字幕一区二区三区在线乱码 | 色呦呦免费观看| 久久久另类综合| 中国一区二区三区| 国产精品一二三产区| 欧洲中文字幕精品| 欧美xxxxxbbbbb| 国产精品qvod| 原创国产精品91| 欧美成人精品激情在线视频| 亚洲视频成人| 国产精选久久久久久| 亚洲精品久久久久久久久久| 久久先锋影音av| 久久99国产精品一区| 爱搞国产精品| 777精品伊人久久久久大香线蕉| yjizz视频| 三区四区不卡| 7777精品视频| 国产视频www| 久久久精品蜜桃| 免费看日b视频| 日韩天堂在线| 精品国产欧美一区二区| 卡一卡二卡三在线观看| 国产一区清纯| 成人性生交大片免费看视频直播| 天天操天天插天天射| 国产精品久久久久毛片软件| 国产精品专区在线| 国产一区二区三区精品在线观看 | 91偷拍精品一区二区三区| 黄色软件在线| 亚洲成av人综合在线观看| 性欧美1819| 国产一区二区三区不卡视频网站| 久久久久久久国产| 国产老女人乱淫免费| 国产亚洲欧洲997久久综合| av网站手机在线观看| 日韩一区中文| 国产一区二区三区久久精品| 欧美另类一区二区| 国产91精品免费| 大桥未久一区二区| 欧美91在线|欧美| 亚洲一区二区国产| 日产精品久久久| 成人av免费观看| 国产美女在线一区| 日韩免费高清视频网站| 久久五月天色综合| 91在线视频国产| 国产精品欧美极品| 国产区二区三区| 久久不见久久见中文字幕免费| 久久免费视频网| 精品久久无码中文字幕| 亚洲柠檬福利资源导航| av中文字幕网址| 99热在线成人| 成人久久18免费网站图片| 69久久夜色| 欧美日韩亚洲另类| 波多野结衣喷潮| 精品一区二区三区日韩| 中文字幕日韩精品久久| 9999精品视频| 欧美成人全部免费| www.久久久久久久久久| 一区二区国产盗摄色噜噜| 国产精品91av| 中文日韩欧美| 欧美一进一出视频| 久久久久伊人| 久久精品中文字幕免费mv| 国产露脸国语对白在线| 亚洲欧美日韩国产综合| 亚洲精品乱码久久久久久9色| 欧美va天堂| 国产一区视频观看| 欧美xoxoxo| 日韩一区二区久久久| www.中文字幕| 欧美性xxxx| 超碰人人人人人人人| 韩国毛片一区二区三区| 国产又粗又猛又爽又黄的网站 | 日韩av一区在线| 中文字幕日韩免费| 亚洲欧洲精品一区二区三区不卡| 韩国三级与黑人| 一本久道久久综合婷婷鲸鱼| 欧美一区亚洲二区| 亚洲精品tv| 久久久久久亚洲精品中文字幕| 人妻一区二区三区四区| 色综合久久综合网欧美综合网| 国产一二三av| 不卡的电视剧免费网站有什么| 欧美精品色婷婷五月综合| 成人在线丰满少妇av| 亚洲综合精品一区二区| 久久青草伊人| xxav国产精品美女主播| 日本激情视频网站| 欧美美女一区二区三区| 一级片免费网址| 国产精品传媒在线| 人妻无码中文久久久久专区| 奇米色一区二区三区四区| 日本免费黄色小视频| 国产欧美日韩精品一区二区三区 | 亚洲国产精品久久人人爱| 国产手机在线观看| 国产精品影视网| 91av俱乐部| 在线播放一区| 亚洲最大色综合成人av| 欧美1区二区| 亚洲xxxxx| av激情成人网| 7777精品久久久久久| 黄av在线播放| 国产一区二区三区网站| 乱色精品无码一区二区国产盗| 欧美性色黄大片| 日韩毛片在线视频| 亚洲天堂av一区| 精品人妻无码一区| aaa亚洲精品一二三区| 亚洲视频在线不卡| 日韩av一级片| 久久精品免费一区二区| 国产一区美女| 亚洲激情免费视频| 国产精品久久久久9999赢消| 日韩激情久久| 任你弄精品视频免费观看| 99国产高清| 警花av一区二区三区| 国产精品久久久久久搜索| 手机在线理论片| 97精品国产97久久久久久| 黄色在线观看视频网站| 久久亚洲欧美日韩精品专区| 香蕉视频国产在线观看| 亚洲全黄一级网站| 欧美捆绑视频| 亚洲热线99精品视频| 天天综合天天色| 亚洲国产天堂久久综合| 亚洲高清视频网站| 日韩女优毛片在线| 超碰在线人人干| 日韩欧美专区在线| 精品人妻无码一区二区| 欧美一区二区不卡视频| 国产精品久久久久久免费播放| 欧美日韩亚洲丝袜制服| 伊人影院中文字幕| 欧美日韩不卡在线| 伊人免费在线观看高清版| 欧美日韩亚洲综合一区| 在线观看国产一区二区三区| 欧美日韩久久一区| 国产美女精品视频国产| 日韩一区二区免费高清| www.黄色国产| 日韩h在线观看| 欧洲毛片在线| 中文字幕国产亚洲| 精品51国产黑色丝袜高跟鞋| 欧美成在线视频| 色网在线观看| 97久久超碰福利国产精品…| 两个人看的在线视频www| 青青草一区二区| jvid一区二区三区| 成人午夜在线影院| 综合久久成人| 欧美理论一区二区| 欧美一级精品| 国产又粗又爽又黄的视频| 国产一区激情| 毛片一区二区三区四区| 日本午夜精品视频在线观看 | 久久香蕉精品香蕉| 欧美在线一二三区| 911精品美国片911久久久| 欧美极品少妇无套实战| 夜久久久久久| 欧美午夜aaaaaa免费视频| 久久99国产精品免费| 免费在线观看日韩av| 久久女同性恋中文字幕| 国产小视频你懂的| 性做久久久久久| 最近中文字幕免费观看| 日韩你懂的在线播放| 视频在线不卡| 久久久精品2019中文字幕神马| www.超碰在线| 国产欧美日韩精品在线观看| 中文字幕一区二区三区四区久久| 免费av在线一区二区| 亚洲精品一区二区妖精| 波多野结衣家庭教师在线| 麻豆国产精品视频| 一级特级黄色片| 国产精品久久久久国产精品日日| 国产小视频在线观看免费| 色哟哟在线观看一区二区三区| 国产精品日韩无码| 亚洲精品少妇网址| 黄色网址在线免费观看| 欧美伊久线香蕉线新在线| 天天综合91| 日韩精品国内| 亚洲精品视频啊美女在线直播| 性chinese极品按摩| 99r国产精品| 91麻豆免费视频网站| 色偷偷成人一区二区三区91| 精品人妻一区二区三区浪潮在线 | 日韩久久精品电影| 成人在线播放免费观看| 国产精品69久久| 97久久综合精品久久久综合| 日韩高清专区| 亚洲综合精品| 91传媒理伦片在线观看| 亚洲视频每日更新| 成人黄色片在线观看| 精品一区电影国产| 国产色婷婷在线| 91色视频在线导航| 成人免费看片39| 国产成人av影视| 91麻豆精东视频| 欧美精品二区三区| 亚洲白拍色综合图区| av在线播放国产| 91精品国产综合久久久久久蜜臀| 丝袜美腿综合| 男人日女人bb视频| av午夜一区麻豆| 亚洲精品午夜久久久久久久| 欧美mv日韩mv亚洲| h视频在线免费观看| 成人黄色av网站| 91麻豆精品国产91久久久平台| 国产福利影院在线观看| 久久精品亚洲麻豆av一区二区 | 欧美一区二区三区在| 精品美女在线观看视频在线观看| 国产在线播放91| 99久久婷婷国产综合精品电影√| 天天操天天爱天天爽| 国产日本欧美一区二区| 蜜臀99久久精品久久久久小说 | 日韩一级片在线免费观看| 色婷婷国产精品| 国产在线超碰| 国产精品夜色7777狼人| 日韩毛片视频| 日本在线播放一区二区| 中文字幕亚洲区| 91精品国产乱码久久久| 久久精品久久久久久| 日韩区一区二| 精品视频免费在线播放| 91色在线porny| 99久久久无码国产精品免费蜜柚 | 亚洲高清在线观看| 鲁鲁在线中文| 日韩免费av一区二区三区| 久久精品国产精品亚洲红杏| 亚洲天堂黄色片| 亚洲第一区第二区| 中文在线免费二区三区| 日韩一区二区三区资源| 精品制服美女久久| 麻豆changesxxx国产| 亚洲精品国产免费| 日本少妇一区| 超碰人人爱人人| 91欧美一区二区| 一级黄色a视频| 欧美国产在线视频| 中日韩免视频上线全都免费| 在线免费视频a| 亚洲制服丝袜一区| 三级黄视频在线观看| 国产美女久久精品香蕉69| 欧美日韩在线大尺度| 熟女俱乐部一区二区视频在线| 在线观看欧美黄色| 日韩精品卡一| 欧美日韩在线一区二区三区| 精品一区二区三区在线观看| 国产午夜小视频| 深夜福利一区二区| 精品一区二区男人吃奶| 五月天激情视频在线观看| 一区二区三区日本| 国产一级在线| wwwxx欧美| 青娱乐精品视频在线| 久久婷婷国产麻豆91| 亚洲最新av在线| 成人在线tv视频| 亚洲一区二区三区四区五区| 午夜精品久久久久久久久久久| 麻豆系列在线观看| 久久伊人一区| 国产成人日日夜夜| 国产精品成人久久久| 国内外成人免费激情在线视频网站| 欧美aaaa视频| 丰满少妇一区二区| 欧美大片在线观看一区二区| 国产亚洲一区二区手机在线观看|