国产高清网站_亚洲一区二区综合_成人久久18免费网站_国产成人久久精品激情

您現(xiàn)在所在的位置:首頁 >關(guān)于奇酷 > 行業(yè)動態(tài) > Vue 3.3 發(fā)布了,來看看有哪些更新~

Vue 3.3 發(fā)布了,來看看有哪些更新~

來源:奇酷教育 發(fā)表于:

Vue 3 3 發(fā)布了,來看看有哪些更新~

  Vue 3.3 發(fā)布了,來看看有哪些更新~

 
  此版本專注于開發(fā)人員體驗改進-特別是SFC<script setup>與TypeScript的使用。與Vue語言工具[1](以前稱為Volar)的1.6版本一起,我們在將Vue與TypeScript一起使用時解決了許多長期存在的痛點。這篇文章概述了3.3中突出顯示的功能。有關(guān)更改的完整列表,請參閱GitHub上的完整更改日志[2]。
 
  依賴性更新升級到3.3時,建議也更新以下依賴項:
 
  volar / vue-tsc@^1.6.4
 
  vite@^4.3.5
 
  @vitejs/plugin-vue@^4.2.0
 
  vue-loader@^17.1.0(如果使用webpack或vue-cli)
 
  \<腳本設(shè)置> + TypeScript DX改進[3]
 
  宏中的導(dǎo)入和復(fù)雜類型支持[4]
  通用組件[5]
  更符合人體工程學(xué)的定義Emits[6]
  帶有定義插槽的類型插槽[7]
  實驗特征[8]
 
  響應(yīng)式 props 解構(gòu)[9]
  定義模型[10]
  其他值得注意的功能[11]
 
  定義選項[12]
  使用toRef和toValue提供更好的Getter支持[13]
  JSX導(dǎo)入源支持[14]
  維護基礎(chǔ)設(shè)施改進[15]
 
  1<script setup>+ TypeScript DX改進
  宏中的導(dǎo)入和復(fù)雜類型支持
  以前,defineProps和defineEmits的類型參數(shù)位置中使用的類型僅限于本地類型,并且僅支持類型文字和接口。這是因為Vue需要能夠分析 props 接口上的屬性,以便生成相應(yīng)的運行時選項。這個限制現(xiàn)在在3.3中得到了解決。編譯器現(xiàn)在可以解析導(dǎo)入的類型,并支持一組有限的復(fù)雜類型:
 
  vue
 
  <script setup lang="ts">
  import type { Props } from './foo'
 
  // imported + intersection type
  defineProps<Props & { extraProp?: string }>()
  </script>
  請注意,復(fù)雜類型的支持是基于AST的,因此不是100%全面的。一些需要實際類型分析的復(fù)雜類型,例如條件類型,不受支持。您可以為單個 prop 的類型使用條件類型,但不能使用整個 prop 對象。
 
  詳情:PR#8083[16]
  通用組件
  使用<script setup>的組件現(xiàn)在可以通過generic屬性接受通用類型參數(shù):
 
  vue
 
  <script setup lang="ts" generic="T">
  defineProps<{
    items: T[]
    selected: T
  }>()
  </script>
  generic的值與TypeScript中<...>之間的參數(shù)列表完全相同。例如,您可以使用多個參數(shù)、extends約束、默認類型和引用導(dǎo)入的類型:
 
  vue
 
  <script setup lang="ts" generic="T extends string | number, U extends Item">
  import type { Item } from './types'
  defineProps<{
    id: T
    list: U[]
  }>()
  </script>
  此功能以前需要顯式選擇加入,但現(xiàn)在在最新版本的volar / vue-tsc中默認啟用。
 
  討論:RFC#436[17]
  相關(guān):通用`defineComponent()`\-PR#7963[18]
  更符合人體工程學(xué)defineEmits
  以前,defineEmits的類型參數(shù)僅支持調(diào)用簽名語法:
 
  ts
 
  // BEFORE
  const emit = defineEmits<{
    (e: 'foo', id: number): void
    (e: 'bar', name: string, ...rest: any[]): void
  }>()
  The type matches the return type foremit, but is a bit verbose and awkward to write. 3.3 introduces a more ergonomic way of declaring emits with types:
 
  ts
 
  // AFTER
  const emit = defineEmits<{
    foo: [id: number]
    bar: [name: string, ...rest: any[]]
  }>()
  在類型字面值中,鍵是事件名稱,值是指定附加參數(shù)的數(shù)組類型。雖然不是必需的,但您可以使用標記的元組元素[19]來顯式,如上例所示。仍然支持調(diào)用簽名語法。
 
  鍵入的插槽defineSlots
  新的defineSlots宏可用于聲明預(yù)期插槽及其各自的預(yù)期插槽prop:
 
  vue
 
  <script setup lang="ts">
  defineSlots<{
    default?: (props: { msg: string }) => any
    item?: (props: { id: number }) => any
  }>()
  </script>
  defineSlots()只接受類型參數(shù),不接受運行時參數(shù)。類型參數(shù)應(yīng)該是類型文字,其中屬性鍵是插槽名稱,值是插槽函數(shù)。該函數(shù)的第一個參數(shù)是插槽期望接收的prop,其類型將用于模板中的插槽 prop。defineSlots的返回值與useSlots返回的插槽對象相同。目前的一些限制:
 
  所需的插槽檢查尚未在volar / vue-tsc中實現(xiàn)。
  插槽函數(shù)返回類型目前被忽略,可以是any,但我們將來可能會利用它進行插槽內(nèi)容檢查。
  還有一個相應(yīng)的slots選項用于defineComponent使用。這兩個API都沒有運行時影響,純粹作為IDE和vue-tsc的類型提示。
 
  詳情:PR#7982[20]
  2實驗特征
  響應(yīng)式 prop 解構(gòu)
  以前是現(xiàn)已放棄的響應(yīng)性變換的一部分,響應(yīng)式的解構(gòu)已被拆分為一個單獨的功能。該功能允許非結(jié)構(gòu)化的prop保留響應(yīng)性,并提供了一種更符合人體工程學(xué)的方式來聲明 props 默認值:
 
  vue
 
  <script setup>
  import { watchEffect } from 'vue'
 
  const { msg = 'hello' } = defineProps(['msg'])
 
  watchEffect(() => {
    // accessing `msg` in watchers and computed getters
    // tracks it as a dependency, just like accessing `props.msg`
    console.log(`msg is: ${msg}`)
  })
  </script>
 
  <template>{{ msg }}</template>
  此功能是實驗性的,需要明確選擇加入。
 
  詳情:RFC#502[21]
  defineModel
  以前,為了使組件支持與v-model雙向綁定,它需要(1)聲明prop,(2)在打算更新prop時發(fā)出相應(yīng)的update:propName事件:
 
  vue
 
  <!-- BEFORE -->
  <script setup>
  const props = defineProps(['modelValue'])
  const emit = defineEmits(['update:modelValue'])
  console.log(props.modelValue)
 
  function onInput(e) {
    emit('update:modelValue', e.target.value)
  }
  </script>
 
  <template>
    <input :value="modelValue" @input="onInput" />
  </template>
  3.3簡化了使用新的defineModel宏的使用。宏會自動注冊一個Props,并返回一個可以直接突變的引用:
 
  vue
 
  <!-- AFTER -->
  <script setup>
  const modelValue = defineModel()
  console.log(modelValue.value)
  </script>
 
  <template>
    <input v-model="modelValue" />
  </template>
  此功能是實驗性的,需要明確選擇加入。
 
  詳細信息:RFC#503[22]
  3其他值得注意的功能
  defineOptions
  新的defineOptions宏允許直接在<script setup>聲明組件選項,而無需單獨的<script>塊:
 
  vue
 
  <script setup>
  defineOptions({ inheritAttrs: false })
  </script>
  使用toRef和更好的Getter支持toValue
  toRef已增強,以支持將值/獲取器/現(xiàn)有引用標準化為引用:
 
  js
 
  // equivalent to ref(1)
  toRef(1)
  // creates a readonly ref that calls the getter on .value access
  toRef(() => props.foo)
  // returns existing refs as-is
  toRef(existingRef)
  使用getter調(diào)用toRef類似于computed,但當getter只是在沒有昂貴計算的情況下執(zhí)行屬性訪問時,效率會更高。新的toValue實用程序方法提供了相反的,將值/獲取器/引用標準化為值:
 
  toValue(1) //       --> 1
  toValue(ref(1)) //  --> 1
  toValue(() => 1) // --> 1
  toValue可以在可組合物中代替unref,以便您的可組合物可以接受獲取者作為響應(yīng)性數(shù)據(jù)源:
 
  // before: allocating unnecessary intermediate refs
  useFeature(computed(() => props.foo))
  useFeature(toRef(props, 'foo'))
 
  // after: more efficient and succinct
  useFeature(() => props.foo)
  toRef和toValue之間的關(guān)系與ref和unref之間的關(guān)系相似,主要區(qū)別是getter函數(shù)的特殊處理。
 
  詳情:PR#7997[23]
  JSX導(dǎo)入源支持
  目前,Vue的類型會自動注冊全局JSX類型。這可能會導(dǎo)致與其他需要JSX類型推理的庫一起使用的沖突,特別是React。從3.3開始,Vue支持通過TypeScript的jsxImportSource[24]選項指定JSX命名空間。這允許用戶根據(jù)他們的用例選擇全局或每個文件選擇加入。為了向后兼容,3.3仍然在全球范圍內(nèi)注冊JSX命名空間。我們計劃在3.4中刪除默認的全局注冊。如果您將TSX與Vue一起使用,您應(yīng)該在升級到3.3后將顯式j(luò)sxImportSource添加到tsconfig.json,以避免在3.4中損壞。
 
  4維護基礎(chǔ)設(shè)施改進
  此版本基于許多維護基礎(chǔ)設(shè)施改進,使我們能夠更自信地更快地移動:
 
  通過將類型檢查與 rollup 構(gòu)建分開,并從rollup-plugin-typescript2移動到rollup-plugin-esbuild,構(gòu)建速度快10倍。
  通過從Jest 遷移到 Vitest[25] 來加快測試速度。
  通過從@microsoft/api-extractor移動到rollup-plugin-dts更快地生成類型。
  通過ecosystem-ci [26]進行綜合回歸測試-在發(fā)布前捕獲主要生態(tài)系統(tǒng)依賴項的回歸!
国产高清网站_亚洲一区二区综合_成人久久18免费网站_国产成人久久精品激情

    <sup id="ys8cw"><kbd id="ys8cw"></kbd></sup>

    <sup id="ys8cw"><font id="ys8cw"><output id="ys8cw"></output></font></sup>

    亚洲综合激情另类小说区| 亚洲欧美一区二区视频| 亚洲精品日产精品乱码不卡| 亚洲精品成人a在线观看| 国产一区二区伦理| 日韩视频免费观看高清完整版| 欧美精品一区男女天堂| 日韩二区在线观看| 欧美卡1卡2卡| 热久久国产精品| 91麻豆精品国产91久久久久| 日韩精品一区二区三区三区免费| 国产女人水真多18毛片18精品视频| 亚洲视频一二区| 99久久精品久久久久久清纯| 国产精品久久久久久久岛一牛影视 | 亚洲综合丝袜美腿| 91网站在线播放| 悠悠色在线精品| 精品视频在线视频| 久久久久9999亚洲精品| 国产一区二区免费在线| 国产亚洲一区二区三区在线观看| 亚洲一二三区不卡| 91久久免费观看| 亚洲国产日韩在线一区模特| 欧美精品第1页| 亚洲人成网站在线| 日本大香伊一区二区三区| 亚洲一区二区三区四区五区黄| 国产一区二区三区观看| 欧美亚洲国产一区二区三区| 亚洲高清视频在线| 粉嫩av亚洲一区二区图片| 国产精品久久免费看| 久久精品国产第一区二区三区| 不卡视频免费播放| 亚洲一区二区三区视频在线| 欧美一级片在线| 粉嫩av一区二区三区在线播放| 91麻豆精品国产| 亚洲国产一区二区三区青草影视| 成人午夜精品在线| 亚洲综合久久久久| 欧美第一区第二区| 91在线国内视频| 麻豆精品新av中文字幕| 欧美激情一区二区三区全黄| 久久精品国产免费| 欧美蜜桃一区二区三区| 国产精品一品视频| 亚洲电影中文字幕在线观看| 在线视频一区二区三| 久久97超碰国产精品超碰| 欧美一区二区视频在线观看2022| 亚洲一级在线观看| 久久综合九色综合欧美就去吻| 久久爱另类一区二区小说| 日韩伦理电影网| 久久久久久久久久久99999| 91久久精品午夜一区二区| 狠狠色丁香久久婷婷综合丁香| 日韩欧美一级片| 色综合久久久久综合体桃花网| 国产精品欧美一级免费| 欧美精品国产精品| 色婷婷综合久色| 国产成人精品亚洲777人妖| 午夜电影久久久| 一区二区三区自拍| 日本一区二区久久| 精品国产制服丝袜高跟| 4438x成人网最大色成网站| 色综合久久99| 国产宾馆实践打屁股91| 麻豆成人久久精品二区三区小说| 精品日韩欧美在线| 欧美色视频在线| 在线观看区一区二| 91社区在线播放| 成年人国产精品| 国产69精品一区二区亚洲孕妇| 国产精品毛片a∨一区二区三区| 99久久99久久久精品齐齐| 国产麻豆午夜三级精品| 亚洲色图清纯唯美| 中文字幕欧美日韩一区| 色视频一区二区| av中文字幕一区| 成人动漫一区二区| 国产成人午夜精品5599| 国产盗摄一区二区三区| 自拍偷拍亚洲综合| 国产精品国产三级国产| 亚洲国产精品精华液2区45| 亚洲精品一区二区三区四区高清| 9i看片成人免费高清| 丁香桃色午夜亚洲一区二区三区| 一区二区三区四区五区视频在线观看 | 国产三级久久久| 久久精品网站免费观看| 国产亚洲一区二区三区| 中文字幕成人在线观看| 国产精品久久一级| 亚洲欧美韩国综合色| 亚洲自拍偷拍综合| 全部av―极品视觉盛宴亚洲| 亚洲成av人片一区二区梦乃| 精品国产乱码久久久久久闺蜜| 99久久er热在这里只有精品15| 亚洲五码中文字幕| 午夜视频在线观看一区二区| 国产婷婷色一区二区三区| 国产亚洲精品资源在线26u| 国产精品美女视频| 亚洲综合一区二区三区| 天天色图综合网| 亚洲同性gay激情无套| 一区二区三区在线观看国产| 欧美经典一区二区| 欧美老女人第四色| 91精品婷婷国产综合久久| 欧美mv和日韩mv国产网站| 欧美韩国日本一区| 亚洲天堂免费看| 日本一道高清亚洲日美韩| 极品少妇一区二区三区精品视频| 亚洲成人免费看| 韩国一区二区三区| 日本va欧美va瓶| 高清不卡一二三区| 欧美视频日韩视频在线观看| 久久综合色综合88| 亚洲免费观看在线观看| 麻豆高清免费国产一区| 91同城在线观看| 精品va天堂亚洲国产| 一区二区三区蜜桃网| 久久99精品久久久久久国产越南| 亚洲超丰满肉感bbw| 狠狠色伊人亚洲综合成人| 色999日韩国产欧美一区二区| 成人h精品动漫一区二区三区| 激情国产一区二区| 久久精品国产亚洲高清剧情介绍| 亚洲午夜久久久久| 国产真实乱对白精彩久久| 在线影院国内精品| 国产精品视频一二三区| 麻豆91在线播放| 精品视频在线免费看| 亚洲欧洲av另类| 国产一区二区三区四区五区入口| 国产一区二区在线免费观看| 在线视频中文字幕一区二区| 国产日产欧美一区| 日韩成人av影视| 九九**精品视频免费播放| 色综合久久久久综合| 国产午夜精品一区二区三区嫩草 | 91麻豆高清视频| 久久综合中文字幕| 日本欧美在线观看| 韩国av一区二区三区四区| 欧美日韩在线综合| 依依成人综合视频| av不卡一区二区三区| 国产欧美精品区一区二区三区| 国产精品久久久久一区二区三区共| 欧美韩国一区二区| 加勒比av一区二区| 欧美成人精品福利| 欧美国产一区二区| 国产一区二区在线看| 亚洲精品在线免费播放| 另类欧美日韩国产在线| 日韩一区二区视频| 日韩vs国产vs欧美| 欧美一区二区三区日韩视频| 国产午夜精品久久| 国产精品99久久久久久久女警 | 成人免费不卡视频| 久久久精品免费免费| 亚洲精品欧美激情| 一本大道久久a久久精品综合| 日韩午夜在线观看| 老司机免费视频一区二区| 欧美一区二区三区免费在线看| 日本一区二区三级电影在线观看 | 一区视频在线播放| 91在线播放网址| 亚洲综合在线免费观看| 久久综合综合久久综合| 精品国产青草久久久久福利| 国产中文一区二区三区| 中文字幕免费不卡| 91视频你懂的| 日欧美一区二区| 久久蜜桃香蕉精品一区二区三区| 亚洲精品免费在线|