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

體驗超現代的 Vue ?Vue Macros 使用探索

開發 前端
除此之外,Vue Macros 還提供了很多其他的宏或語法糖 可供大家使用。但是需要注意的是,目前有些 實驗性質 的功能需要注意謹慎使用。

什么是 Vue Macros

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

圖片圖片

這些宏是庫的一部分,主要是實現了 Vue 目前尚未正式采用的提案。

如何使用?

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

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

安裝后,需要打包器進行不同的配置。

如果使用 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 項目,tsconfig.json需要進行額外配置:

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

核心 API

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

defineOptions允許直接在內部聲明組件選項<script setup>,而不需要單獨的<script>塊,也就是說可以在一個宏函數中設置 name, props, emits, render。

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

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

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

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

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

defineProps

使用 $defineProps 可以正確地解構 props 的類型

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

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

definePropsRefs

從 defineProps 中將返回 refs 而不是 reactive 對象,可以在不丟失響應式的情況下解構 props。

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

defineRender

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

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

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

shortVmodel

v-model 的語法糖。直接通過特定符號('::' | '$' | '*')代替 v-model。默認使用 $ 符號

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

總結

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


責任編輯:武曉燕 來源: 程序員Sunday
相關推薦

2017-09-08 17:25:18

Vue探索實踐

2021-01-22 11:47:27

Vue.js響應式代碼

2022-02-08 15:55:00

Vue組件庫Vue Demi

2019-03-07 15:17:45

框架技術開發

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

程序員技能開發者

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開發組件

2022-04-27 09:39:11

Mixin工具

2020-09-28 15:48:37

開源技術 軟件

2025-03-03 11:31:05

2021-05-18 07:51:37

Suspense組件Vue3

2024-01-22 13:15:00

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品亚洲一区二区三区 | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 91精品国产乱码久久久久久久久 | 黄色网址在线免费观看 | 国内自拍视频在线观看 | 午夜精品一区二区三区在线观看 | 久久久久国产精品一区二区 | 91精品国产色综合久久不卡蜜臀 | 亚洲精品在线看 | 久久综合狠狠综合久久综合88 | 国产999精品久久久久久 | 狠狠操在线 | japanhd美女动| 一区二区三区四区五区在线视频 | 大学生a级毛片免费视频 | 国产成人高清成人av片在线看 | 亚洲精品在线观看视频 | 一级毛片视频在线 | 亚洲成人av一区二区 | 欧美日韩国产高清 | 欧美日韩中文字幕 | 午夜精品| 99热精品6| 免费观看av网站 | 热re99久久精品国产99热 | 欧美一区二区三区精品 | 免费一级黄色电影 | 日韩av电影在线观看 | 亚洲三区在线观看 | 一二区电影| 在线免费观看a级片 | 国产最新精品视频 | 久久综合九九 | 羞羞视频免费观 | 国产精品五区 | 日本精品国产 | 在线免费黄色小视频 | 激情婷婷成人 | 中文字幕日本一区二区 | 日本久久久一区二区三区 | 天天爽天天操 |