Vue3.x的设计理念-Vue3导读

这篇具有很好参考价值的文章主要介绍了Vue3.x的设计理念-Vue3导读。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

VUE-NEXT【vue3】

VUE-NEXT最核心的变更

Why not SFC?【单文件组件】

Composition API

生命周期钩子变化

什么是响应式(Reactivity)

Reactive值

Proactive vs Reactive

声明式程序

声明式程序:创造语言

声明式程序:Reactive

小结:常见误区


VUE-NEXT【vue3】

// 安装vue3依赖
npm install vue@next

vue3+ts环境配置之后会单独写篇文章,这里就不赘述了。

VUE-NEXT最核心的变更

  • 拥抱JSX【标准】
  • Typescript【Vue3+TS结合的非常紧密,用起来非常方便,TS在VUE的舞台有非常强大的生命力】
  • Composition API【让我们的系统可以以更好的方式进行组合】
  • Reactivity【对响应式的支持】

Why not SFC?【单文件组件】

  • 理由1:SFC经过了努力但是没有称为标准(JSX已经成为标准)
// ts 不认识.vue的DefineComponent需要一个shim文件
declare module "*.vue" {
    import { DefineComponent } from "vue";
    const Component: DefineComponent;
    export default Component;
}
<template>
  • 理由2:SFC不符合关注点分离原则
    • 逻辑集中管理
    • 封装(密封性)
    • 减少记忆
function useCounter(): [Ref<number>, () => void] {
    const counter = ref(0)
    function increment() {
        counter.value++    
    }
    return [counter, increment]
}
export default {
    setup() {
        const [counter, increment] = useCounter()
        return () => <div>
        	count is : {counter.value}
         <button onClick= {increment}>add</button>
         </div> 
    }
}

思考

  • 少写一个shim重要吗?答:不重要,但是要拥抱标准
  • style/javascript/html【SFC】分开写违反了什么标准?答:1、封装【集中管理】2、关注点分离原则【业务】
  • v-show/v-for/v-bind/v-model还能用吗?答:不用了,有更简单的方式实现这些东西

Composition API

  • 定义组件
      • setup【初始化组件】
      • defineComponent【定义组件】
  • Reactivity【用于响应式的支持】
      • ref
      • reactive
      • toRefs
      • computed
      • watch/watchEffect

生命周期钩子变化

  • Options API Hook inside 【setup】
      • beforeCreate Not needed*
      • created Not needed*
      • beforeMount onBeforeMount
      • mounted onMounted
      • beforeUpdate onBeforeUpdate
      • updated onUpdated
      • beforeUnmount onBeforeUnmount
      • unmounted onUnmounted
      • errorCaptured onErrorCaptured
      • renderTracked onRenderTracked
      • renderTriggered onRenderTriggered
      • activated onActivated
      • deactivated onDeactivated

需要知道什么时候绘制DOM吗?

我们学会vue3之后还需要这些生命周期钩子吗?

什么是响应式(Reactivity)

  • 类型响应环境变化
  • 发生变化,类型不关心谁响应,只是向外暴露自己的变化(事件)

观察者模式【不耦合】

Vue3.x的设计理念-Vue3导读

Reactive值

  • 响应式(Reactive)值专注计算逻辑的表达,不关心渲染细节
  • 响应式大大降低了程序的耦合

Vue3.x的设计理念-Vue3导读

Proactive vs Reactive

  • 主动(proactive)关系中,A必须拥有B的实例【耦合】
  • 响应(reactive)关系中,A、B可以不必知道对方存在【解耦】

声明式程序

const arr = []
for(let i = 0;i < 10000; i++) {
    arr[i] = i
}
// 声明式
const arr = range(0, 10000)

写程序是为了阅读,其次才是执行

声明式程序:创造语言

const div = document.createElement('div')
div.style.width = 100
// 声明式
const div = <div style={{width: 100}} />

声明式程序:Reactive

function useLoginStatus() {
    const logined = ref(userStore.logined())
    
    userStore.on(e) {
        switch(e.type) {
            case "logined":
                logined.value = true
                break
             case "logout":
                 logined.value = false
                 break        
        }    
    }
    return logined
}
export default {
    setup() {
        const loggedIn = useLoginStatus()
        return ()=> <logginStatus loggedIn = {loggedIn} />    
    }
}

const LogginStatus = ({loggedIn}) => {
    if(loggedIn.value) {
        return <div>您好!欢迎光临</div>    
    } else {
         return <div>请登录......</div>       
    }
}

小结:常见误区

1.分不清:从前端看:怎么理解Reactivity?和React是一个词义吗?说的都是响应式

2.分不清:组合能力是什么?Composition API提供更好的组合能力,这样说对吗?

整个说法是成立的。

组合能力就是将不同的组件组合在一起工作的能力。

每个组件应该做到更小的粒度。

可以细化到一个按钮。

整个逻辑的拼装复用。

不只是视图还有效果【副作用】文章来源地址https://www.toymoban.com/news/detail-461812.html

到了这里,关于Vue3.x的设计理念-Vue3导读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hystrix和Sentinel熔断降级设计理念

    Sentinel 和 Hystrix 的原则是一致的: 当检测到调用链路中某个资源出现不稳定的表现,例如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联故障。 Sentinel 对这个问题采取了两种手段: 通过并发线程数进

    2024年02月09日
    浏览(32)
  • MOS管的工作原理以及设计理念

    一、MOS管工作原理         1、大种类以及结构形式         MOS管总体上分为N型MOS管(N沟道场效应管)和P型MOS管(P沟道场效应管)。它们都是有三个管脚,作用都是开关作用,控制原理都是应用电容的特性,区别之处在于N和P型的电流方向相反。         如图下是

    2024年02月13日
    浏览(27)
  • Kafka核心设计与实践原理:设计理念、基本概念、主要功能与应用场景

    详细介绍Kafka作为分布式流式处理平台的设计理念、基本概念,以及其主要功能与应用场景,包括消息系统、容错的持久化、流式处理平台等功能,同时探讨如何保证消息的唯一性、消费顺序等问题。

    2024年02月22日
    浏览(37)
  • 【开篇 | Spring深度学习】Spring设计理念和整体架构

    个人名片: 🐼 作者简介:一名大二在校生 🐻‍❄️ 个人主页:落798. 🐼 个人WeChat:落798. 🕊️ 系列专栏: 零基础学java ----- 重识c语言 ---- 计算机网络 — 【Spring技术内幕】 🐓 每日一句: 努力赚钱,娶她回家! Spring 是最流行的企业 Java 应用程序开发框架。 全球数以百

    2024年02月16日
    浏览(34)
  • 云原生应用交付平台Orbit设计理念与价值主张

    本文作者: 何文强——腾讯云 CODING 高级架构师 。 负责 CODING DevOps产品解决方案架构设计和技术产品布道以及 CODING 云原生技术研究与落地实践。在多个技术大会担任演讲嘉宾,腾讯云 CODING DevOps 课程认证出品人,腾讯云云原生训练营核心初创成员。 ​ 精通敏捷精益、DevO

    2024年02月10日
    浏览(26)
  • [React源码解析] React的设计理念和源码架构 (一)

    任务分割 异步执行 让出执法权 1.React的设计理念 Fiber: 即对应真实dom, 又作为分隔单元。 Scheduler: 用js实现一套时间片运行的机制, 使得requestIdleCallback()的浏览器的兼容性和触发不稳定的问题解决。 Lane: 异步调度有了, 需要细粒度的管理各个任务的优先级, 让高优先级的先执行

    2024年02月07日
    浏览(30)
  • 【手撕Spring - 深入篇】Spring 的设计理念和整体架构

    👉 博主介绍 : 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区:个人社区 💞 个人主页:个人主页 🙉 专栏地址: ✅ 带你手撕 Spring 🙉八股文专题:剑指大厂,

    2024年02月14日
    浏览(30)
  • 从零开始理解Linux中断架构(2)-朴素的中断管理设计理念

            既然是从零开始,我们先从最为简单的中断逻辑处理架构开始,这个逻辑结构跟CPU架构没有关系,纯逻辑上的。纯逻辑是跨越系统和应用的,不管对于应用程序员还是系统程序员,逻辑推导是基本的工具,设计原型是基本的出发点。         在系统初始化的时

    2024年02月08日
    浏览(29)
  • vue3:3、项目目录和关键文件

    2024年02月09日
    浏览(24)
  • vue3 vite 打包 二级目录刷新空白

    控制台报错:Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of \\\"text/html\\\". Strict MIME type checking is enforced for module scripts per HTML spec. 打包路径问题,修改vite.config.ts文件的base

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包