成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

什么是 Vue Macros

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

圖片圖片

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

如何使用?

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

對(duì)于喜歡組合 API 但仍想使用某些選項(xiàng) API 功能的開發(fā)人員來說,這個(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 的語法糖。直接通過特定符號(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 還提供了很多其他的宏或 語法糖 可供大家使用。但是需要注意的是,目前有些 實(shí)驗(yàn)性質(zhì) 的功能需要注意謹(jǐn)慎使用。


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

2017-09-08 17:25:18

Vue探索實(shí)踐

2022-02-08 15:55:00

Vue組件庫(kù)Vue Demi

2021-01-22 11:47:27

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

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ù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲iv一区二区三区 | 在线āv视频 | 国产精品成人在线 | 日韩视频精品在线 | 国产一级在线观看 | 99精品在线观看 | 日韩精品在线观看一区二区 | 国产一区在线视频 | 黄色一级特级片 | 国产精品久久久久久高潮 | 亚洲精品视频在线观看免费 | 久久精品69 | 人成在线视频 | 男人影音 | 亚洲精品久久久蜜桃 | 欧美国产精品 | 中文天堂在线一区 | 日韩欧美一区二区在线播放 | 亚洲综合天堂网 | 精品国产高清一区二区三区 | 成人精品系列 | 国产午夜精品一区二区三区 | 国产精品免费一区二区三区四区 | 女朋友的闺蜜3韩国三级 | 亚洲第一区久久 | 久久久久国产精品人 | 91精品国产综合久久婷婷香蕉 | 日韩精品在线看 | 久久夜夜| 伊人久久在线 | 亚洲一区二区电影网 | 日日夜夜精品免费视频 | 亚洲电影在线播放 | 国产精品成人av | 日韩一区二区三区精品 | 波多野吉衣在线播放 | 羞羞的视频在线看 | 亚洲一区二区在线电影 | 久久久精品一区二区 | a级性视频| 国产精品美女久久久久久免费 |