精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲国产综合视频在线观看| 国产成人综合亚洲91猫咪| 亚洲欧美中文字幕在线一区| www.xxx亚洲| 黄色av电影在线播放| 高清不卡一区二区在线| 欧美专区第一页| 蜜桃av.com| 久久超级碰碰| 在线不卡一区二区| 男人添女人下面高潮视频| 成a人v在线播放| 成人听书哪个软件好| 日韩美女中文字幕| 久草福利资源在线观看| 国产欧美日韩精品一区二区免费 | 97人妻一区二区精品视频| 国产精品国内免费一区二区三区| 亚洲精品av在线| 三年中文在线观看免费大全中国| 一二三四视频在线中文| 亚洲欧洲综合另类| 午夜精品一区二区三区在线观看| 国产小视频免费观看| 蜜桃视频免费观看一区| 69**夜色精品国产69乱| 动漫性做爰视频| 欧美精品羞羞答答| 日韩av在线天堂网| 久久久久久久穴| 中文字幕综合| 在线观看中文字幕不卡| 干日本少妇首页| 国产亚av手机在线观看| 亚洲欧美日韩国产综合在线| 欧美日韩亚洲免费| 天天操天天干天天插| 国产成人精品亚洲午夜麻豆| 成人国产精品久久久久久亚洲| 无码无套少妇毛多18pxxxx| 99精品视频免费全部在线| 欧美大片在线看| 国产精品嫩草影院俄罗斯| 第一会所sis001亚洲| 亚洲欧美国产精品久久久久久久 | 久久久免费精品| 紧身裙女教师波多野结衣| 青青草原综合久久大伊人精品| 亚洲视频免费一区| 午夜理伦三级做爰电影| 丝袜美腿综合| 国产视频在线一区二区| jlzzjizz在线播放观看| 奇米影视777在线欧美电影观看 | 日本道在线观看一区二区| 成年人网站免费视频| 国产99re66在线视频| 亚洲午夜久久久久久久久久久 | 久久综合伊人77777麻豆| 国模无码一区二区三区| 国产伦精品一区二区三区视频青涩| 91久久久久久久久| 国产成年妇视频| 懂色av一区二区三区免费看| 成人xxxxx色| 韩国av电影在线观看| www..com久久爱| 免费国产一区二区| 国产永久av在线| 国产精品久久久99| 青青草视频国产| 暖暖在线中文免费日本| 午夜精品在线看| 黄色高清无遮挡| 超碰这里只有精品| 制服.丝袜.亚洲.另类.中文| 国产美女视频免费看| 亚洲视频三区| 亚洲精品久久久一区二区三区| 丰满少妇在线观看资源站| 精品视频亚洲| 欧美成人自拍视频| 一级片免费网址| 秋霞影院一区二区| 亚洲精品欧美日韩专区| 午夜视频在线播放| 国产精品久久久久久久久图文区| 亚洲av首页在线| 国产精选在线| 欧美日韩综合不卡| 国产免费a级片| 久久av影视| 久久不射电影网| 台湾佬中文在线| 国产在线播放一区| 久久精品国产一区二区三区不卡| 在线观看免费网站黄| 一区二区免费在线| 日韩福利视频在线| 盗摄系列偷拍视频精品tp| 在线观看欧美日韩国产| 国产亚洲欧美精品久久久www| 久久激情中文| 97中文在线观看| www日韩tube| 亚洲成a人v欧美综合天堂下载| 亚洲少妇久久久| 红杏视频成人| 麻豆乱码国产一区二区三区 | 免费成人在线观看av| www在线观看播放免费视频日本| 欧美视频中文在线看| 精品国产午夜福利在线观看| 国产一区日韩| 欧美激情2020午夜免费观看| 中文字幕一区二区人妻| 91片在线免费观看| 欧美美女黄色网| 日韩专区视频网站| 亚洲欧美日韩精品| 欧美不卡视频在线观看| 国产麻豆精品视频| 婷婷五月色综合| 伊人成综合网站| 精品裸体舞一区二区三区| www.日本高清视频| 日韩精品一级中文字幕精品视频免费观看| 91在线短视频| 黄色网址视频在线观看| 欧洲精品在线观看| 波多野结衣福利| 国产欧美日韩亚洲一区二区三区| 99re国产| 亚洲淫性视频| 91精品久久久久久久99蜜桃| 免费成人深夜蜜桃视频 | 国产精品99久久久精品无码| 区一区二视频| 国产精品精品一区二区三区午夜版 | 日韩视频永久免费| 美女三级黄色片| 免费观看一级特黄欧美大片| 日本一区二区在线视频| 日韩电影免费观看高清完整版| 亚洲国产精品久久久久| 国产一级片免费看| 国产69精品一区二区亚洲孕妇| 亚洲精品国产suv一区88| 久久9999免费视频| 欧美成人免费全部| 精品久久人妻av中文字幕| 亚洲日本韩国一区| av地址在线观看| 欧美a级在线| 草莓视频一区| 国产不卡人人| 精品一区二区三区三区| 亚洲欧美综合自拍| 国产午夜精品一区二区三区四区| 97视频在线免费播放| 精品国产一区二区三区av片| 国产成人在线视频| eeuss影院在线播放| 欧美日韩精品一二三区| 久久免费看少妇高潮v片特黄| 国产乱人伦偷精品视频不卡| av片在线免费| 色婷婷狠狠五月综合天色拍 | 久久影院资源网| 性一交一乱一色一视频麻豆| 亚洲成人自拍偷拍| a级大片在线观看| 美女看a上一区| 香蕉视频在线网址| silk一区二区三区精品视频| 欧美尤物巨大精品爽| www在线播放| 日韩欧美国产一区在线观看| 成年人免费高清视频| 国产午夜精品理论片a级大结局| 自拍偷拍21p| 欧美激情视频一区二区三区免费| 久久96国产精品久久99软件| 国产综合色区在线观看| 久久国产精品电影| 性xxxx视频播放免费| 欧美日韩在线电影| 国产一级一片免费播放放a| 久久一区二区三区四区| 天天操精品视频| 国产精品久久777777毛茸茸| 亚洲精品国产系列| 国产乱人伦精品一区| 国产精品人人做人人爽| h片精品在线观看| 在线视频亚洲欧美| 秋霞视频一区二区| 欧美日韩国产123区| 91蜜桃视频在线观看| 中文字幕视频一区| 中日韩精品一区二区三区| 国内精品写真在线观看| 免费无遮挡无码永久视频| 欧美黄色大片在线观看| 久久99久久精品国产| 国产精品高清一区二区| 日本欧美黄网站| 国产美女一区视频| 日韩在线视频观看| 久久久久久久久亚洲精品| 日韩一区二区视频在线观看| 欧美人一级淫片a免费播放| 一级中文字幕一区二区| 黄色av片三级三级三级免费看| 成人av综合在线| 中文字幕剧情在线观看| 日本成人中文字幕在线视频| 黄色大片在线免费看| 综合日韩在线| 一区不卡视频| 日韩av在线中文字幕| 乱一区二区三区在线播放| 一本色道69色精品综合久久| 国产欧美精品一区二区| 99re66热这里只有精品4| 性色av一区二区三区红粉影视| h视频在线免费观看| 自拍偷拍亚洲在线| 黄色av网址在线免费观看| 日韩福利视频在线观看| 天堂中文在线看| 欧美精品一区二区久久久| 99久久免费国产精精品| 欧美日韩国产精选| 中文字幕一区二区在线视频| 欧美亚洲综合网| 无码视频一区二区三区| 一本一道波多野结衣一区二区| 粉嫩aⅴ一区二区三区| 亚洲成人免费视| 国产精品30p| 亚洲成av人片在线| 日韩高清精品免费观看| 午夜影视日本亚洲欧洲精品| 国产精品6666| 婷婷国产v国产偷v亚洲高清| 亚洲综合一二三| 婷婷久久综合九色国产成人| 91精品国产乱码久久久张津瑜| 午夜精品一区二区三区免费视频 | 午夜精品电影在线观看| 精品久久久亚洲| 五月天色一区| 91蜜臀精品国产自偷在线| 在线免费观看成人| 性xxxx欧美老肥妇牲乱| 91嫩草国产丨精品入口麻豆| 欧美一区视频| 国产高清www| 亚洲综合国产| 无码少妇一区二区三区芒果| 麻豆91小视频| 中文字幕avav| av毛片久久久久**hd| 日韩人妻无码精品综合区| 国产欧美va欧美不卡在线| 免费看特级毛片| 亚洲国产欧美在线人成| 欧美一级片免费在线观看| 在线观看日韩电影| 国产农村妇女毛片精品| 精品国产乱码久久久久久浪潮| 五十路在线视频| 在线观看91久久久久久| 超碰电影在线播放| 992tv成人免费影院| 日产精品一区| 91视频九色网站| 成人在线视频你懂的| 牛人盗摄一区二区三区视频| 久久密一区二区三区| www.好吊操| 国产精品婷婷| 五月激情五月婷婷| 白白色亚洲国产精品| 久久午夜福利电影| 一区二区久久久| 精品成人无码久久久久久| 欧美日韩国产影片| 少妇又色又爽又黄的视频| 一区二区三区四区视频| 青草影视电视剧免费播放在线观看| 欧美在线激情网| 精品一区二区三区免费看| 免费试看一区| 欧美在线播放| 国产欧美高清在线| 国产成人在线电影| 手机毛片在线观看| 黄网动漫久久久| 国产精品毛片一区视频播| 精品亚洲男同gayvideo网站| 2024最新电影免费在线观看| 国产成人短视频| 成人另类视频| 2025韩国大尺度电影| 亚洲一区亚洲| 久久久精品人妻一区二区三区| 国产欧美日韩另类一区| 精品91久久久| 日韩女优视频免费观看| 日本在线人成| 国产成人一区二区三区小说| 欧美国产极品| 男人c女人视频| 精品综合久久久久久8888| 中文字幕 自拍| 天天综合天天做天天综合| 国产99久久九九精品无码免费| 国产一区二区成人| 日本黄色免费在线| 国产66精品久久久久999小说| 999久久久精品国产| 成年人免费大片| 久久亚洲精华国产精华液 | 精品日韩成人av| 欧美jizzhd欧美| 国产精品视频久久久| 蜜桃国内精品久久久久软件9| 国产原创中文在线观看| 国产91精品精华液一区二区三区| 全网免费在线播放视频入口 | 欧美激情第二页| www.色就是色.com| 国产精品美女久久久久久久网站| 亚洲毛片一区二区三区| 精品无人区太爽高潮在线播放| 波多野结衣中文字幕久久| 国产精品国模大尺度私拍| 欧美精品入口| 免费黄视频在线观看| 亚洲黄色尤物视频| 亚洲爱爱综合网| 欧美国产日韩二区| 中文在线综合| 国产精品www在线观看| 成人一区在线看| 九九九国产视频| 亚洲高清在线观看| 黄视频网站在线观看| 久久精品国产一区二区三区日韩| 先锋亚洲精品| 亚洲第一综合网| 欧美日韩国产小视频在线观看| 午夜在线播放| 亚洲www永久成人夜色| 午夜久久一区| 国产伦精品一区三区精东| 粉嫩av一区二区三区免费野| 亚洲av片在线观看| 国产精品aaaa| 91精品1区| 少妇被狂c下部羞羞漫画| 欧美日韩日本国产| 91高清在线| 亚洲xxx大片| 99亚洲精品| 日本理论中文字幕| 7777精品久久久大香线蕉| 久草在线视频福利| 久久波多野结衣| 日本不卡视频一二三区| 破处女黄色一级片| 亚洲国产小视频| 视频一区在线免费看| 青少年xxxxx性开放hg| 成人精品国产福利| 免费看污视频的网站| 欧美成人合集magnet| 色综合www| 欧美性受xxxx黒人xyx性爽| 五月婷婷激情综合| 中文字幕在线视频区| 丁香五月网久久综合| 日韩精品欧美精品| 青青草原国产视频| 亚洲欧美中文日韩在线| 久久综合给合| 成人在线免费播放视频| ㊣最新国产の精品bt伙计久久| 天天操天天干天天爱| 成人午夜在线观看| 香蕉久久a毛片| 极品盗摄国产盗摄合集| 亚洲欧美日韩国产中文专区| 视频亚洲一区二区| 欧美三级理论片| 无码av免费一区二区三区试看| 日本三级在线视频| 免费在线观看一区二区|