Vue 3细节通俗讲解

提示:本指南主要是为有 Vue 2 经验的、希望了解 Vue 3 的新功能和更改的用户而提供的。在试用 Vue 3 之前,你不必完整阅读这些内容。虽然看起来有很多变化,但很多你已经了解和喜欢 Vue 的部分仍是一样的。不过我们希望尽可能全面,并为每处变化提供详细的例子。


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


细节

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

*概览

1.快速开始

  1. 通过 CDN:<script src=“https://unpkg.com/vue@next”>
  2. Codepen 上的浏览器内试验
  3. CodeSandbox 上的浏览器内沙盒

代码如下(示例):

通过脚手架vite

npm init vite hello-vue3 -- --template vue 
或 yarn create vite hello-vue3 --template vue

通过脚手架vue-cli

npm install -g @vue/cli # 或 yarn global add @vue/cli
vue create hello-vue3
# 选择 vue 3 preset

2.用于迁移的构建版本

3.值得注意的新特性

学习目标:

组合式 API
Teleport
片段
触发组件选项
来自 @vue/runtime-core 的 createRenderer API,用于创建自定义渲染器
单文件组件组合式 API 语法糖 (


4.非兼容的变更

下面列出了从 2.x 开始的非兼容的变更:
#全局 API

全局 API 已更改为使用应用程序实例
全局和内部 API 已经被重构为支持 tree-shake


#模板指令
组件上 v-model 用法已更改,以替换 v-bind.sync
和非 v-for 节点上的 key 用法已更改
在同一元素上使用的 v-if 和 v-for 优先级已更改
v-bind=“object” 现在排序敏感
v-on:event.native 修饰符已移除
v-for 中的 ref 不再注册 ref 数组


#组件
只能使用普通函数创建函数式组件
functional attribute 在单文件组件 (SFC) 的 和 functional 组件选项中被废弃
异步组件现在需要使用 defineAsyncComponent 方法来创建
组件事件现在需要在 emits 选项中声明


#渲染函数
渲染函数 API 更改
$scopedSlots property 已移除,所有插槽都通过 $slots 作为函数暴露
$listeners 被移除或整合到 $attrs
$attrs 现在包含 class 和 style attribute


#自定义元素
自定义元素检测现在在模板编译时执行
特殊的 is attribute 的使用被严格限制在被保留的 标签中


#其他小改变
destroyed 生命周期选项被重命名为 unmounted
beforeDestroy 生命周期选项被重命名为 beforeUnmount
default prop 工厂函数不再可以访问 this 上下文
自定义指令的 API 已更改为与组件生命周期一致,且 binding.expression 已移除
data 选项应始终被声明为一个函数
来自 mixin 的 data 选项现在为浅合并
Attribute 强制策略已更改
一些过渡的 class 被重命名
不再默认渲染包裹元素
当侦听一个数组时,只有当数组被替换时,回调才会触发,如果需要在变更时触发,则必须指定 deep 选项
没有特殊指令的标记 (v-if/else-if/else、v-for 或 v-slot) 的 现在被视为普通元素,并将渲染为原生的 元素,而不是渲染其内部内容。
已挂载的应用不会取代它所挂载的元素
生命周期的 hook: 事件前缀改为 vnode-


#被移除的 API
keyCode 作为 v-on 修饰符的支持
o n 、 on、 onoff 和 $once 实例方法
过滤器 (filter)
内联模板 attribute
$children 实例 property
propsData 选项
$destroy 实例方法。用户不应再手动管理单个 Vue 组件的生命周期。
全局函数 set 和 delete 以及实例方法 $set 和 $delete。基于代理的变化检测已经不再需要它们了


5官方的支持库

我们所有的官方库和工具现在都支持 Vue 3,但其中一些仍处于测试版或候选发布状态。你可以在下面找到各个库的详细信息。大多数库目前使用 npm 上的 next dist 标签发布。我们打算在所有官方库有了稳定的兼容版本后,就改用 latest 标签。

#Vue CLI
该处使用的url网络请求的数据。
从 v4.5.0 开始,vue-cli 现在提供了内置选项,可在创建新项目时选择 Vue 3。现在可以升级 vue-cli 并运行 vue create 来创建 Vue 3 项目。

#Vue Router

该处使用的url网络请求的数据。
Vue Router 4.0 提供了 Vue 3 支持,并有许多非兼容的变更,详情见迁移指南。

#Vuex
该处使用的url网络请求的数据。
Vuex 4.0 提供了 Vue 3 支持,其 API 与 3.x 基本相同。唯一的非兼容变更是插件的安装方式。

#Devtools 扩展
该处使用的url网络请求的数据。
我们正在开发一个新版本的 Devtools,它有一个新的 UI 和经过重构的内部结构,以支持多个 Vue 版本。新版本目前处于测试阶段,目前只支持 Vue 3。Vuex 和 Router 的集成也在进行中。
Chrome:从 Chrome web 商店中安装
提示:beta 版本可能与 devtools 的稳定版本冲突,因此你可能需要暂时禁用稳定版本,以便 beta 版本正常工作。
Firefox:下载签名扩展 (assets 下的 .xpi 文件)

#IDE 支持
该处使用的url网络请求的数据。
推荐使用 VSCode 和我们官方拓展 Volar,它为 Vue 3 提供了全面的 IDE 支持


一、v-for中的Ref数组 非兼容

提示:在 Vue 2 中,在 v-for 中使用的 ref attribute 会用 ref 数组填充相应的 $refs property。
当存在嵌套的 v-for 时,这种行为会变得不明确且效率低下。
在 Vue 3 中,此类用法将不再自动创建 $ref 数组。
要从单个绑定获取多个 ref,请将 ref 绑定到一个更灵活的函数上 (这是一个新特性):

<div v-for="item in list" :ref="setItemRef"></div>

二、异步组件 新增

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

三、attribute 强制行为非兼容

三、$attrs包含 class&style 非兼容

三、$children 移除

三、自定义指令 非兼容

三、自定义元素的互操作性 非兼容

三、Data选项 非兼容

二、emit选项 新增

三、事件API 非兼容

三、过滤器 移除

二、片段 新增

三、函数式组件 非兼容

三、全局API 非兼容

三、全局API Treeshaking非兼容

三、内联模版Attribute非兼容

三、key Attribute非兼容

三、按键修饰符非兼容

三、移除$listeners 非兼容

三、被挂载的应用不会替换元素 非兼容

三、propsData 移除

三、在prop的默认函数中访问 非兼容

三、渲染函数API 非兼容

三、插槽统一 非兼容

二、Suspense 新增

三、过渡的class名更改 非兼容

三、Transition作为根节点 非兼容

三、移除v-on.native修饰符 非兼容

三、v-model 非兼容

三、v-if与v-for的优先级对比 非兼容

三、v-bind合并行为 非兼容

三、VNode生命周期事件 非兼容

三、侦听数组 非兼容

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


# 总结 提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

学习目标:

提示:这里可以添加学习目标
例如:一周掌握 Java 入门知识


学习内容:

提示:这里可以添加要学的内容
例如:
1、 搭建 Java 开发环境
2、 掌握 Java 基本语法
3、 掌握条件语句
4、 掌握循环语句


学习时间:

提示:这里可以添加计划学习的时间
例如:
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


学习产出:

提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个

项目场景:

提示:这里简述项目相关背景:
例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大)


问题描述:

提示:这里描述项目中遇到的问题:
例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据
APP 中接收数据代码:

@Override
        public void run() {
            bytes = mmInStream.read(buffer);
            mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();
        }

原因分析:

提示:这里填写问题的分析:
例如:Handler 发送消息有两种方式,分别是 Handler.obtainMessage()和 Handler.sendMessage(),其中 obtainMessage 方式当数据量过大时,由于 MessageQuene 大小也有限,所以当 message 处理不及时时,会造成先传的数据被覆盖,进而导致数据丢失。


解决方案:

提示:这里填写该问题的具体解决方案:
例如:新建一个 Message 对象,并将读取到的数据存入 Message,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();换成 mHandler.sendMessage()。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值