欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue 3.0中Treeshaking特性及作用

 更新時(shí)間:2023年10月31日 09:54:41   作者:囂張農(nóng)民  
Tree shaking 是一種通過清除多余代碼方式來優(yōu)化項(xiàng)目打包體積的技術(shù),就是在保持代碼運(yùn)行結(jié)果不變的前提下,去除無用的代碼,本文給大家介紹Vue 3.0中Treeshaking特性是什么,感興趣的朋友一起看看吧

一、是什么

Tree shaking 是一種通過清除多余代碼方式來優(yōu)化項(xiàng)目打包體積的技術(shù),專業(yè)術(shù)語叫 Dead code elimination

簡單來講,就是在保持代碼運(yùn)行結(jié)果不變的前提下,去除無用的代碼

如果把代碼打包比作制作蛋糕,傳統(tǒng)的方式是把雞蛋(帶殼)全部丟進(jìn)去攪拌,然后放入烤箱,最后把(沒有用的)蛋殼全部挑選并剔除出去

treeshaking則是一開始就把有用的蛋白蛋黃(import)放入攪拌,最后直接作出蛋糕

也就是說 ,tree shaking 其實(shí)是找出使用的代碼

Vue2中,無論我們使用什么功能,它們最終都會(huì)出現(xiàn)在生產(chǎn)代碼中。主要原因是Vue實(shí)例在項(xiàng)目中是單例的,捆綁程序無法檢測到該對象的哪些屬性在代碼中被使用到

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

Vue3源碼引入tree shaking特性,將全局 API 進(jìn)行分塊。如果您不使用其某些功能,它們將不會(huì)包含在您的基礎(chǔ)包中

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

二、如何做

Tree shaking是基于ES6模板語法(importexports),主要是借助ES6模塊的靜態(tài)編譯思想,在編譯時(shí)就能確定模塊的依賴關(guān)系,以及輸入和輸出的變量

Tree shaking無非就是做了兩件事:

  • 編譯階段利用ES6 Module判斷哪些模塊已經(jīng)加載
  • 判斷那些模塊和變量未被使用或者引用,進(jìn)而刪除對應(yīng)代碼

下面就來舉個(gè)例子:

通過腳手架vue-cli安裝Vue2Vue3項(xiàng)目

Vue2 項(xiàng)目

組件中使用data屬性

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

對項(xiàng)目進(jìn)行打包,體積如下圖

為組件設(shè)置其他屬性(comptedwatch

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

再一次打包,發(fā)現(xiàn)打包出來的體積并沒有變化

Vue3 項(xiàng)目

組件中簡單使用

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

將項(xiàng)目進(jìn)行打包

在組件中引入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,
    };
  },
});

再次對項(xiàng)目進(jìn)行打包,可以看到在引入computerwatch之后,項(xiàng)目整體體積變大了

三、作用

通過Tree shaking,Vue3給我們帶來的好處是:

  • 減少程序體積(更?。?/li>
  • 減少程序執(zhí)行時(shí)間(更快)
  • 便于將來對程序架構(gòu)進(jìn)行優(yōu)化(更友好)

參考文獻(xiàn)

https://segmentfault.com/a/1190000038962700

到此這篇關(guān)于Vue 3.0中Treeshaking特性是什么?的文章就介紹到這了,更多相關(guān)Vue 3.0 Treeshaking特性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue.use的原理和設(shè)計(jì)源碼探究

    Vue.use的原理和設(shè)計(jì)源碼探究

    這篇文章主要為大家介紹了Vue.use的原理和設(shè)計(jì)源碼探究詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • VUE3基礎(chǔ)學(xué)習(xí)之click事件詳解

    VUE3基礎(chǔ)學(xué)習(xí)之click事件詳解

    由于vue是一個(gè)雙向數(shù)據(jù)綁定的框架,它的點(diǎn)擊事件與以前常用的還是有很大的差別的,下面這篇文章主要給大家介紹了關(guān)于VUE3基礎(chǔ)學(xué)習(xí)之click事件的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Vue mixins詳解與使用技巧

    Vue mixins詳解與使用技巧

    Vue mixins提供了一個(gè)非常靈活的方式來分發(fā)Vue組件中的可復(fù)用功能,通過全局混入和局部混入,可以將預(yù)定義的方法、數(shù)據(jù)等混合到Vue組件中,這種技術(shù)可以簡化代碼,提高開發(fā)效率,并允許在不同組件間共享功能
    2024-09-09
  • vue-router報(bào)錯(cuò):uncaught error during route navigati問題及解決

    vue-router報(bào)錯(cuò):uncaught error during route 

    這篇文章主要介紹了vue-router報(bào)錯(cuò):uncaught error during route navigati問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 移動(dòng)端調(diào)試神器vConsole使用詳解

    移動(dòng)端調(diào)試神器vConsole使用詳解

    vConsole?是框架無關(guān)的,可以在?Vue、React?或其他任何框架中使用,今天通過本文給大家介紹移動(dòng)端調(diào)試神器vConsole使用,感興趣的朋友一起看看吧
    2022-04-04
  • 微信小程序?qū)崙?zhàn)基于vue2實(shí)現(xiàn)瀑布流的代碼實(shí)例

    微信小程序?qū)崙?zhàn)基于vue2實(shí)現(xiàn)瀑布流的代碼實(shí)例

    瀑布流,又稱瀑布流式布局,是比較流行的一種網(wǎng)站頁面布局,視覺表現(xiàn)為參差不齊的多欄布局,隨著頁面滾動(dòng)條向下滾動(dòng),這種布局還會(huì)不斷加載數(shù)據(jù)塊并附加至當(dāng)前尾部,這篇文章主要介紹了微信小程序?qū)崙?zhàn),基于vue2實(shí)現(xiàn)瀑布流,需要的朋友可以參考下
    2022-12-12
  • vue如何解決輪播圖(Swiper)第一張圖片一閃而過問題

    vue如何解決輪播圖(Swiper)第一張圖片一閃而過問題

    這篇文章主要介紹了vue如何解決輪播圖(Swiper)第一張圖片一閃而過問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Element el-button 按鈕組件的使用詳解

    Element el-button 按鈕組件的使用詳解

    這篇文章主要介紹了Element el-button 按鈕組件的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • vue+element-ui前端使用print-js實(shí)現(xiàn)打印功能(可自定義樣式)

    vue+element-ui前端使用print-js實(shí)現(xiàn)打印功能(可自定義樣式)

    Print.js主要是為了幫助我們直接在瀏覽器中開發(fā)打印功能,下面這篇文章主要給大家介紹了關(guān)于vue+element-ui前端使用print-js實(shí)現(xiàn)打印功能(可自定義樣式)的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 說說Vuex的getters屬性的具體用法

    說說Vuex的getters屬性的具體用法

    這篇文章主要介紹了說說Vuex的getters屬性的具體用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04

最新評論