前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >vueJs中toRaw与markRaw函数的使用比较

vueJs中toRaw与markRaw函数的使用比较

作者头像
itclanCoder
发布于 2023-02-26 07:01:47
发布于 2023-02-26 07:01:47
1.4K00
代码可运行
举报
文章被收录于专栏:itclanCoderitclanCoder
运行总次数:0
代码可运行

01

toRaw()函数

接收一个reactive响应式数据,将一个响应式的数据变为普通类型的数据,转化为非响应式数据,相当于还原对象,reactive相当于制作,但对于ref响应式数据不起作用

将一个由reactive生成的响应式对象转为普通(原始)对象

toRaw()可以返回由reactive(),readonly(),shallowReactive()shallowReadonly()创建的代理对应的原始对象

这是一个可以用临时读取而不引起代理访问/跟踪开销,或是写入而不触发更改的特殊方法,在官方文档里,是不建议保存对原始对象的持久引用

使用场景:用于读取响应式对象的普通对象,对这个普通对象的所有操作,不会引起页面的更新

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const foo = {}
const reactiveFoo = reactive(foo)
console.log(toRaw(reactiveFoo) === foo)  // true

注意

针对对象,后续动态新增的属性,如果没有把整个对象对外暴露出去,模板中使用新增的变量是不生效的(针对setup函数形式)

02

markRaw()函数

接收一个原始数据,标记一个对象,使它永远不会再成为响应式对象,也就是数据在逻辑中即使修改变化了,但是页面不会更新变化

将一个对象标记为不可被转为代理,返回该对象本身

应用场景:

[1]. 有些值不应该被设置为响应式的,例如复杂的第三方类库或Vue组件对象

[2]. 当渲染具有不可变数据源的大列表时,跳过响应式转换可以提高性能

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const foo = markRaw({})
console.log(isReactive(reactive(foo))) // false
// 也适用于嵌套在其他响应性对象
const bar = reactive({ foo })
console.log(isReactive(bar.foo)) // false

markRaw()shallowReactive()这样浅层式API使你可以有选择的避开默认的深度响应/只读转换,并在状态关系谱中嵌入原始,非代理的对象

如果把一个嵌套的,没有标记的原始对象设置成一个响应式对象,然后再次访问它,你获取到的是代理的版本,这可能会导致对象身份风险

即执行一个依赖于对象身份的操作,但却同时使用了同一对象的原始版本和代理版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const foo = markRaw({
  nested: {}
})
const bar = reactive({
  // 尽管 `foo` 被标记为了原始对象,但 foo.nested 却没有
  nested: foo.nested
})
console.log(foo.nested === bar.nested) // false

总结

ref()reactive()是将一个非响应式类型数据变为响应式数据,而toRaw()markRaw()相当于是对响应式数据的还原,将一个响应式数据变为非响应式数据

toRaw只针对响应式对象类型的数据起作用,如果涉及到将一个响应式数据转变为非响应式数据,只用于纯数据的渲染,不引起页面的更新,就可以使用toRawmarkRaw()

往往可以提升数据的性能

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 itclanCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
tf43:tensorflow Serving gRPC 部署实例
版权声明:本文为博主原创文章,未经博主允许不得转载。有问题可以加微信:lp9628(注明CSDN)。 https://blog.csdn.net/u014365862/article/details/81009551
MachineLP
2019/05/26
2.6K1
构建并用 TensorFlow Serving 部署 Wide & Deep 模型
> 正文共6912个字,4张图,预计阅读时间18分钟。 Wide & Deep 模型是谷歌在 2016 年发表的论文中所提到的模型。在论文中,谷歌将 LR 模型与 深度神经网络 结合在一起作为 Google Play 的推荐获得了一定的效果。在这篇论文后,Youtube,美团等公司也进行了相应的尝试并公开了他们的工作(相关链接请看本文底部) 官方提供的 Wide & Deep 模型的(简称,WD 模型)教程 都是使用 TensorFlow (简称,TF )自带的函数来做的特征工程,并且模型也进行了封装,
用户1332428
2018/06/11
1.5K0
如何用TF Serving部署TensorFlow模型
如何将机器学习(ML)模型部署上线至生产环境已成为经常性的热门话题。为此许多公司和框架提出了各种不同的解决方案。
AI研习社
2019/05/08
3K0
如何用TF Serving部署TensorFlow模型
tensorflow踩坑合集2. TF Serving & gRPC 踩坑
这一章我们借着之前的NER的模型聊聊tensorflow serving,以及gRPC调用要注意的点。以下代码为了方便理解做了简化,完整代码详见Github-ChineseNER ,里面提供了训练好的包括bert_bilstm_crf, bilstm_crf_softlexcion,和CWS+NER多任务在内的4个模型,可以开箱即用。这里tensorflow模型用的是estimator框架,整个推理环节主要分成:模型export,warmup,serving, client request四步
风雨中的小七
2021/08/10
2.7K0
tensorflow踩坑合集2. TF Serving & gRPC 踩坑
精通 TensorFlow 1.x:11~15
TensorFlow 模型在开发环境中经过训练和验证。一旦发布,它们需要托管在某个地方,提供用工程师和软件工程师使用,以集成到各种应用中。 TensorFlow 为此提供了一个高表现服务器,称为 TensorFlow 服务。
ApacheCN_飞龙
2023/04/23
1.6K0
kubeflow系列(三):模型即服务,关于tensorflow serving的使用
kubeflow 中采用了 tensorflow serving 作为官方的tensorflow模型接口, TensorFlow Serving是GOOGLE开源的一个服务系统,适用于部署机器学习模型,灵活、性能高、可用于生产环境。 TensorFlow Serving可以轻松部署新算法和实验,同时保持相同的服务器架构和API。
机械视角
2020/02/11
1.8K0
tensoflow serving 实战之GAN 识别门牌号的识别服务接口
TensorFlow服务,托管模型并提供远程访问。TensorFlow服务有一个很好的文档的架构和有用的教程。不幸的是,这个有点难用,你需要做较大改动来为自己的模型提供服务。
十四君
2019/11/27
6330
模型蒸馏-学习笔记
知识蒸馏(Knowledge Distillation)最早是Hinton 2014年在论文Dislillation the Knowledge in a Neural Network中提出的概念,主要思想是通过教师模型(teacher)来指导学生模型(student)的训练,将复杂、学习能力强的教师模型学到的特征表示“知识蒸馏”出来,传递给参数小、学习能力弱的学生模型,从而得到一个速度快、表达能力强的学生模型。
Johns
2022/04/26
8.7K0
模型蒸馏-学习笔记
Tensorflow SavedModel模型的保存与加载
这两天搜索了不少关于Tensorflow模型保存与加载的资料,发现很多资料都是关于checkpoints模型格式的,而最新的SavedModel模型格式则资料较少,为此总结一下TensorFlow如何保存SavedModel模型,并加载之。
云水木石
2019/07/02
5.6K0
Tensorflow笔记:通过tf.Serving+Docker部署
很多时候仅仅是线下跑一个模型,对特定一批数据进行预测并不够,需要随时来一个或几个样本都能输出结果。这时候就需要起一个服务,然后随时一个包含数据的请求过来,就返回相应的结果。架起这个服务的过程就称作“部署”。本文主要介绍通过tf.Serving+Docker来部署tensorflow模型的过程。
共产主义搬砖人
2021/09/24
2.4K0
Kubernetes 环境的 Tensorflow Serving on S3
在 Tensorflow 给的官方例子中 Use TensorFlow Serving with Kubernetes,是将模型拷贝到镜像里的,这里是会有点不太灵活,因为更新模型就要重新构建镜像,并且再去更新对应的 Pod。
runzhliu
2020/08/06
1.1K0
【tensorflow2.0】使用tensorflow-serving部署模型
TensorFlow训练好的模型以tensorflow原生方式保存成protobuf文件后可以用许多方式部署运行。
西西嘛呦
2020/08/26
1.8K0
用Docker部署TensorFlow Serving服务
参考: https://tf.wiki/zh_hans/deployment/serving.html# https://tensorflow.google.cn/tfx/serving/docker
Michael阿明
2021/02/19
5550
用Docker部署TensorFlow Serving服务
部署深度学习模型到服务器
当我们历尽千辛万苦,终于训练出来一个模型时,想不想将这个模型发布出去,让更多人的受益?
羽翰尘
2019/11/20
3.6K0
tensorflow机器学习模型的跨平台上线
    在用PMML实现机器学习模型的跨平台上线中,我们讨论了使用PMML文件来实现跨平台模型上线的方法,这个方法当然也适用于tensorflow生成的模型,但是由于tensorflow模型往往较大,使用无法优化的PMML文件大多数时候很笨拙,因此本文我们专门讨论下tensorflow机器学习模型的跨平台上线的方法。
刘建平Pinard
2018/08/07
1.3K0
使用tensorflow-serving部署模型
TensorFlow训练好的模型以tensorflow原生方式保存成protobuf文件后可以用许多方式部署运行。
lyhue1991
2020/07/20
1.4K0
使用tensorflow-serving部署模型
当微信小程序遇上TensorFlow:接收base64编码图像数据
这是当微信小程序遇上TensorFlow系列文章的第四篇文章,阅读本文,你将了解到:
云水木石
2019/07/01
1.1K0
深度学习算法优化系列五 | 使用TensorFlow-Lite对LeNet进行训练后量化
在深度学习算法优化系列三 | Google CVPR2018 int8量化算法 这篇推文中已经详细介绍了Google提出的Min-Max量化方式,关于原理这一小节就不再赘述了,感兴趣的去看一下那篇推文即可。今天主要是利用tflite来跑一下这个量化算法,量化一个最简单的LeNet-5模型来说明一下量化的有效性。tflite全称为TensorFlow Lite,是一种用于设备端推断的开源深度学习框架。中文官方地址我放附录了,我们理解为这个框架可以把我们用tensorflow训练出来的模型转换到移动端进行部署即可,在这个转换过程中就可以自动调用算法执行模型剪枝,模型量化了。由于我并不熟悉将tflite模型放到Android端进行测试的过程,所以我将tflite模型直接在PC上进行了测试(包括精度,速度,模型大小)。
BBuf
2020/01/21
1.7K0
深度学习算法优化系列五 | 使用TensorFlow-Lite对LeNet进行训练后量化
如何查看Tensorflow SavedModel格式模型的信息
在《Tensorflow SavedModel模型的保存与加载》一文中,我们谈到SavedModel格式的优点是与语言无关、容易部署和加载。那问题来了,如果别人发布了一个SavedModel模型,我们该如何去了解这个模型,如何去加载和使用这个模型呢?
云水木石
2019/07/02
2.7K0
如何查看Tensorflow SavedModel格式模型的信息
TensorFlow Serving
TensorFlow Serving[1] 可以快速部署 Tensorflow 模型,上线 gRPC 或 REST API。
GoCoding
2021/05/06
5880
TensorFlow Serving
推荐阅读
相关推荐
tf43:tensorflow Serving gRPC 部署实例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验