Vue 3中那些激动人心的新功能,CSS常用五类选择器

export default {

setup() {

简单说,它只是一个将属性和函数返回到模板的函数,仅此而已。我们在这里声明所有响应属性、计算属性、观察者和生命周期 hooks,然后返回它们,以便在模板中使用。

我们没有从setup函数返回的内容将无法在模板中使用。

const count = ref(0)

根据上述内容,我们使用ref函数声明了称为count的响应属性。它可以包装任何原语或对象,并返回其响应性引用。传递的元素的值将保留在所创建引用的value属性中。例如,如果要访问count引用的值,则需要显式请求count.-value

const double = computed(() => count.value * 2)

function increment() {

count.value++

}

这正是我们在声明计算属性doubleincrement函数时所做的事情。

onMounted(() => console.log(‘component mounted!’))

我们使用onMounted hook 在组件挂载时记录了一些消息,这里只是告诉你可以这样做😉

return {

count,

double,

increment

}

最后,我们使用increment方法返回countdouble属性,以使其在模板中可用。

<button @click=“increment”>

Count is: {{ count }}, double is {{ double }}. Click to increment.

好了!现在,我们可以访问模板中setup方法返回的属性和函数,就像通过旧的 Options API 声明它们一样。

这是一个简单的示例,也可以通过 Options API 轻松实现。新的合成 API 的真正好处不仅仅是以不同的方式编码,在复用我们的代码 / 逻辑时,其优势就能显现出来。

使用合成 API 复用代码

新的合成 API 有更多优势。想想代码复用,这就是它的一大用武之地。目前,如果我们要在其他组件之间共享一些代码,则有两个选择可用——分别是 mixins 和作用域插槽。两者都有自己的缺点。

假设我们要提取counter功能并在其他组件中复用。下面的代码中你可以看到如何分别使用现有的 API 和新的合成 API 做到这一点:

先从 mixins 开始:

import CounterMixin from ‘./mixins/counter’

export default {

mixins: [CounterMixin]

}

mixins 的最大缺点是我们对它实际上添加到组件中的内容一无所知。这不仅让代码很难理解,而且还可能导致命名与已有的属性和函数发生冲突。

下面是作用域插槽。

{{ count }}

<button @click=“increment”>Increment

使用作用域插槽时,我们确切地知道可以通过v-slot属性访问哪些属性,因此代码更容易理解。这种方法的缺点是我们只能在模板中访问它,并且只能在Counter组件作用域中使用。

现在是时候使用合成 API 了:

function useCounter() {

const count = ref(0)

function increment () { count.value++ }

return {

count,

incrememt

}

}

export default {

setup () {

const { count, increment } = useCounter()

return {

count,

increment

}

}

}

是不是更优雅?我们不受模板和组件作用域的限制,并且确切地知道可以从 counter 访问哪些属性。此外,由于useCounter只是返回某些属性的函数,因此我们可以获得编辑器中代码自动完成的帮助。没有隐藏在幕后的魔法,因此编辑器可以帮助我们检查类型并给出建议。

使用第三方库也能变得更优雅。例如,如果我们要使用 Vuex,则可以显式使用useStore函数,而不用污染 Vue 原型(this.$store),这种方法也消除了 Vue 插件的幕后魔法。

const { commit, dispatch } = useStore()

如果你想了解有关合成 API 及其用例的更多信息,我强烈建议你阅读 Vue 团队写的这篇文档(见下方链接)。这份文档解释了新 API 背后的理念,并给出了最佳用例的建议。Vue 核心团队的 ThorstenLünborg 还提供了一个很棒的存储库,其中包含合成 API 的使用示例。

文档:https://vue-composition-api-rfc.netlify.com/

存储库:https://github.com/LinusBorg/composition-api-demos

全局挂载 / 配置 API 更改

在实例化和配置应用程序的方式方面,还有一项重大变化。现在我们是这样做的:

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 实例。对Vue对象所做的任何更改都会影响每个 Vue 实例和组件。

下面我们看看 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’)

你可能已经注意到,每个配置都局限于使用createApp定义的某个 Vue 应用程序。

它可以让你的代码更容易理解,并且不容易出现由第三方插件引起的意外问题。当前,如果某些第三方解决方案正在修改 Vue 对象,则可能会以意想不到的方式(尤其是全局 mixins)影响你的应用程序,而 Vue 3 则不会出现这种情况。

这一 API 更改现在正在这个 RFC 中讨论,意味着将来它可能还会继续变动。

RFC:https://github.com/vuejs/rfcs/pull/29

片 段

Vue 3 中值得期待的另一个激动人心的新功能是片段(Fragments)。

你可能会问什么是片段?嗯,如果你创建一个 Vue 组件,则它只能有一个根节点。这意味着无法创建这样的组件:

Hello
World

原因是代表任何 Vue 组件的 Vue 实例都需要绑定到单个 DOM 元素中。想要创建具有多个 DOM 节点的组件,唯一的方法是创建一个没有基础 Vue 实例的功能组件。

事实证明,React 社区也有同样的问题。他们提出的解决方案是一个名为片段(Fragment)的虚拟元素。它看起来差不多是这个样子:

class Columns extends React.Component {

render() {

return (

<React.Fragment>

Hello World

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

最后

基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。

43431)]
[外链图片转存中…(img-scx21ZNZ-1710694543431)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
[外链图片转存中…(img-9cJrqpXU-1710694543432)]

最后

基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 28
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值