Vue.js框架中权衡的艺术(二)

简介: Vue.js框架中权衡的艺术

innerHTML

  • 可以获取调用元素的所有子节点对应的html片段
  • 可以是根据指定的值创建DOM树,替换原有的元素节点

一般我们插入大量新HTML标记时,使用innerHTML 与 通过多次DOM操作先创建节点再指定它们之间的关系相比,效率更高,因为在设置innerHTML 时就会先创建一个HTML解析器,这个解析是在浏览器级别的基础上代码(c++)运行的,因此比执行js 快得多,当然也会带来 创建销毁 html 解析器也有性能消耗。所以控制使用次数。

当新建页面时

const html =  `
  <div><span>...</span></div>
`
div.innerHTML = html

通过 innerHtml 创建页面的性能 = HTML字符串拼接的计算量 + innerHTML的DOM计算量

通过 虚拟dom 创建页面的性能 = 创建虚拟dom的计算量 + 创建真实DOM的计算量


innerHTML
虚拟DOM
JavaScript运算
拼接html字符串

创建虚拟dom
DOM构建 新建所有dom元素 新建所有dom元素

新建页面时,JavaScript运算和DOM构建层面相差不大,innerHTML 性能甚至优于 虚拟dom

当更新页面时


innerHTML 虚拟DOM
JavaScript运算
拼接html字符串
创建虚拟dom + diff算法
DOM构建性能因素 销毁旧dom新建新dom与模版大小相关 必要的dom更新与数据变化量相关

更新dom 时,虚拟DOM性能更加优越

修改dom的三个方法对比

innerHTML 虚拟dom
原生js(createElement)
心智负担重等性能差 心智负担小可维护性高性能不错 心智负担大可维护性差性能高

权衡之后,vue 使用的 虚拟dom 性能是很不错的,目前没有更好的方案

运行时和编译时的权衡

设计一个框架时,一般有三种选择

纯运行时

我个人理解,纯运行时,就比如jquery,或者和命令式框架写法相似

纯编译时

比如Svelte, 0运行时,直接编译成可执行的js代码,因此性能更好。

运行时+编译时

vue react 都是运行时+编译时。

<template><jsx>

代码都会在编译时被打包成被渲染成 树形结构。在运行时,执行render进行渲染。


相关文章
|
7天前
|
移动开发 JavaScript 前端开发
Phaser和Three.js是两个非常流行的JavaScript游戏框架,它们各自拥有独特的核心功能和使用场景
【6月更文挑战第16天】Phaser是开源的2D游戏引擎,适合HTML5游戏,提供物理引擎、图像渲染和资源管理,适用于2D游戏,如消消乐。Three.js是基于WebGL的3D库,用于创建复杂的3D场景和应用,涵盖从游戏到可视化领域的多种用途。两者分别在2D和3D开发中展现强大功能,选择取决于项目需求。
20 8
|
7天前
|
JavaScript 前端开发 Android开发
kotlin安卓在Jetpack Compose 框架下使用webview , 网页中的JavaScript代码如何与native交互
在Jetpack Compose中使用Kotlin创建Webview组件,设置JavaScript交互:`@Composable`函数`ComposableWebView`加载网页并启用JavaScript。通过`addJavascriptInterface`添加`WebAppInterface`类,允许JavaScript调用Android方法如播放音频。当页面加载完成时,执行`onWebViewReady`回调。
|
16天前
|
JavaScript 前端开发 中间件
Express框架搭建项目 node.js
【6月更文挑战第3天】这篇文章是关于使用Express框架构建Node.js Web应用的教程。Express是一个轻量级、功能丰富的框架,特点包括简洁灵活的核心、强大的中间件支持、灵活的路由系统和模板引擎兼容性。文章介绍了如何安装Express,并通过一个简单的示例展示了如何创建一个基本的Web服务器。最后,鼓励读者继续学习和实践,以充分利用Express和Node.js的能力。
23 1
|
20天前
|
前端开发 JavaScript API
Vue.js:渐进式JavaScript框架-前端开发
Vue.js:渐进式JavaScript框架-前端开发
23 3
|
23天前
|
JavaScript Java 测试技术
基于ssm+vue.js的框架失物招领信息交互平台附带文章和源代码设计说明文档ppt
基于ssm+vue.js的框架失物招领信息交互平台附带文章和源代码设计说明文档ppt
15 1
|
24天前
|
JavaScript 前端开发 API
Vue与其他框架的对比优势
【5月更文挑战第30天】Vue与其他框架的对比优势
18 1
|
24天前
|
JavaScript 前端开发 API
Vue.js是一个构建用户界面的渐进式框架
【5月更文挑战第30天】Vue.js是一个构建用户界面的渐进式框架
21 1
|
3天前
|
JavaScript 前端开发 Java
信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ&插件项目
信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ&插件项目
|
5天前
|
JavaScript 前端开发 编译器
跨越时代的框架对决:深度剖析Vue 2与Vue 3核心差异
跨越时代的框架对决:深度剖析Vue 2与Vue 3核心差异
14 0
|
5天前
|
JSON JavaScript 中间件
Node.js Express 框架
Node.js Express 框架
11 0