最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue?項(xiàng)目中通過(guò)?Vite?實(shí)現(xiàn)按需加載功能對(duì)比?Webpack?的優(yōu)缺點(diǎn)分析

 更新時(shí)間:2025年06月12日 08:46:42   作者:前端布洛芬  
這篇文章主要介紹了Vue項(xiàng)目中通過(guò)Vite實(shí)現(xiàn)按需加載功能對(duì)比Webpack的優(yōu)缺點(diǎn)分析,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

大白話 Vue 項(xiàng)目中如何通過(guò) Vite 實(shí)現(xiàn)按需加載?對(duì)比 Webpack 的優(yōu)缺點(diǎn)。

前端同學(xué)有沒(méi)有遇到過(guò)這種崩潰場(chǎng)景?
開(kāi)發(fā)的Vue項(xiàng)目上線后,用戶(hù)抱怨"點(diǎn)個(gè)頁(yè)面轉(zhuǎn)5秒"——打開(kāi)Chrome DevTools一看,app.js足有2MB!里面塞著沒(méi)用到的組件、第三方庫(kù),甚至去年刪掉的代碼……今天咱們就聊前端性能優(yōu)化的"續(xù)命神器"——按需加載,用Vite和Webpack兩種主流工具實(shí)現(xiàn),看完這篇,你不僅能讓首屏快到飛起,還能和面試官?lài)Z明白底層邏輯~

一、首屏加載慢的"三大元兇"

先講個(gè)我上周接的優(yōu)化需求:某電商Vue項(xiàng)目首屏加載時(shí)間3.8秒(行業(yè)平均優(yōu)秀線是1.5秒)。用Lighthouse一測(cè),問(wèn)題全在"一次性加載太多代碼":

  • 全量加載組件:不管用戶(hù)看不看"商品評(píng)論"組件,打包時(shí)全塞到app.js里;
  • 第三方庫(kù)臃腫element-plus、lodash等庫(kù)整個(gè)引入,實(shí)際只用了10%功能;
  • 路由未懶加載:所有路由組件一次性加載,用戶(hù)點(diǎn)第一個(gè)頁(yè)面卻要等所有頁(yè)面的代碼。

這些問(wèn)題的根源,是代碼"一刀切"打包——把所有代碼塞成一個(gè)大文件,用戶(hù)打開(kāi)頁(yè)面時(shí)得先下載這個(gè)"大文件"才能看到內(nèi)容。而按需加載(Code Splitting)的核心,就是把代碼拆成多個(gè)小文件,用戶(hù)需要時(shí)再加載(比如點(diǎn)進(jìn)某個(gè)路由再加載對(duì)應(yīng)組件),直接解決首屏慢的痛點(diǎn)~

二、按需加載的"底層邏輯"

要搞懂Vite和Webpack的按需加載,得先明白**代碼分割(Code Splitting)**的底層原理:

1. 核心思想:“用多少,下多少”

瀏覽器加載JS文件是"阻塞式"的——下載完app.js才能執(zhí)行渲染。代碼分割就是把大文件拆成多個(gè)小文件(chunk),用戶(hù)訪問(wèn)某個(gè)功能時(shí),再動(dòng)態(tài)加載對(duì)應(yīng)的chunk。比如:

  • 路由懶加載:用戶(hù)點(diǎn)擊"我的訂單"路由時(shí),再加載訂單頁(yè)面的chunk;
  • 組件懶加載:用戶(hù)滾動(dòng)到"推薦商品"組件時(shí),再加載該組件的chunk;第三方庫(kù)拆分:把element-plus拆成button.chunk.jsinput.chunk.js,用哪個(gè)下哪個(gè)。

2. Vite vs Webpack:底層工具鏈的差異

Vite和Webpack都支持代碼分割,但底層實(shí)現(xiàn)不同:

Vite基于Rollup,利用ES模塊的import()動(dòng)態(tài)導(dǎo)入語(yǔ)法(原生支持),配合vite.config.jsbuild.rollupOptions配置,實(shí)現(xiàn)更細(xì)粒度的拆分;Webpack基于自身的代碼分割機(jī)制,通過(guò)import()動(dòng)態(tài)導(dǎo)入、splitChunks插件(優(yōu)化公共代碼)、webpackPrefetch注釋?zhuān)A(yù)加載)實(shí)現(xiàn)拆分。

3. 按需加載的"觸發(fā)條件"

無(wú)論用Vite還是Webpack,按需加載的觸發(fā)都依賴(lài)動(dòng)態(tài)導(dǎo)入(Dynamic Import)——這是ES6的標(biāo)準(zhǔn)語(yǔ)法,返回一個(gè)Promise,瀏覽器會(huì)在運(yùn)行時(shí)請(qǐng)求對(duì)應(yīng)的JS文件。示例:

// 動(dòng)態(tài)導(dǎo)入組件(返回Promise)
import('./components/Comment.vue').then((module) => {
  // 加載完成后使用組件
});

三、代碼示例:Vite和Webpack的實(shí)現(xiàn)對(duì)比

以Vue項(xiàng)目的"路由懶加載"和"組件懶加載"為例,看Vite和Webpack的具體實(shí)現(xiàn)。

場(chǎng)景1:路由懶加載(最常用場(chǎng)景) Vite實(shí)現(xiàn)(Vue Router 4+)

Vue Router默認(rèn)支持動(dòng)態(tài)導(dǎo)入,Vite會(huì)自動(dòng)將動(dòng)態(tài)導(dǎo)入的路由組件拆分成獨(dú)立chunk。

// router/index.js(Vite版)
import { createRouter, createWebHistory } from 'vue-router';
const router = createRouter({
  history: createWebHistory(),
  routes: [
    {
      path: '/',
      name: 'Home',
      component: () => import('@/views/Home.vue'), // 動(dòng)態(tài)導(dǎo)入:拆分成Home-chunk.js
    },
    {
      path: '/order',
      name: 'Order',
      component: () => import('@/views/Order.vue'), // 拆分成Order-chunk.js
    },
    {
      path: '/profile',
      name: 'Profile',
      // 可選:添加預(yù)加載注釋?zhuān)╒ite會(huì)生成<link rel="preload">)
      component: () => import(/* @vite-ignore */ '@/views/Profile.vue'), // 忽略預(yù)加載(可選)
    },
  ],
});
export default router;

Vite的特殊優(yōu)化

  • 自動(dòng)生成chunk名(如Home.vue拆成Home-xxx.js);
  • 支持/* @vite-ignore */注釋跳過(guò)預(yù)加載(適合低頻路由);
  • 開(kāi)發(fā)時(shí)用ES模塊原生加載,無(wú)需等待打包。

Webpack實(shí)現(xiàn)(Vue Router 4+)

Webpack需要配合webpackChunkName注釋自定義chunk名,并用splitChunks優(yōu)化公共代碼。

// router/index.js(Webpack版)
import { createRouter, createWebHistory } from 'vue-router';
const router = createRouter({
  history: createWebHistory(),
  routes: [
    {
      path: '/',
      name: 'Home',
      // 動(dòng)態(tài)導(dǎo)入+chunk名注釋?zhuān)╓ebpack專(zhuān)屬)
      component: () => import(/* webpackChunkName: "home" */ '@/views/Home.vue'),
    },
    {
      path: '/order',
      name: 'Order',
      component: () => import(/* webpackChunkName: "order" */ '@/views/Order.vue'),
    },
    {
      path: '/profile',
      name: 'Profile',
      // 預(yù)加載注釋?zhuān)╓ebpack會(huì)生成<link rel="prefetch">)
      component: () => import(/* webpackPrefetch: true */ '@/views/Profile.vue'),
    },
  ],
});
export default router;

Webpack的特殊配置

  • 需要在webpack.config.js中配置splitChunks(默認(rèn)已優(yōu)化,但復(fù)雜項(xiàng)目需自定義);
  • webpackChunkName控制chunk命名(方便調(diào)試);
  • webpackPrefetch標(biāo)記高頻路由,瀏覽器空閑時(shí)預(yù)加載。

場(chǎng)景2:組件懶加載(動(dòng)態(tài)組件)

Vite實(shí)現(xiàn)(Vue 3+)

Vue 3的defineAsyncComponent可以懶加載組件,Vite自動(dòng)拆分chunk。

<template>
  <!-- 點(diǎn)擊按鈕后加載組件 -->
  <button @click="loadComment">加載評(píng)論</button>
  <component :is="CommentComponent" v-if="CommentComponent" />
</template>
<script setup>
import { defineAsyncComponent } from 'vue';
// 定義異步組件(Vite拆分成Comment-chunk.js)
const loadComment = () => {
  // 動(dòng)態(tài)導(dǎo)入+加載狀態(tài)(可選)
  const CommentComponent = defineAsyncComponent({
    loader: () => import('@/components/Comment.vue'),
    loadingComponent: () => '加載中...', // 加載時(shí)顯示的占位
    errorComponent: () => '加載失??!', // 加載失敗顯示的提示
  });
  // 賦值給模板使用
  CommentComponent.value = CommentComponent;
};
</script>

Webpack實(shí)現(xiàn)(Vue 3+)

Webpack同樣用defineAsyncComponent,但需配合webpackMode: 'lazy'(默認(rèn)已支持)。

<template>
  <button @click="loadComment">加載評(píng)論</button>
  <component :is="CommentComponent" v-if="CommentComponent" />
</template>
<script setup>
import { defineAsyncComponent } from 'vue';
const loadComment = () => {
  const CommentComponent = defineAsyncComponent({
    // Webpack專(zhuān)屬注釋?zhuān)刂撇鸱址绞剑?
    loader: () => import(/* webpackMode: "lazy" */ '@/components/Comment.vue'),
    loadingComponent: () => '加載中...',
    errorComponent: () => '加載失??!',
  });
  CommentComponent.value = CommentComponent;
};
</script>

場(chǎng)景3:第三方庫(kù)按需加載(以Element Plus為例) Vite實(shí)現(xiàn)(配合unplugin-vue-components

Vite通過(guò)unplugin-vue-components自動(dòng)按需導(dǎo)入組件,無(wú)需手動(dòng)import。

# 安裝插件
npm install unplugin-vue-components -D
// vite.config.js
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import Components from 'unplugin-vue-components/vite';
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
export default defineConfig({
  plugins: [
    vue(),
    // 自動(dòng)按需導(dǎo)入Element Plus組件
    Components({
      resolvers: [ElementPlusResolver()], // 指定Element Plus解析器
    }),
  ],
});

效果

  • 只需在模板中使用<el-button>,插件自動(dòng)導(dǎo)入對(duì)應(yīng)的el-button代碼;
  • 打包時(shí)只生成用到的組件chunk(如el-button-chunk.js)。 Webpack實(shí)現(xiàn)(配合babel-plugin-import

Webpack通過(guò)babel-plugin-import實(shí)現(xiàn)按需導(dǎo)入。

# 安裝插件
npm install babel-plugin-import -D
// babel.config.js
module.exports = {
  plugins: [
    [
      'import',
      {
        libraryName: 'element-plus',
        libraryDirectory: 'es',
        style: 'css', // 按需導(dǎo)入樣式
      },
      'element-plus',
    ],
  ],
};

效果

  • 手動(dòng)import { ElButton } from 'element-plus'時(shí),自動(dòng)只導(dǎo)入ElButton的代碼;
  • 打包時(shí)拆分ElButtonchunk

四、Vite vs Webpack的優(yōu)缺點(diǎn)

對(duì)比項(xiàng)ViteWebpack
配置復(fù)雜度低(插件自動(dòng)處理,如unplugin-vue-components中(需手動(dòng)配置splitChunks、babel-plugin-import
構(gòu)建速度快(開(kāi)發(fā)時(shí)用ES模塊原生加載,無(wú)需打包)慢(開(kāi)發(fā)時(shí)需編譯整個(gè)項(xiàng)目)
代碼拆分粒度細(xì)(基于Rollup的Tree Shaking更徹底)較細(xì)(依賴(lài)splitChunks配置)
第三方庫(kù)支持友好(unplugin系列插件生態(tài)豐富)友好(babel-plugin-import等成熟插件)
預(yù)加載控制支持/* @vite-ignore */跳過(guò)預(yù)加載支持webpackPrefetch標(biāo)記預(yù)加載
兼容性現(xiàn)代瀏覽器(依賴(lài)ES模塊)全兼容(支持傳統(tǒng)瀏覽器)
學(xué)習(xí)成本低(配置簡(jiǎn)單,接近原生JS)中(需掌握splitChunks等配置)

五、面試題回答方法

正常回答(結(jié)構(gòu)化):

“在Vue項(xiàng)目中實(shí)現(xiàn)按需加載,Vite和Webpack的核心都是通過(guò)代碼分割(Code Splitting)將大文件拆分成小chunk,用戶(hù)需要時(shí)動(dòng)態(tài)加載。具體差異:

  • 實(shí)現(xiàn)方式:Vite利用ES模塊的import()動(dòng)態(tài)導(dǎo)入,配合unplugin系列插件自動(dòng)處理第三方庫(kù);Webpack依賴(lài)import()+splitChunks插件+webpackChunkName注釋。
  • 優(yōu)勢(shì)對(duì)比:Vite配置更簡(jiǎn)單、構(gòu)建更快,適合現(xiàn)代項(xiàng)目;Webpack兼容性更好、配置更靈活,適合需要兼容舊瀏覽器的項(xiàng)目。
  • 典型場(chǎng)景:路由懶加載(import()動(dòng)態(tài)導(dǎo)入路由組件)、組件懶加載(defineAsyncComponent)、第三方庫(kù)按需導(dǎo)入(unplugin-vue-components/babel-plugin-import)。”

大白話回答(接地氣):

“按需加載就像點(diǎn)外賣(mài)——你餓了不會(huì)一次性點(diǎn)滿(mǎn)漢全席,而是先點(diǎn)碗面墊肚子,想吃甜點(diǎn)了再下單。
Vite像用‘新派外賣(mài)APP’:下單后秒響應(yīng)(開(kāi)發(fā)時(shí)不用等打包),配送(代碼拆分)更智能(Tree Shaking更徹底),還能自動(dòng)幫你只點(diǎn)需要的菜(unplugin插件按需導(dǎo)入組件)。
Webpack像‘傳統(tǒng)外賣(mài)平臺(tái)’:配送(代碼拆分)配置更復(fù)雜(得調(diào)splitChunks),但能送到更多老小區(qū)(兼容舊瀏覽器),適合需要照顧不同用戶(hù)的場(chǎng)景。
總之,小而新的項(xiàng)目用Vite更爽,大而全的項(xiàng)目選Webpack更穩(wěn)~”

六、總結(jié):

3個(gè)實(shí)戰(zhàn)建議+2個(gè)避坑指南

3個(gè)實(shí)戰(zhàn)建議:

  • 優(yōu)先用Vite:新項(xiàng)目或現(xiàn)代瀏覽器兼容的項(xiàng)目,Vite的按需加載配置更簡(jiǎn)單,開(kāi)發(fā)體驗(yàn)更絲滑;
  • 復(fù)雜項(xiàng)目用Webpack:需要兼容IE等舊瀏覽器,或需要精細(xì)控制chunk拆分(如按業(yè)務(wù)線拆分),選Webpack;
  • 善用插件:Vite用unplugin-vue-components,Webpack用babel-plugin-import,自動(dòng)處理第三方庫(kù)按需導(dǎo)入。

2個(gè)避坑指南:

  • 避免過(guò)度拆分chunk太小會(huì)增加HTTP請(qǐng)求數(shù)(瀏覽器并發(fā)請(qǐng)求有限),建議單個(gè)chunk控制在200KB以?xún)?nèi);
  • 預(yù)加載高頻路由:用webpackPrefetch(Webpack)或/* @vite-ignore */(Vite)標(biāo)記高頻路由,提升用戶(hù)體驗(yàn);
  • 測(cè)試懶加載效果:上線前用Lighthouse檢查chunk數(shù)量和大小,避免出現(xiàn)“拆分了但沒(méi)完全拆分”的情況(比如第三方庫(kù)未正確拆分)。

七、擴(kuò)展思考:4個(gè)高頻問(wèn)題解答

問(wèn)題1:Vite的import()和Webpack的import()有什么區(qū)別?

解答

  • Vite的import()是ES模塊原生支持的,開(kāi)發(fā)時(shí)直接通過(guò)瀏覽器加載(無(wú)需打包),生產(chǎn)環(huán)境由Rollup拆分成chunk;
  • Webpack的import()是模擬的(通過(guò)__webpack_require__.e()),開(kāi)發(fā)和生產(chǎn)都需要Webpack編譯,生成chunk ID映射表。

問(wèn)題2:按需加載會(huì)影響SEO嗎?

解答

  • 路由懶加載的頁(yè)面如果是SPA(單頁(yè)應(yīng)用),搜索引擎可能無(wú)法爬取動(dòng)態(tài)加載的內(nèi)容;
  • 解決方案:用SSR(服務(wù)端渲染)或預(yù)渲染(如vite-plugin-ssr),在服務(wù)端生成完整HTML,保證SEO。

問(wèn)題3:如何查看拆分后的chunk

解答

  • Vite:運(yùn)行npm run build后,查看dist目錄,或用vite-plugin-bundle-visualizer可視化分析;
  • Webpack:運(yùn)行npm run build后,用webpack-bundle-analyzer插件生成可視化報(bào)告(需安裝插件)。

問(wèn)題4:Vite支持splitChunks嗎?

解答
Vite基于Rollup,沒(méi)有splitChunks插件,但通過(guò)build.rollupOptions.output.manualChunks配置實(shí)現(xiàn)類(lèi)似功能。示例:

// vite.config.js
export default defineConfig({
  build: {
    rollupOptions: {
      output: {
        manualChunks: {
          // 將所有element-plus組件拆成一個(gè)chunk
          'element-plus': ['element-plus'],
          // 將所有路由組件按業(yè)務(wù)線拆分
          'admin': ['@/views/admin/*'],
        },
      },
    },
  },
});

結(jié)尾:按需加載,讓代碼"輕裝上陣"

首屏加載速度,直接影響用戶(hù)留存——你不會(huì)等5秒看一個(gè)頁(yè)面,用戶(hù)也不會(huì)。按需加載不是玄學(xué),而是通過(guò)代碼拆分讓用戶(hù)"用多少,下多少"的簡(jiǎn)單邏輯。無(wú)論是Vite的清爽配置,還是Webpack的靈活控制,核心都是讓代碼"輕裝上陣"。

下次優(yōu)化項(xiàng)目時(shí),不妨試試按需加載——你會(huì)發(fā)現(xiàn),首屏快了,用戶(hù)笑了,自己也不用熬夜改BUG了~如果這篇文章幫你理清了思路,記得點(diǎn)個(gè)收藏,咱們下期,不見(jiàn)不散!

到此這篇關(guān)于Vue 項(xiàng)目中如何通過(guò) Vite 實(shí)現(xiàn)按需加載?對(duì)比 Webpack 的優(yōu)缺點(diǎn)。的文章就介紹到這了,更多相關(guān)Vue 項(xiàng)目中如何通過(guò) Vite 實(shí)現(xiàn)按需加載?對(duì)比 Webpack 的優(yōu)缺點(diǎn)。內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 搭建vue開(kāi)發(fā)環(huán)境

    搭建vue開(kāi)發(fā)環(huán)境

    這篇文章主要介紹了搭建vue開(kāi)發(fā)環(huán)境的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • 關(guān)于Vue?ui?的沒(méi)反應(yīng)、報(bào)錯(cuò)問(wèn)題解決總結(jié)

    關(guān)于Vue?ui?的沒(méi)反應(yīng)、報(bào)錯(cuò)問(wèn)題解決總結(jié)

    這篇文章主要介紹了關(guān)于Vue?ui?的沒(méi)反應(yīng)、報(bào)錯(cuò)問(wèn)題解決總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue+ElementUI 關(guān)閉對(duì)話框清空驗(yàn)證,清除form表單的操作

    vue+ElementUI 關(guān)閉對(duì)話框清空驗(yàn)證,清除form表單的操作

    這篇文章主要介紹了vue+ElementUI 關(guān)閉對(duì)話框清空驗(yàn)證,清除form表單的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • vue使用keep-alive保持滾動(dòng)條位置的實(shí)現(xiàn)方法

    vue使用keep-alive保持滾動(dòng)條位置的實(shí)現(xiàn)方法

    這篇文章主要介紹了vue使用keep-alive保持滾動(dòng)條位置的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue動(dòng)態(tài)顯示圖片報(bào)錯(cuò)404的解決

    vue動(dòng)態(tài)顯示圖片報(bào)錯(cuò)404的解決

    這篇文章主要介紹了vue動(dòng)態(tài)顯示圖片報(bào)錯(cuò)404的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 如何讓別人訪問(wèn)本地運(yùn)行的vue項(xiàng)目

    如何讓別人訪問(wèn)本地運(yùn)行的vue項(xiàng)目

    這篇文章主要介紹了如何讓別人訪問(wèn)本地運(yùn)行的vue項(xiàng)目,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue如何定義全局變量和全局方法實(shí)例代碼

    vue如何定義全局變量和全局方法實(shí)例代碼

    在項(xiàng)目中經(jīng)常會(huì)復(fù)用一些變量和函數(shù),比如用戶(hù)的登錄token,用戶(hù)信息等,這時(shí)將它們?cè)O(shè)為全局的就顯得很重要了,下面這篇文章主要給大家介紹了關(guān)于vue如何定義全局變量和全局方法的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • vue利用vue meta info設(shè)置每個(gè)頁(yè)面的title與meta信息

    vue利用vue meta info設(shè)置每個(gè)頁(yè)面的title與meta信息

    這篇文章主要給大家介紹了關(guān)于vue如何利用vue meta info設(shè)置每個(gè)頁(yè)面的title與meta信息的相關(guān)資料,文中將實(shí)現(xiàn)的方法介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Vue安裝與使用

    Vue安裝與使用

    Vue是一套用于構(gòu)建前后端分離的框架。剛開(kāi)始是由國(guó)內(nèi)優(yōu)秀選手尤雨溪開(kāi)發(fā)出來(lái)的,目前是全球“最”流行的前端框架。使用vue開(kāi)發(fā)網(wǎng)頁(yè)很簡(jiǎn)單,并且技術(shù)生態(tài)環(huán)境完善,社區(qū)活躍,是前后端找工作必備技能!下面來(lái)看看其得安裝及使用方法吧
    2021-10-10
  • 詳解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on

    詳解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on

    Vue.js的指令是以v-開(kāi)頭的,它們作用于HTML元素,指令提供了一些特殊的特性。這篇文章主要介紹了Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on 的相關(guān)知識(shí),需要的朋友可以參考下
    2018-10-10

最新評(píng)論

安岳县| 靖宇县| 上虞市| 博罗县| 曲靖市| 新沂市| 丽江市| 即墨市| 密山市| 墨竹工卡县| 离岛区| 犍为县| 朝阳区| 合阳县| 化隆| 屏山县| 茶陵县| 朝阳县| 独山县| 馆陶县| 汝城县| 平遥县| 衢州市| 义马市| 安岳县| 黔西| 灌阳县| 布尔津县| 牙克石市| 巢湖市| 马山县| 辰溪县| 衡阳县| 邵阳县| 荥阳市| 来凤县| 平凉市| 军事| 天台县| 杭锦旗| 台东市|