体验超现代的 Vue ?Vue Macros 使用探索

除此之外,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还提供了很多其他的宏或 语法糖 可供大家使用。但是需要注意的是,目前有些实验性质的功能需要注意谨慎使用。

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2024年5月23日 17:09
下一篇 2024年5月23日 17:10

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信