说说Vue 3.0中Treeshaking特性?举例说明一下?

这篇具有很好参考价值的文章主要介绍了说说Vue 3.0中Treeshaking特性?举例说明一下?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

说说Vue 3.0中Treeshaking特性?举例说明一下?

 

一、是什么

Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术,专业术语叫 Dead code elimination

简单来讲,就是在保持代码运行结果不变的前提下,去除无用的代码

如果把代码打包比作制作蛋糕,传统的方式是把鸡蛋(带壳)全部丢进去搅拌,然后放入烤箱,最后把(没有用的)蛋壳全部挑选并剔除出去

treeshaking则是一开始就把有用的蛋白蛋黄(import)放入搅拌,最后直接作出蛋糕

也就是说 ,tree shaking 其实是找出使用的代码

Vue2中,无论我们使用什么功能,它们最终都会出现在生产代码中。主要原因是Vue实例在项目中是单例的,捆绑程序无法检测到该对象的哪些属性在代码中被使用到

import Vue from 'vue'
 
Vue.nextTick(() => {})

Vue3源码引入tree shaking特性,将全局 API 进行分块。如果您不使用其某些功能,它们将不会包含在您的基础包中

import { nextTick, observable } from 'vue'
 
nextTick(() => {})

二、如何做

Tree shaking是基于ES6模板语法(importexports),主要是借助ES6模块的静态编译思想,在编译时就能确定模块的依赖关系,以及输入和输出的变量

Tree shaking无非就是做了两件事:

  • 编译阶段利用ES6 Module判断哪些模块已经加载
  • 判断那些模块和变量未被使用或者引用,进而删除对应代码

下面就来举个例子:

通过脚手架vue-cli安装Vue2Vue3项目

vue create vue-demo

Vue2 项目

组件中使用data属性

<script>
    export default {
        data: () => ({
            count: 1,
        }),
    };
</script>

对项目进行打包,体积如下图

说说Vue 3.0中Treeshaking特性?举例说明一下?

为组件设置其他属性(comptedwatch

export default {
    data: () => ({
        question:"", 
        count: 1,
    }),
    computed: {
        double: function () {
            return this.count * 2;
        },
    },
    watch: {
        question: function (newQuestion, oldQuestion) {
            this.answer = 'xxxx'
        }
};

再一次打包,发现打包出来的体积并没有变化

说说Vue 3.0中Treeshaking特性?举例说明一下?

Vue3 项目

组件中简单使用

import { reactive, defineComponent } from "vue";
export default defineComponent({
  setup() {
    const state = reactive({
      count: 1,
    });
    return {
      state,
    };
  },
});

将项目进行打包

说说Vue 3.0中Treeshaking特性?举例说明一下?

 在组件中引入computedwatch

import { reactive, defineComponent, computed, watch } from "vue";
export default defineComponent({
  setup() {
    const state = reactive({
      count: 1,
    });
    const double = computed(() => {
      return state.count * 2;
    });

    watch(
      () => state.count,
      (count, preCount) => {
        console.log(count);
        console.log(preCount);
      }
    );
    return {
      state,
      double,
    };
  },
});

再次对项目进行打包,可以看到在引入computerwatch之后,项目整体体积变大了

说说Vue 3.0中Treeshaking特性?举例说明一下?

三、作用

通过Tree shakingVue3给我们带来的好处是:文章来源地址https://www.toymoban.com/news/detail-837823.html

  • 减少程序体积(更小)
  • 减少程序执行时间(更快)
  • 便于将来对程序架构进行优化(更友好)

参考文献

  • https://segmentfault.com/a/1190000038962700

到了这里,关于说说Vue 3.0中Treeshaking特性?举例说明一下?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue 3.0中的Treeshaking?

    Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术,专业术语叫 Dead code elimination 简单来讲,就是在保持代码运行结果不变的前提下,去除无用的代码 如果把代码打包比作制作蛋糕,传统的方式是把鸡蛋(带壳)全部丢进去搅拌,然后放入烤箱,最后把(没有

    2024年02月13日
    浏览(82)
  • Vue 3.0 学习 新特性

    1. 简介 Vue.js 作者兼核心开发者 尤雨溪 宣布 Vue 3.0 进入 Beta 阶段。 已合并所有计划内的 RFC 已实现所有被合并的 RFC Vue CLI 现在通过 vue-cli-plugin-vue-next 提供了实验性支持 2. 新特性 重点关注: 更快更省 Object.defineProperty —— Proxy 重构 Virtual DOM 完全的TypeScript 团队开发更轻松

    2024年02月07日
    浏览(36)
  • 什么是Vue指令?举例说明几个常用的Vue指令。

    Vue指令是Vue.js框架中用于修改DOM元素行为和属性的特殊属性。它们以 v- 开头,并且可以通过Vue模板语法在HTML标记中进行使用。Vue指令允许我们在模板中添加动态功能和交互性。 以下是几个常用的Vue指令的例子: v-if:通过条件判断,用于根据条件的真假来动态地插入或移除

    2024年02月16日
    浏览(34)
  • Nuxt3重点特性使用举例记录

    小聊: 基于vue.js,用于SSR渲染解决SEO,但不仅限于此。不用于局限的眼光去看它,使用它会比原生vue3更加流畅舒适,性能也更高。在熟悉vue3的基础上学习成不算高。另外,它完全支持vue3语法,相比于vue3,它改进了vue3的一些功能,Nuxt3有一些“约定”,你可以理解为是一些

    2024年02月07日
    浏览(43)
  • 举例说明什么是循环神经网络

    循环神经网络(Recurrent Neural Network, RNN)是一种处理时间序列数据和自然语言等具有顺序信息的数据的神经网络模型。与普通的前馈神经网络(Feedforward Neural Network)不同,RNN具有循环连接,使得网络能够在处理当前输入信息的同时保留之前输入的信息。 举一个简单的例子:

    2024年02月12日
    浏览(61)
  • 记录一下基于jeecg-boot3.0的待办消息移植记录

        因为之前没有记录,所以还要看代码进行寻找,比较费劲,所以今天记录一下: 1、后端 SysAnnouncementController 下面函数增加待办的几个显示内容给前端用  具体代码如下: 2、前端 HeaderNotice.vue 文件 获取系统消息里增加待办内容   同时显示的地方做调整,包括样式与内容

    2024年02月12日
    浏览(47)
  • 举例说明单层神经网络的工作原理

    假设我们有一个简单的单层神经网络,用于解决一个简单的问题:根据一个人的年龄(x)来预测其收入(y)。在这个例子中,输入数据只有一个特征(年龄),因此我们可以用一个一维输入向量x来表示。输出结果y也是一个一维向量。 单层神经网络的结构如下: 1. 输入层:

    2024年02月16日
    浏览(51)
  • 举例说明自然语言处理(NLP)技术

    自然语言处理(NLP)技术是一种人工智能领域的技术,用于处理自然语言文本或语音信号。下面是一些自然语言处理技术的例子: 机器翻译:机器翻译是一种自然语言处理的技术,它可以将一种语言的文本翻译成另一种语言的文本,如将英语翻译成中文。 命名实体识别:命

    2024年02月10日
    浏览(53)
  • Spring boot 3.0新特性详解

    Spring Boot 3.0 在 2021 年 9 月发布,该版本带来许多令人兴奋的新特性。本文将详细介绍 Spring Boot 3.0 的主要新特性。 Spring Boot 3.0 要求 JDK 11 或更高版本。并且官方建议使用 Java 16,可以充分利用其新特性。 Spring Boot 3.0 首次官方支持 WebFlux - Spring 的反应式框架。我们可以很容易地开

    2024年02月05日
    浏览(58)
  • Python面向对象编程详细解析(都带举例说明!)

    Python面向对象编程 (Object-Oriented Programming,简称OOP) 是一种编程范式,它将数据和操作数据的方法封装在一起,形成一个对象。 Python中的面向对象编程包括以下内容: 想找辣条哥的话直接戳这里,辣条之前的一些Python相关都可以拿走: 类是一种抽象的数据类型,它定义了

    2024年02月06日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包