Vuetensils 0.10: Vue 3, Vite, Better Forms, and More

163 阅读4分钟

DZone>Web Dev Zone>Vuetensils 0.10: Vue 3, Vite, Better Forms, and More

Vuetensils 0.10: Vue 3, Vite, Better Forms, and More

我最近发布了Vuetensils的最新版本。下面是Vuetensils最吸引人的一些功能,以及如何利用它们。

Austin Gil user avatar通过

奥斯汀-吉尔

-

1月31日,22 - Web Dev Zone -新闻

喜欢 (2)

评论

保存

鸣叫

390次浏览

加入DZone社区,获得完整的会员体验。

免费加入

我最近发布了Vuetensils的最新版本,想花点时间分享一下我最兴奋的一些功能。

Vue 3和Vite

对于任何从事新项目或新升级项目的人来说都是个好消息。Vuetensils现在可以和Vue 3一起工作。我们利用了 vue-demi来做一个小魔术来检查当前的版本是Vue 2还是3。

不幸的是,这确实意味着在项目中加入了我的第一个依赖项,但它允许支持最多的人,而不必维护两个项目。这使得我们更容易不断向大家推送新的功能,而不仅仅是Vue 3上的人们。

除了支持Vue 3之外,我还修复了一些阻碍支持Vite的因素。Vite是一个很棒的工具,我一直在用它进行开发(我甚至在开发一个叫Particles CSS的插件),所以它很好地维护了

VInput的改进

这可能是我最喜欢的新功能。VInput一直支持类和状态的一些验证错误逻辑,但我也一直在为生成验证错误信息而进行API设计。

许多其他的库为你做这个,只是决定错误信息是什么。这对这个库来说,设计责任有点大,但我想出了一个我相当满意的解决方案。

你现在可以向VInput提供一个errors 对象,并将适当的错误信息映射到相应的验证属性中。

它看起来像这样。

JavaScript

<template>
  <VInput
    label="Pick a number between 1 and 10"
    name="one-to-ten"
    type="number"
    required
    min="1"
    max="10"
    :errors="{
      required: 'This field is required',
      min: (n) => `Must be greater than ${n}`,
      max: (n) => `Must be less than ${n}`,
    }"
  >
  </VInput>
</template>

你可以为要显示的错误信息提供一个字符串,或者提供一个返回字符串的函数。该函数提供的是相应属性的值。

除了这个验证的改进,我还发现了我原来的验证逻辑中的一个错误,现在已经被修复了。我猜想还没有人碰到过这个bug。

VForm的改进

VForm现在接受一个preventNavigation 道具作为Boolean ,它将观察你的表单是否有任何变化。如果有任何输入的变化,浏览器会在离开之前通知用户,除非表单已经提交。

另一个被添加到Form中的便利是validinvalid 自定义事件。这些事件的工作原理与默认的submit 事件非常相似,但它们只在表单有效或无效时运行(如其名称所示)。

JavaScript

<template>
  <VForm @valid="onValid" @invalid="onInvalid" novalidate>
    <label>
      Name:
      <input name="name" required />
    </label>

    <button type="submit">
      Submit
    </button>
  </VForm>
</template>

<script>
export default {
  methods: {
    onValid(event) {
      event.preventDefault()
      console.log('Everything looks good', event)
    },
    onInvalid(event) {
      event.preventDefault()
      console.log('Please fix the errors and try again', event)
    },
  }
}
</script>

这里的想法是减少你的应用程序在提交表单时可能会有的一些逻辑,并将功能分割开来。

VTabs重写

我对VTabs组件的第一次尝试还不错,但不是很好。没有一个很好的选项来定制标签的内容。

在这个新版本中,我对标签的创建方式更加满意。这都是基于标签和面板的自定义插槽名称。

它看起来像这样。

JavaScript

<template>
  <VTabs>
    <template #tab-1>Tab 1</template>
    <template #panel-1>
      Here's the content for tabpanel 1.
    </template>

    <template #tab-2>Tab 2</template>
    <template #panel-2>
      Here's the content for tabpanel 2.
    </template>

    <template #tab-3>Tab 3</template>
    <template #panel-3>
      Here's the content for tabpanel 3.
    </template>
  </VTabs>
</template>

唯一的要求是,你的标签名称以tab- 为前缀,面板名称以panel- 为前缀。标签和面板通过共享相同的后缀来连接。

这使得学习曲线相当简单,有很大的灵活性。

VDate i18n

由于Benjamin Courtel的一些工作,有一个小的PR来改善VDate组件的国际化支持。你现在可以为导航按钮提供自定义标签。

TypeScript

TypeScript支持在上一版本中已经部分存在,但几乎没有帮助任何人的方式。组件的类型定义没有被生成。这是一个忽略的问题。

现在,一些新的工具已经发布,而我也有时间,Vuetensils组件与类型定义文件一起发货,感谢 vue-typegen作者:Guillaume Chau

这应该会使库的使用变得更加顺畅。

文档和依赖性

我注意到我的一些构建破坏了文档网站,所以我不得不深入研究并更新依赖关系,压制一些bug。

最终,我找到了潜在的问题并提交了一份PR。这个问题应该只对那些对项目有贡献的人有影响,因为文档也是开发环境。

主题。

vue.js, web开发, 编程, javascript, 前端, web开发区, vuetensils

经Austin Gil许可,发表于DZone。在此查看原文。

DZone贡献者所表达的观点属于他们自己。

在DZone上受欢迎


评论

网络开发 合作伙伴资源