Vue如何用虚拟dom进行渲染view的

本文详细介绍了Vue如何利用数据驱动和虚拟DOM进行视图更新。在数据变更时,Vue会触发render过程,通过监听数据变化并调用_update、_render及patch等函数,实现对真实DOM的最小化更新,涉及的关键步骤包括diff算法和updateChildren函数,用于高效地对比和更新组件的子元素。
摘要由CSDN通过智能技术生成

前提

vue版本:v2.5.17-beta.0

触发render

vue在数据更新后会自动触发view的render工作,其依赖于数据驱动;在数据驱动的工作下,每一个vue的data属性都被监听,并且在set触发时,派发事件,通知收集到的依赖,从而触发对应的操作,render工作就是其中的一个依赖,并且被每一个data属性所收集,因此每一个data属性改变后,都会触发render。

vue更新监听

看一段代码

// 来自mountComponent函数
updateComponent = function () {
  vm._update(vm._render(), hydrating);
};

new Watcher(vm, updateComponent, noop, {
  before: function before () {
    if (vm._isMounted) {
      callHook(vm, 'beforeUpdate');
    }
  }
}, true /* isRenderWatcher */);

updateComponent是更新组件的函数,内部调用vm._update,并且传参vm._render();

  • vm._render()返回了什么?看源码则得知返回了虚拟dom(VNode)
  • vm._update函数又做了什么事情?顾名思义,更新传入的vnode
  • 什么时候触发updateComponent函数?在任何vue的data属性更改值都会触发

更新view

阅读_update函数得知,最终调用了vm.__patch__

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里提供一个简单的示例来演示如何在Vue中使用`potree-core`库来渲染点云数据。 首先,你需要在Vue组件中引入`potree-core`库: ```javascript import * as Potree from 'potree-core'; ``` 然后,你需要在Vue组件的`mounted`生命周期钩子中创建一个`potreeViewer`对象,并将其添加到HTML页面中: ```javascript mounted() { // 创建potreeViewer对象 const potreeViewer = new Potree.Viewer(this.$refs.viewer); // 设置视角 potreeViewer.setFOV(60); potreeViewer.setPointBudget(1_000_000); potreeViewer.setEDLEnabled(false); potreeViewer.setPointSize(1); // 加载点云数据 Potree.loadPointCloud('/path/to/pointcloud', 'pointcloud', e => { const pointcloud = e.pointcloud; potreeViewer.scene.addPointCloud(pointcloud); // 自适应相机视角 const bs = pointcloud.pcoGeometry.tightBoundingBox; const node = { name: 'auto_view', position: bs.getCenter(new THREE.Vector3()), target: pointcloud.pcoGeometry.boundingBox.getCenter(new THREE.Vector3()) }; potreeViewer.scene.view.position.copy(node.position); potreeViewer.scene.view.lookAt(node.target); }); // 添加potreeViewer对象到HTML页面中 this.$refs.viewer.appendChild(potreeViewer.renderer.domElement); } ``` 这里的`$refs.viewer`是指向HTML页面中的一个`<div>`元素的引用。在上面的代码中,我们创建了一个`potreeViewer`对象,并将其渲染到HTML页面中的`<div>`元素中。然后,我们使用`Potree.loadPointCloud()`方法加载点云数据,并将其添加到`potreeViewer`对象的场景中。 最后,我们将`potreeViewer`对象的渲染器添加到HTML页面中,这样就可以在浏览器中显示点云数据了。 希望这个简单的示例能够帮助你开始在Vue项目中使用`potree-core`库来渲染点云数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值