Conheça 作为 Vue 3 的新功能
这是 Vueschool 的文本翻译,它是 Vueschool 3 中的新功能。 Filip Rakowski 的优秀作品是由Filip Rakowski提供的,非常适合您。 Vamos ao texto?
没有前面的反面,没有像 Vue 3 那样的出色表现。现在,您可以使用新版 Vue irão 中的应用程序脚本来执行良好的操作,而不是一个良好的部分。重要的是,新版本发布后,我们将不再进行开发。
Como você poderia esperar,Vue 3 是一系列新的和情感特征。 Felizmente 是一个 Vue 介绍设备,它是一个伟大的工具,是一个与 API 相关的高级工具,可以作为新的语法来使用 Vue 2 的新功能。
Vamos começar com a API,você provavelmente já ouviu falar a respeito...
组合 API
Composition API 是 Vue 中的一个语法功能。这是一个完整的新逻辑和组织组织。
正常情况下,我们的组件是由Options API构建的。辅助逻辑组件 Vue 的data主要缺点是 JavaScript 本身的主要缺点methods。computed需要使用不需要的模板来进行辅助操作this。由 baixo do capô 提供,编译器可以准确地转换为 um código 功能的属性。因此,nós não temos os benefícios de coisas como auto sugestões(自动完成编辑)或checagem de tipo (类型检查)。
Composition API 解决了这个问题,解释了 JavaScript 组件的属性。 Vue核心团队以“结合 API 为基础的功能,允许组合灵活的组件逻辑”来描述组合 API。使用 Composition API 编写脚本,可以合法地使用它,并且可以轻松地进行理解和理解。
Vamos 是一个新的组件 API 的简单示例,其功能如下:
<template>
<button @click="increment">
Count is: {{ count }}, double is {{ double }}, click to increment.
</button>
</template>
<script>
import { ref, computed, onMounted } from 'vue'
export default {
setup() {
const count = ref(0)
const double = computed(() => count.value * 2)
function increment() {
count.value++
}
onMounted(() => console.log('component mounted!'))
return {
count,
double,
increment
}
}
}
</script>
集会,我们将讨论以下内容:
import { ref, computed, onMounted } from 'vue'
首先,一个 Composition API 展示了组件功能的属性,它是最重要的功能。在此,我们将详细介绍您的实际操作、功能ref、计算方法computed以及获取生活周期的信息onMounted。
Agora,você provavelmente está se perguntando:o que é este misterioso método setup?
export default {
setup() {
}
}
您可以使用模板的属性和功能来恢复功能。 É só isso。目前,我们已声明属性、计算属性、观察者、生命周期钩子和无模板的返回项。
但是,您无法返回设置功能,也无法显示任何模板。
const count = ref(0)
没有任何声明可以count使用任何功能ref。 Ela pode encapsular qualquer valor valor primitivo ou objeto e retorná-lo como uma propriedade. O valor passado será mantido na propriedade valueda Referência criada。例如,您可以通过以下方式获得价值,并通过查马尔获得count明确的信息count.value。
const double = computed(() => count.value * 2)
function increment() {
count.value++
}
... 这是所有声明的所有信息的详细说明,是计算double和功能的属性increment。
onMounted(() => console.log('component mounted!'))
Com o hook onMounted nos estamos exibindo alguma mensagem quando o componente é montado so paramostrar para você que você pode 😉。
return {
count,
double,
increment
}
没有最终的回复作为属性count和double方法,没有increment模板。
<template>
<button @click="increment">
Count is: {{ count }}, double is {{ double }}. Click to increment.
</button>
</template>
瞧! Agora 的功能可以作为属性和功能,setup并通过没有任何模板的方式来声明所有 Antiga Options API 的信息。
示例很简单,可以通过选项API轻松实现。 O verdadeiro benefício da nova Composition API não é apenas desenvolver de uma forma different, os benefícios se revelam quando se trata de reutilizar nosso código/lógica.
重新使用 Composition API
Há maisvantagens na nova Composition API。 Vamos falar sobre reuso de codigo。正常情况下,我们可以将所有组件与选项进行比较 -混合和作用域插槽。 Ambos tem suas desvantagens。
Vamos dizer que nos queremos extrair uma funcionalidade chamadacounter和 reaproveitá-la em outro 组件。 Abaixo, você pode ver como poderíamos fazer isso usando as API disponíveis ea nova Composition API:
Vamos começar com mixins :
import CounterMixin from './mixins/counter'
export default {
mixins: [CounterMixin]
}
混合的主要缺点是不能使用任何其他组件。这是一个很困难的问题,但它是一个与现有属性和功能有关的名称的冲突。
Agora os作用域插槽。
<template>
<Counter v-slot="{ count, increment }">
{{ count }}
<button @click="increment">Increment</button>
</Counter>
</template>
com范围内的老虎机可以通过其他方式进行操作,v-slot以便可以轻松地进行操作。一个缺点是,如果您无法访问某个组件template,则无法访问该组件Counter。
Agora,vamos ver como fica com 组合 API:
function useCounter() {
const count = ref(0)
function increment () { count.value++ }
return {
count,
incrememt
}
}
export default {
setup () {
const { count, increment } = useCounter()
return {
count,
increment
}
}
}
Muito mais优雅的não é?template任何组件都不能受到任何限制,并且counter不能继续使用。一些额外的、自动完成的术语的好处是在编辑器中自动完成的,并且可以恢复算法属性的功能useCounter。没有魔法,编辑器可以对提示和建议进行检查。
Também é uma 是美国陆军三级图书馆的优雅形式。例如,使用Vuex 时,使用的 VuexuseStore函数是Vue 对象原型的一个功能( this.$store)。通过使用 Vue 插件来实现一个神奇的功能。
const { commit, dispatch } = useStore()
如果您想了解更多的 Composition API 和使用情况,我们建议您加强使用该文档的时间,以了解新 API 的说明或具体情况,并了解使用情况的更多信息。这是一个优秀的存储库,由Thorsten Lünborg提供的 Composition API 示例,是Vue核心团队的成员。
使用 montagem/configuração 全局 API 进行修改
在实际应用中,我们会遇到一些重大问题。 Vamos ver como isso irá ficar:
import Vue from 'vue'
import App from './App.vue'
Vue.config.ignoredElements = [/^app-/]
Vue.use(/* ... */)
Vue.mixin(/* ... */)
Vue.component(/* ... */)
Vue.directive(/* ... */)
new Vue({
render: h => h(App)
}).$mount('#app')
Vue 的全局用途实际上可以证明 Vue 对象的配置和新实例。 Qualquer mudança feita num objeto Vue irá afetar todas as outras instâncias e componentes.
Agora,您可以使用 Vue 3 的功能:
import { createApp } from 'vue'
import App from './App.vue'
const app = createApp(App)
app.config.ignoredElements = [/^app-/]
app.use(/* ... */)
app.mixin(/* ... */)
app.component(/* ... */)
app.directive(/* ... */)
app.mount('#app')
一般来说,我们可以通过配置或定义应用程序来定义 Vue 的配置和功能createApp。
实际上,要修改 Vue 对象的第三个解决方案,请在其他应用程序中使用该方法(特别是在全球范围内混合),而不是在 Vue 3 中使用。
API 的目的是发送有关 RFC 的信息,这对未来的发展具有重要意义。
片段
除了 Vue 3 的片段之外,我们还需要更多的情感。
O que sãofragros? Bem,se você criar 组件 Vue,eles só podem ter apenas um nocentral。
这是重要的组成部分:
<template>
<div>Hello</div>
<div>World</div>
</template>
Vue 的实例代表了 Vue 与 DOM 元素的关联。这是一个由多个 DOM 组成的声音形式,它是 Vue 实例的基本功能。
关于 React teve 或 mesmo 问题的讨论。这是虚拟查马多元素的解决方案Fragment。请注意以下事项:
class Columns extends React.Component {
render() {
return (
<React.Fragment>
<td>Hello</td>
<td>World</td>
</React.Fragment>
);
}
}
DOM 元素与 DOM 中的正常元素无关Fragments,也不是在 DOM 中渲染的。 Dessa forma,podemos vincula 组件的功能是 um único elemento sem criar um nó DOM 冗余。
现在,您可以使用FragmentsVue 3 的图书馆vue-fragments和 Vue 3 立即为您提供服务!
悬念
React 是 Vue 和组件的一个伟大的生态理念Suspense。
Suspense悬挂一个独立组件的渲染和后备组件的渲染*可以使用该组件的条件。在伦敦 Vue 期间,Evan 您将了解有关主题的最短 API 或更多有关 API 的信息。 Acontece que o Suspenseserá apenas um 组件 com 插槽:
<Suspense>
<template >
<Suspended-component />
</template>
<template #fallback>
Loading...
</template>
</Suspense>
Um conteúdo defallback * Será exibido até que o componente Suspended-componentseja inteiramente renderizado.Suspense您可以下载组件,将组件关联起来,然后执行该组件的功能setup。
多款 V 型模型
v-model我们用这个指令来实现双向数据绑定和dado 组件。 Nós podemos passar uma propriedade reativa 和修改 de dentro de um 组件。
连接配方成分v-model。
<input v-model="property />
您可以使用v-modelcom cada 组件吗?由 baixo do capô ele é apenas um atalho para um mecanismo de passar uma propriedade valuee ouvir um eventto input。 Reescrevendo o exemplo acima para a sintaxe abaixo teremos o mesmo efeito:
<input
v-bind:value="property"
v-on:input="property = $event.target.value"
/>
我们将改变所有属性的名称以及事件的名称,并将其作为model组件的属性。
model: {
prop: 'checked',
event: 'change'
}
Como você pode ver a diretiva v-modelpode nos dar um açucar sintático muito util quando queremos ter um nossos 组件中的双向数据绑定。 Infelizmente você só pode ter apenas um v-modelpor componente。
Felizmente,这是 Vue 3 的问题! Você poderá dar nomes às propriedades do v-modele ter quantas delas desejar.以下是v-model配方成分的示例:
<InviteeForm
v-model:name="inviteeName"
v-model:email="inviteeEmail"
/>
API 的目的是发送RFC或未来的潜在潜力。
门户
特别是组件的门户决定了实际组件的渲染。它的特点 是原生实现无 React。这是 React 官方文档:
“Os portais fornecem uma maneira first-class de renderizar filhos em um no DOM que Existe fora da hierarquia DOM do componente pai.”
您可以使用激光雷达通讯方式、弹出窗口和页面顶部的其他组件。在使用门户时,您可以通过 CSS 组件的验证来验证组件的安全性,也可以通过黑客攻击来验证组件的正确性z-index。
Para cada Portal precisamos especar qual o destino alvo onde o conteúdo do port será renderizado.您可以使用 Vue 2 的图书馆门户网站Vue 来实现附加功能。
<portal to="destination">
<p>This slot content will be rendered wherever thportal-target with name 'destination'
is located.</p>
</portal>
<portal-target name="destination">
<!--
This component can be located anywhere in your App.
The slot content of the above portal component wilbe rendered here.
-->
</portal-target>
O Vue 3 terá supporte nativo aos portais!
Nova API 指令定制
可以根据 Vue 3 的表面情况进行定制,以实现与其他组件的循环生活。 API 可以帮助您轻松了解并理解初始信息,并直观地了解这些内容。
Esta é a API atual:
const MyDirective = {
bind(el, binding, vnode, prevVnode) {},
inserted() {},
update() {},
componentUpdated() {},
unbind() {}
}
...这是 Vue 3 中的一个:
const MyDirective = {
beforeMount(el, binding, vnode, prevVnode) {},
mounted() {},
beforeUpdate() {},
updated() {},
beforeUnmount() {}, // new
unmounted() {}
}
Mesmo sendo uma突破性更改,ela deve ser facilmente coberta com uma ferramenta de compatibilidade do Vue。
API 的目的是发送RFC或未来的潜在潜力。
嘘!您可以在此处自定义主指令。
苏马里奥
Além da Composition API,这是 Vue 3 的一个主要的新 API,可以让您更好地理解。 Podemos ver que o Vue está caminhando para uma melhor experience desenvolvimento and uma API mais simples and intuitiva.您可以根据自己的想法来选择装备,以获取有关框架的三项图书馆的信息。
列出了有关 API 变更和优点的常见 API 的列表。我对Vue 的 RFC存储库感到好奇。
Bom,está é a tradução。 Espero que tenha gostado。 Não deixe de compartilhar este post para que mais pessoas o encontrem e se surpreendam com as mudanças bastante positivas que o time do Vue está trazendo.
Até a próxima!
文章来源:https://dev.to/codecasts/conheca-as-novas-funcionalidades-do-vue-3-o2g