自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

體驗(yàn)超現(xiàn)代的 Vue ?Vue Macros 使用探索

開(kāi)發(fā) 前端
除此之外,Vue Macros 還提供了很多其他的宏或語(yǔ)法糖 可供大家使用。但是需要注意的是,目前有些 實(shí)驗(yàn)性質(zhì) 的功能需要注意謹(jǐn)慎使用。

什么是 Vue Macros

Vue Macros 是一個(gè) vue 的周邊庫(kù),可以在 Vue 2.7 以上的項(xiàng)目中進(jìn)行使用。并引入了一套高級(jí)功能(宏)和語(yǔ)法糖。

圖片圖片

這些宏是庫(kù)的一部分,主要是實(shí)現(xiàn)了 Vue 目前尚未正式采用的提案。

如何使用?

要開(kāi)始在項(xiàng)目中使用 Vue Macros,首先需要安裝該庫(kù):

使用 npm:npm install -D unplugin-vue-macros
使用 yarn:yarn add -D unplugin-vue-macros
使用 pnpm:pnpm add -D unplugin-vue-macros

安裝后,需要打包器進(jìn)行不同的配置。

如果使用 Vite ,則需要在 vite.config.js 文件中:

import { defineConfig } from "vite";
import VueMacros from "unplugin-vue-macros/vite";
import Vue from "@vitejs/plugin-vue";

export default defineConfig({
  plugins: [
    VueMacros({
      plugins: {
        vue: Vue(),
      },
    }),
  ],
});

對(duì)于 TypeScript 項(xiàng)目,tsconfig.json需要進(jìn)行額外配置:

{
  "compilerOptions": {
    "types": ["unplugin-vue-macros/macros-global"]
  }
}

核心 API

defineOptions(Vue 3.3 默認(rèn)支持了該功能)

defineOptions允許直接在內(nèi)部聲明組件選項(xiàng)<script setup>,而不需要單獨(dú)的<script>塊,也就是說(shuō)可以在一個(gè)宏函數(shù)中設(shè)置 name, props, emits, render。

對(duì)于喜歡組合 API 但仍想使用某些選項(xiàng) API 功能的開(kāi)發(fā)人員來(lái)說(shuō),這個(gè)宏非常有用。

<script setup lang='ts'>
defineOptions({
  name: "SearchComp",
});
</script>

defineSlots(Vue 3.3 默認(rèn)支持了該功能)

使用 defineSlots 可以在 <script setup> 中聲明 SFC 中插槽的類型

<script setup lang="ts">
defineSlots<{
  // 插槽名稱
  title: {
    // 作用域插槽
    foo: 'bar' | boolean
  }
}>()
</script>

defineProps

使用 $defineProps 可以正確地解構(gòu) props 的類型

<script setup lang="ts">
//       ?? ReactiveVariable<string[]>
const { foo } = $defineProps<{
  foo: string[]
}>()

//     ?? Ref<string[]>
const fooRef = $$(foo)
</script>

definePropsRefs

從 defineProps 中將返回 refs 而不是 reactive 對(duì)象,可以在不丟失響應(yīng)式的情況下解構(gòu) props。

<script setup lang="ts">
// ? 解構(gòu)不丟失響應(yīng)式
const { foo, bar } = definePropsRefs<{
  foo: string
  bar: number
}>()
//          ?? Ref<string>
console.log(foo.value, bar.value)
</script>

defineRender

使用 defineRender 可以直接在 <script setup> 中定義渲染函數(shù)。

<script setup lang="tsx">
// 可以直接傳遞 JSX
defineRender(
  <div>
    <span>Hello</span>
  </div>,
)

// 或使用渲染函數(shù)
defineRender(() => {
  return (
    <div>
      <h1>Hello World</h1>
    </div>
  )
})
</script>

shortVmodel

v-model 的語(yǔ)法糖。直接通過(guò)特定符號(hào)('::' | '$' | '*')代替 v-model。默認(rèn)使用 $ 符號(hào)

<template>
  <input $="msg" />
  <!-- => <input v-model="msg" /> -->
  <demo $msg="msg" />
  <!-- => <input v-model:msg="msg" /> -->
</template>

總結(jié)

除此之外,Vue Macros 還提供了很多其他的宏或 語(yǔ)法糖 可供大家使用。但是需要注意的是,目前有些 實(shí)驗(yàn)性質(zhì) 的功能需要注意謹(jǐn)慎使用。


責(zé)任編輯:武曉燕 來(lái)源: 程序員Sunday
相關(guān)推薦

2017-09-08 17:25:18

Vue探索實(shí)踐

2021-01-22 11:47:27

Vue.js響應(yīng)式代碼

2022-02-08 15:55:00

Vue組件庫(kù)Vue Demi

2025-03-05 10:01:44

2019-03-07 15:17:45

框架技術(shù)開(kāi)發(fā)

2023-06-27 06:56:32

2024-10-28 08:49:54

2024-10-17 16:39:18

2021-07-05 15:35:47

Vue前端代碼

2021-09-14 11:10:20

程序員技能開(kāi)發(fā)者

2022-01-26 11:00:58

源碼層面Vue3

2023-06-02 16:28:01

2024-11-06 10:16:22

2022-04-27 09:39:11

Mixin工具

2020-03-16 08:35:11

vue開(kāi)發(fā)組件

2023-10-12 12:43:16

組件Vue

2025-03-03 11:31:05

2020-09-28 15:48:37

開(kāi)源技術(shù) 軟件

2024-04-29 09:02:46

Vue頁(yè)面動(dòng)畫(huà)樣式

2025-02-03 00:00:00

Vue.js組件緩存
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)