偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

什么是 Vue Macros

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

圖片圖片

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

如何使用?

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

使用 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(),
      },
    }),
  ],
});

對于 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>塊,也就是說可以在一個宏函數(shù)中設(shè)置 name, props, emits, render。

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

<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 對象,可以在不丟失響應(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 的語法糖。直接通過特定符號('::' | '$' | '*')代替 v-model。默認(rèn)使用 $ 符號

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

總結(jié)

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


責(zé)任編輯:武曉燕 來源: 程序員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組件庫Vue Demi

2019-03-07 15:17:45

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

2023-06-27 06:56:32

2025-03-05 10:01:44

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

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

2022-01-26 11:00:58

源碼層面Vue3

2023-06-02 16:28:01

2024-11-06 10:16:22

2023-10-12 12:43:16

組件Vue

2020-03-16 08:35:11

vue開發(fā)組件

2022-04-27 09:39:11

Mixin工具

2020-09-28 15:48:37

開源技術(shù) 軟件

2025-03-03 11:31:05

2021-05-18 07:51:37

Suspense組件Vue3

2024-01-22 13:15:00

點(diǎn)贊
收藏

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