共 89 篇文章

标签:vue 第9页

vue全家桶介绍-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

vue全家桶介绍

在Vue3的开发过程中,我们可能会遇到各种各样的问题,这些问题可能涉及到语法、特性、最佳实践等多个方面,为了帮助大家快速避坑,我将会列出15个常见的Vue3开发问题,并提供相应的解决方案。, ,1. **关于Vue3的Composition API**,Vue3引入了新的Composition API,它是一种新的、更灵活的方式来组织和重用代码,如果你之前主要使用Options API,那么可能需要一些时间来适应这个新的概念,在使用Composition API时,你需要注意以下几点:,– 你需要为每个函数创建一个单独的函数,而不是将它们放在一个对象或模块中。,– 你可以使用`setup`函数来创建和返回你的组件所需的状态和方法。,– 你可以在同一个组件中使用多个`setup`函数,以实现更复杂的逻辑。,2. **关于Vue3的响应式系统**,Vue3的响应式系统是基于Proxy实现的,它与Vue2中的Object.defineProperty有所不同,在Vue3中,你需要使用`reactive`或`ref`函数来创建响应式数据,你还需要注意以下几点:,– 当你在一个对象上定义了一个属性时,这个属性默认就是响应式的,如果你想要自定义响应式的行为,你可以使用`computed`或`watchEffect`函数。,– 当一个数组被重新赋值时,Vue3会自动追踪其变化,如果你修改了数组的长度,Vue3可能无法检测到这些变化,在这种情况下,你需要使用`splice`函数来触发视图的更新。,3. **关于Vue3的组合式API和选项式API的转换**,如果你正在从Vue2迁移到Vue3,你可能会发现组合式API的使用比选项式API更加复杂和难以理解,为了帮助你更好地理解和使用组合式API,我建议你参考Vue官方的迁移指南。, ,4. **关于Vue3的Teleport组件**,Vue3引入了一个新的内置组件Teleport,它可以将子组件渲染到DOM树的其他位置,这在某些情况下可能会非常有用,例如当你需要将弹出窗口(如模态框)放置在页面的任何位置时。,5. **关于Vue3的Fragment和Teleport**,在Vue3中,你可以在模板中使用多个根元素(包括div),这被称为Fragment,Teleport组件可以让你将子组件渲染到DOM树的其他位置,这两个特性可以一起使用,以实现更复杂的布局和交互效果。,6. **关于Vue3的Suspense**,Vue3引入了一个新的内置组件Suspense,它可以用于处理异步组件的加载状态,当你在异步组件上使用Suspense时,如果该组件尚未加载完成,那么你将在该组件上看到一个fallback内容,当异步组件加载完成后,你将看到实际的内容。,7. **关于Vue3的新特性**,Vue3引入了许多新特性,包括Composition API、Fragment、Teleport、Suspense等,这些新特性可以帮助你更好地组织和重用代码,提高开发效率和代码质量。,8. **关于Vue3的生命周期钩子**,虽然Vue3中的生命周期钩子有所改变,但大多数钩子仍然保持不变,你可以参考Vue官方文档来了解这些钩子的使用方法和行为变更。,9. **关于Vue3的错误边界**, ,Vue3引入了一个新的内置组件ErrorBoundary,它可以帮助你更好地捕获和处理组件中的错误,当你在组件中使用ErrorBoundary时,如果该组件内部发生了错误,那么ErrorBoundary将捕获这个错误,并将其显示给用户。,10. **关于Vue3的自定义指令**,Vue3允许你在全局范围内注册自定义指令,而不再是在单个组件内进行注册,你可以通过`app.directive()`方法来注册全局自定义指令,需要注意的是,全局自定义指令不能访问组件实例的属性和方法。,11. **关于Vue3的动态导入**,Vue3支持在运行时动态导入JavaScript模块,你可以使用`import()`函数来实现这一点,这在你需要根据用户的输入或其他条件来动态加载不同的组件或功能时非常有用。,12. **关于Vue3的Server Components**,Vue3支持服务器端渲染(SSR),这意味着你可以在服务器上生成完整的HTML文件,然后将这些文件发送给客户端,这对于提高首屏加载速度和SEO优化非常有帮助,你需要使用`vue-server-renderer`包来实现服务器端渲染。,13. **关于Vue3的性能优化**,虽然Vue3的性能已经得到了显著的提升,但你仍然可以通过以下方式来进一步优化你的应用程序:,

虚拟主机
vue 怎么部署-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

vue 怎么部署

在Vue.js项目中,部署到虚拟主机是一个常见的需求,虚拟主机是一种网络服务,它允许你将你的网站托管在一个共享的服务器上,而不是在自己的专用服务器上,这样,你可以节省成本,同时也可以利用专业的服务器管理和维护,以下是如何将Vue项目部署到虚拟主机的详细步骤:,1、准备工作, ,在开始部署之前,你需要准备以下内容:,一个有效的Vue项目:确保你的项目已经开发完成,并且通过了所有的测试。,一个虚拟主机账户:你需要从虚拟主机提供商那里购买一个账户,选择一个可靠的提供商,以确保你的网站能够稳定运行。,FTP访问权限:你需要从虚拟主机提供商那里获取FTP访问权限,这将允许你将你的项目文件上传到服务器。,2、构建项目,在你的本地环境中,使用 npm run build命令构建你的Vue项目,这将生成一个名为 dist的文件夹,其中包含了你的项目的静态文件。,3、配置虚拟主机,登录到你的虚拟主机控制面板,找到你的域名设置,通常,你需要在这里添加一个新的域名或者子域名,指向你的项目文件夹,如果你的项目文件夹位于 public_html目录下,你可以将域名指向这个目录。,4、上传项目文件,使用FTP客户端(如FileZilla)连接到你的虚拟主机,在FTP客户端中,导航到你的项目文件夹(即你在步骤3中配置的域名指向的目录),然后将你在步骤2中生成的 dist文件夹中的所有文件和文件夹上传到这个目录。,5、配置HTTP重定向, ,为了确保你的网站能够正常运行,你需要配置HTTP 重定向,在你的虚拟主机控制面板中,找到HTTP重定向设置,通常,你需要将所有的非根请求(即以斜杠开头的请求)重定向到根目录(即 /),如果你的网站域名是 example.com,你需要将 example.com/about重定向到 example.com/。,6、等待DNS解析,完成以上步骤后,你需要等待DNS解析生效,这通常需要几分钟到几小时的时间,在此期间,你可以通过在浏览器中输入你的域名来检查你的网站是否已经部署成功。,7、优化性能,为了提高你的网站的性能,你可以考虑以下优化措施:,使用 CDN:通过使用内容分发网络(CDN),你可以将你的静态文件缓存在全球各地的服务器上,从而加快加载速度,大多数虚拟主机提供商都提供CDN服务。,优化图片:压缩你的所有图片,以减少文件大小,你可以使用在线工具(如TinyPNG)来压缩图片。,开启Gzip压缩:通过启用Gzip压缩,你可以减小传输给浏览器的文件大小,从而提高加载速度,大多数虚拟主机提供商都支持Gzip压缩。,8、监控和维护,部署完成后,你需要定期监控和维护你的网站,确保你的虚拟主机提供商提供了足够的资源(如带宽、内存和CPU),以满足你的需求,定期更新你的Vue项目和依赖库,以确保你的网站能够正常运行。,相关问题与解答:, ,1、Q: 我可以将Vue项目部署到自己的服务器上吗?,A: 是的,你可以将Vue项目部署到自己的服务器上,这需要你具备一定的服务器管理和维护知识,你还需要考虑服务器的成本和维护费用。,2、Q: 我可以使用其他前端框架(如React或Angular)部署到虚拟主机吗?,A: 是的,你可以使用任何前端框架部署到虚拟主机,只需确保你已经构建了项目的静态文件,并将其上传到服务器即可。,3、Q: 我需要在虚拟主机上安装Node.js和npm吗?,A: 不需要,虚拟主机提供商通常会为你提供一个预装的Node.js和npm环境,你只需要使用这些工具来构建和运行你的项目即可。,4、Q: 我可以使用Git进行版本控制吗?,A: 是的,你可以使用Git进行版本控制,你可以在本地创建一个Git仓库,并将你的项目推送到远程仓库(如GitHub或GitLab),在部署过程中,你可以从远程仓库拉取最新的代码并部署到虚拟主机。,Vue 项目可以通过构建生产版本,然后部署到服务器上进行访问。

CDN资讯
vue是什么app软件「vue是什么软件cs」-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

vue是什么app软件「vue是什么软件cs」

Vue.js是一个构建用户界面的渐进式JavaScript框架,与其他大型框架不同的是,Vue被设计为可以自底向上逐层应用,Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合,另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页应用提供驱动。, ,Vue.js的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件,核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合,另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页应用提供驱动。,Vue.js是一个开源的JavaScript框架,作者是尤雨溪,它最初是作为一个前端UI框架开发的,但后来逐渐发展成为一个全栈框架,Vue.js的设计目标是提供一个简单、灵活、高效的方式来构建用户界面,它的语法简洁明了,学习曲线平缓,使得开发者可以快速上手并开始构建应用程序。,Vue.js的核心特性包括数据驱动的视图、组件化开发、虚拟DOM、指令等,数据驱动的视图意味着开发者可以通过改变数据来改变视图,而无需手动操作DOM,组件化开发允许开发者将复杂的应用程序拆分成多个可重用的组件,提高代码的可维护性和可复用性,虚拟DOM是一种轻量级的DOM模拟,可以提高应用程序的性能,指令是一种特殊的属性,用于在HTML中绑定特定的功能或行为。,Vue.js提供了一套完整的工具链,包括编译器、运行时、测试工具等,编译器可以将Vue.js源代码编译成可以在浏览器中运行的代码,运行时负责管理应用程序的状态和事件处理,测试工具可以帮助开发者编写和运行单元测试和集成测试。,Vue.js的生态系统非常丰富,有许多第三方库和插件可供选择,这些库和插件可以帮助开发者更轻松地构建应用程序,提高开发效率,Vuex用于状态管理,Vue Router用于路由管理,Vue CLI用于项目脚手架等。,Vue.js的社区非常活跃,有许多开发者和公司在使用和贡献Vue.js,Vue.js的文档非常详细,包括官方文档和中文文档,还有许多在线教程和视频教程可供学习。, ,Vue.js是一个非常强大和灵活的JavaScript框架,适用于构建各种类型的应用程序,无论是简单的单页应用,还是复杂的全栈应用,Vue.js都可以轻松应对。,相关问题与解答:,1. Vue.js是什么?,答:Vue.js是一个构建用户界面的渐进式JavaScript框架。,2. Vue.js的特点是什么?,答:Vue.js的特点包括数据驱动的视图、组件化开发、虚拟DOM、指令等。, ,3. Vue.js的生态系统有哪些?,答:Vue.js的生态系统包括许多第三方库和插件,如Vuex、Vue Router、Vue CLI等。,4. 如何学习Vue.js?,答:可以通过阅读官方文档、中文文档、在线教程和视频教程来学习Vue.js。,

虚拟主机
如何在vue中引入图表-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

如何在vue中引入图表

在 Vue 中引入图表,可以使用第三方库 ECharts,ECharts 是一个由百度开发的开源可视化库,提供了丰富的图表类型和强大的自定义功能,本文将详细介绍如何在 Vue 项目中引入 ECharts,并使用其创建简单的柱状图。,1、确保你的 Vue 项目已经创建完成,如果还没有创建,可以使用 Vue CLI 进行创建:, ,2、安装 ECharts:,3、在需要使用图表的 Vue 组件中引入 ECharts:,1、在 Vue 组件的 mounted 生命周期钩子中,创建一个 ECharts 实例:,2、在 Vue 组件的 methods 中,定义一个方法用于创建图表实例:, ,1、在 Vue 组件的 data 中,定义图表所需的配置项:,2、在 createChart 方法中,使用 this.chartOptions 为 ECharts 实例设置配置项:,1、在 Vue 组件的模板中,添加一个用于显示图表的 DOM 元素:,2、确保 ECharts 已正确引入,如果没有引入 ECharts,可以在 HTML head 标签中添加以下代码:, ,至此,我们已经在 Vue 项目中成功引入了 ECharts 并创建了一个简单的柱状图,接下来是相关问题与解答的栏目:,Q1:如何在 ECharts 中设置图表的标题?A1: chart.setOption({title: {}});,title 可以是一个对象或者一个字符串,A1: chart.setOption({title: {'text': '我的柱状图'}}); 或者 A1: chart.setOption({title: '我的柱状图'});,也可以设置标题的位置、字体大小等属性,A1: chart.setOption({title: {'text': '我的柱状图', 'left': 'center'}}); 或者 A1: chart.setOption({title: {'text': '我的柱状图', 'top': '40%'}});。,您可以使用以下方式在Vue中引入图表:,,1. 使用echarts-vue-wrapper库,它提供了一个基于e charts的Vue组件,可以轻松地在Vue中创建和使用图表。 ,2. 使用 vue-chartjs库,它是一个基于Chart.js的Vue插件,可以轻松地在Vue中创建和使用图表。

CDN资讯
vue 闭包-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

vue 闭包

在Vue框架中, 闭包(closure)是一种常见的特性,它允许你访问函数作用域内的变量,即使函数在其作用域之外被调用,闭包在各种场景下都非常有用,例如在创建私有变量、实现组件间通信、以及在某些高级功能如自定义指令和插件中,以下是Vue框架中使用到闭包的一些模块:,1. 计算属性 (Computed Properties), ,计算属性是Vue中响应式系统的一部分,它允许你声明式地定义一些依赖于其他响应式数据的属性,计算属性的getter函数会创建一个闭包,这样它可以访问和跟踪其依赖的数据源,当依赖的数据变化时,计算属性会重新求值。,在上面的例子中, fullName是一个计算属性,它返回一个由 firstName和 lastName组合而成的全名,由于计算属性的函数会形成闭包, fullName能够访问并追踪 this.firstName和 this.lastName的变化。,2. 方法 (Methods),在Vue实例的方法中,你也可以利用闭包来访问实例的属性,这使得方法可以在其自身作用域之外保持对实例数据的引用。,在上面的例子中, fetchData方法创建了一个闭包,通过将 this赋值给 self变量来保存对Vue实例的引用,这样即使在异步回调中,也能够正确地更新实例的 data属性。,3. 生命周期钩子 (Lifecycle Hooks),Vue实例的生命周期钩子也使用了闭包,这些钩子函数可以访问整个Vue实例,包括它的数据、计算属性、方法和生命周期钩子,由于闭包的存在,即使这些函数在Vue实例初始化之外执行,它们仍然能够访问到Vue实例的内部状态。,在上面的例子中, created生命周期钩子内部创建了一个闭包,使得即使在异步操作( setTimeout)中,也能够访问到Vue实例的 message属性。, ,4. 自定义指令 (Custom Directives),自定义指令也可以使用闭包来维护状态或访问外部作用域的数据,这在需要跨多个组件共享数据或逻辑时特别有用。,在这个自定义指令中, inserted钩子函数创建了一个闭包变量 isFocused,并通过 $watch监听指令绑定的值来更新这个变量。,相关问题与解答,Q1: 在Vue中,闭包如何影响性能?,A1: 闭包可能导致内存占用增加,因为闭包中的变量不会立即被垃圾回收机制清除,如果闭包引用了大量的数据或者长时间存活,可能会导致内存泄漏,在使用闭包时要注意适时解除不再需要的引用。,Q2: 如何在Vue中避免因闭包引起的内存泄漏?,A2: 可以通过以下方式避免内存泄漏:, ,确保在不需要时解除对数据的引用。,使用 beforeDestroy或 destroyed生命周期钩子来清理定时器或订阅等可能引起闭包的资源。,使用 computed属性而不是方法来处理复杂的计算,因为计算属性有自动的依赖追踪和缓存机制。,Q3: 在Vue中,闭包能否访问局部作用域之外的变量?,A3: 是的,闭包可以访问其自身作用域内的变量,以及在其定义时所处的外部环境的变量,这意味着闭包可以访问函数的局部变量,以及外部函数的局部变量。,Q4: Vue中的哪些内置特性使用了闭包?,A4: Vue中的计算属性、方法、生命周期钩子和自定义指令都使用了闭包,这些特性利用闭包来访问和操作Vue实例的数据,以及在不同的作用域和时间点保持数据的一致性。,

网站运维
nocontrollerfound黑屏-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

nocontrollerfound黑屏

【nocontrollerfound】是一个非常常见的错误信息,通常出现在使用Vue.js开发Web应用程序时,这个错误意味着在当前页面中没有找到名为“controller”的Vue实例,这个问题可能是由于以下原因导致的:,1. 没有正确地引入Vue.js库。, ,2. 没有正确地创建Vue实例。,3. 在HTML文件中使用了错误的语法。,4. 在Vue实例中没有定义名为“controller”的选项。, ,为了解决这个问题,你可以按照以下步骤进行操作:,1. 确保你已经正确地引入了Vue.js库,在HTML文件中添加以下代码:,2. 创建一个Vue实例,并确保它包含一个名为“controller”的选项,在HTML文件中添加以下代码:, ,3. 如果你使用的是单文件组件(SFC),请确保你的模板、脚本和样式部分都正确地分开,并且在“标签中正确地引入了Vue实例。,4. 如果以上步骤都没有解决问题,你可以尝试使用其他版本的Vue.js库,或者检查你的代码是否存在其他错误。,

CDN资讯
vue点击事件-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

vue点击事件

Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架,它的核心库只关注视图层,易于与其他库或已有项目整合,Vue.js 提供了一些基本的事件系统,包括点击事件,本文将详细介绍 Vue.js 中的点击事件以及如何使用它们。,我们需要在 Vue 实例中定义一个方法来处理点击事件,这个方法可以接收两个参数:event(原生的 DOM 事件对象)和 target(被点击的元素),在 Vue 实例的方法中,我们可以使用 event 对象来获取用户的交互信息,如鼠标的位置、按键等, target 对象则包含了被点击元素的相关信息,如标签名、类名等。, ,以下是一个简单的 Vue 实例,演示了如何在点击按钮时弹出一个提示框:,在这个例子中,我们使用了 `@click` 指令来监听按钮的点击事件,当用户点击按钮时,会触发 `handleClick` 方法,这个方法接收两个参数:`event` 和 `target`,我们可以通过 `event.target` 获取到被点击的元素,然后在控制台中打印出它的标签名。,除了 `@click` 指令,Vue 还提供了其他的事件绑定方式,如 `v-on`、`v-once`、`v-for`、`v-if`、`v-model`、`v-bind`、`v-show`、`v-text`、`v-html`、`v-pre`、`v-cloak`、`v-pass`、`v-once`、`v-else-if`、`v-else`、`v-catch`、`v-finally`、`v-return`、`v-throw`、`v-on-error`、`v-slot` 和 `v-contextmenu`,它们分别对应不同的事件类型和场景。,接下来,我们来看一些常见的 Vue 点击事件及其用法:,1. **点击输入框**:当用户点击输入框时,可以获取到输入框中的值。,2. **点击下拉菜单**:当用户点击下拉菜单时,可以获取到选中的选项值。,3. **点击按钮组**:当用户点击一组按钮时,可以获取到被点击的按钮的索引。, ,“`javascript,new Vue({,el: ‘#app’,,data: {,items: [{ text: ‘按钮1’ }, { text: ‘按钮2’ }, { text: ‘按钮3’}],,numClicks: null // 当用户点击按钮时,更新这个值以记录点击次数,},, ,methods: {,handleButtonClick: function(index) {,var numClicks = this.numClicks || {}; // 如果 numClicks 为 null,初始化为空对象,避免出现 undefined -> null -> object 这种错误链式调用的情况,numClicks[index] = (numClicks[index] || 0) + 1; // 如果当前索引没有被点击过,初始化计数为0;否则,计数加1,最后将更新后的计数赋值给 numClicks[index],这样我们就可以知道每个按钮被点击了多少次,我们还可以根据 numClicks[index] 实现一些逻辑,例如显示或隐藏某个按钮等。,},

CDN资讯
vue.min.js-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

vue.min.js

Vue.js是一款用于构建用户界面的渐进式JavaScript框架,与其他大型框架不同的是,Vue被设计为可以自底向上逐层应用,Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合,下面我们来详细了解一下【vue.min.js】。,Vue.js的特点, ,1. **响应式数据绑定**:Vue.js采用数据劫持的方式,对数据进行监听,当数据发生变化时,自动更新视图,这种方式使得开发者无需手动操作DOM,提高了开发效率。,2. **组件化**:Vue.js将一个页面拆分成多个组件,每个组件负责一部分功能,组件之间相互独立,可以灵活组合使用,这种方式使得代码结构更加清晰,便于维护和扩展。,3. **虚拟DOM**:Vue.js使用虚拟DOM技术,通过对比新旧虚拟DOM树的差异,只更新需要更新的部分,从而提高性能。,4. **轻量级**:Vue.js的核心库非常小巧,加载速度快,对于大型项目来说,可以有效降低服务器压力。,5. **易学易用**:Vue.js的学习曲线较为平缓,语法简洁明了,文档丰富,社区活跃,方便开发者快速上手。,Vue.js的使用方法,1. 首先在HTML文件中引入Vue.js库:,2. 创建一个Vue实例,并挂载到指定的元素上:, ,3. 在HTML中使用双大括号语法绑定数据:,Vue.js的应用场景,1. **单页应用(SPA)**:Vue.js非常适合构建单页应用,通过路由实现页面之间的跳转,无需刷新整个页面。,2. **移动端开发**:Vue.js可以与各种前端框架结合使用,如Weex、Quasar等,轻松构建跨平台的移动端应用。,3. **桌面应用**:Vue.js也可以用于构建桌面应用,如Electron等。,4. **后端渲染**:Vue.js支持服务器端渲染,可以将模板编译成JavaScript代码,然后在浏览器中执行,这样可以减轻客户端的负担,提高加载速度。,相关问题与解答,1. Q: Vue.js与React有什么区别?, ,A: Vue.js和React都是用于构建用户界面的框架,但它们有一些不同之处,Vue.js采用MVVM架构,数据驱动视图;而React采用MVC架构,视图驱动状态,Vue.js的学习曲线相对较低,更适合初学者;而React的功能更加强大,适用于大型项目。,2. Q: 如何实现Vue组件之间的通信?,A: Vue提供了两种方式实现组件间通信:`props`和自定义事件,通过`props`,父组件向子组件传递数据;通过自定义事件,子组件向父组件发送消息,这两种方式都可以通过`$emit`和`$on`方法实现双向通信。,3. Q: 如何实现Vue的懒加载?,A: Vue的懒加载可以通过动态导入模块的方式实现,可以使用`import()`函数动态导入组件:,4. Q: 如何实现Vue的数据双向绑定?,A: Vue的数据双向绑定是通过Object.defineProperty()方法实现的,在Vue实例的data对象上定义getter和setter方法,当数据发生变化时,自动更新视图,可以在模板中使用双大括号语法进行数据绑定。,

CDN资讯

浏览器渲染

以主流浏览器谷歌为例,它使用的就是 Webkit 内核,它渲染 dom 的过程是什么样的? 将载入的 HTML 文件解析成 DOM 树(DOM Tree),并且将各个标记标识解析成 DOM 树的各个节点;在解析 HTML 的同时会将 CSS 样式解析成 CSS 规则(CSS Rules) 将解析成的 DOM 树和 CSS 规则进行关联生成渲染树(Render Tree) 进入布局阶段,为 DOM 树的每个节点分配在屏幕上出现的确切坐标(这一阶段还是渲染树) 进入绘制阶段,在这里渲染引擎的工作就结束了,接下来就给用户界面后端(UI Backend)对渲染树的每个节点进行绘制,呈现出页面效果。 重排: 当 DOM 节点信息发生变化,例如位置改变,DOM 节点大小改变,都会对该 DOM 重新计算,并进行布局/回流操作; 缩放浏览器窗口; 改变页面中 DOM 节点大小或位置; 通过 innerHTML/innerText 修改 DOM 节点上的字体信息。注意:文本也属于 DOM 节点之一(文本节点); 通过 JS 的 dom 中 style 属性来改变 DOM 节点的样式; 通过 JS 对 DOM 节点进行操作(访问/新增/删除/更新); HTML 页面首次呈现; 重绘: 当 DOM 节点信息不发生变化时,只改变了 DOM 节点的外貌样式时(不改变 DOM 节点的位置和大小,只改变字体颜色或背景色等)。会对该 DOM 进行重新绘制。注意有重排必定会有重绘,有重绘不一定有重排; 在更新视图的时候难免要操作 DOM,而操作真实 DOM 又是非常耗费性能的,这是因为浏览器的标准就把 DOM 设计的非常复杂,所以一个真正的 DOM 元素是非常庞大的。如果直接用 JS 操作 DOM 是很浪费性能的。因为每次通过 JS 操作(访问/新增/删除/更新)DOM 都会导致 DOM Tree(DOM 树)重新布局/回流、绘制(简称重排、重绘过程)。

技术分享