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

Vue項(xiàng)目打包編譯優(yōu)化方案

 更新時間:2020年09月16日 09:33:34   作者:文淵  
當(dāng)一個較復(fù)雜的vue項(xiàng)目打包后,文件會非常大,而且訪問時資源加載速度很慢,本文介紹了幾種措施來優(yōu)化。

1. 不生成.map文件

  默認(rèn)情況下,當(dāng)我們執(zhí)行 npm run build 命令打包完一個項(xiàng)目后,會得到一個dist目錄,里面有一個js目錄,存放了該項(xiàng)目編譯后的所有js文件。
  我們發(fā)現(xiàn)每個js文件都有一個相應(yīng)的 .map 文件,它們僅是用來調(diào)試代碼的,可以加快打包速度,但會增大打包體積,線上我們是不需要這個代碼的。這里我們需要配置不生成map文件。

  • vue-cli2

  config/index.js文件中,找到 productionSourceMap: true 這一行,將 true 改為 false。

  • vue-cli3

  在 vue.config.js 中編寫以下內(nèi)容:

module.exports = {
 productionSourceMap: false
}

2. 按需引入第三方包

  默認(rèn)情況下,在打包完后的js文件中,vendor.xxx.js 這個文件是非常大的,它主要是我們用到的第三方包(vue、vue-router、vuex、axios、element-ui等等)。這里面的大部分是我們要用到的功能,而像 element-ui 這種,明顯可以按塊來分,我們只是用到了里面的個別組件,完全可以把它按需取出,沒必要全部打包。

  在 element-ui 的官網(wǎng),介紹了按需引入的方法,借助 babel-plugin-component,我們可以只引入需要的組件,以達(dá)到減小項(xiàng)目體積的目的。

3. 路由懶加載

  默認(rèn)情況下,在打包完后的js文件中,app.xxx.js 這個文件是非常大的,它主要是我們編寫的一些組件。那么無法避免的問題就是:當(dāng)用戶訪問網(wǎng)頁的時候,第一次的請求要加載整個 app.xxx.js,當(dāng)我們的項(xiàng)目比較復(fù)雜的時候,這個文件也是相當(dāng)大的。

  接下來我們要做的,就是路由懶加載。也就是當(dāng)訪問一個頁面的時候,只加載當(dāng)前組件相關(guān)的js資源,訪問其它頁面的時候,再加載相應(yīng)的組件代碼。

  通過vue提供的路由懶加載功能,我們能將原來的一個 app.xxx.js 文件,分塊分成多個。

 ?、?首先根據(jù)官網(wǎng)的說明,我們需要安裝一個插件

npm install --save-dev @babel/plugin-syntax-dynamic-import

 ?、?然后在 babel.config.js 中配置如下內(nèi)容(網(wǎng)上說的是 .babelrc 文件,這是以前的配置格式):

module.exports = {
 presets: ["@vue/app"],
 plugins: ["@babel/plugin-syntax-dynamic-import"]
};

 ?、?接下來修改路由加載組件部分的代碼。

  這是我們原來的路由寫法:

router.js

import Vue from "vue";
import Router from "vue-router";

import Home from "./views/Home.vue";
import About from "./views/About.vue";
import Form from "./views/Form.vue";
import Table from "./views/Table.vue";
import NavMenu from "./views/NavMenu.vue";

Vue.use(Router);

export default new Router({
 mode: "history",
 base: process.env.BASE_URL,
 routes: [
 {
  path: "/",
  name: "home",
  component: Home
 },
 {
  path: "/about",
  name: "about",
  component: About
 },
 {
  path: "/form",
  name: "myForm",
  component: Form
 },
 {
  path: "/table",
  name: "myTable",
  component: Table
 },
 {
  path: "/nav_menu",
  name: "myNavMenu",
  component: NavMenu
 }
 ]
});

  這是我們修改完的路由寫法:

router.js

import Vue from "vue";
import Router from "vue-router";

const Home = () => import("./views/Home.vue");
const About = () => import("./views/About.vue");
const Form = () => import("./views/Form.vue");
const Table = () => import("./views/Table.vue");
const NavMenu = () => import("./views/NavMenu.vue");

Vue.use(Router);

export default new Router({
 mode: "history",
 base: process.env.BASE_URL,
 routes: [
 {
  path: "/",
  name: "home",
  component: Home
 },
 {
  path: "/about",
  name: "about",
  component: About
 },
 {
  path: "/form",
  name: "myForm",
  component: Form
 },
 {
  path: "/table",
  name: "myTable",
  component: Table
 },
 {
  path: "/nav_menu",
  name: "myNavMenu",
  component: NavMenu
 }
 ]
});

  更細(xì)節(jié)的內(nèi)容參見官方文檔

以上就是Vue項(xiàng)目打包編譯優(yōu)化方案的詳細(xì)內(nèi)容,更多關(guān)于vue項(xiàng)目打包優(yōu)化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue+Springboot實(shí)現(xiàn)接口簽名的示例代碼

    Vue+Springboot實(shí)現(xiàn)接口簽名的示例代碼

    這篇文章主要介紹了Vue+Springboot實(shí)現(xiàn)接口簽名的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • vuex的簡單使用教程

    vuex的簡單使用教程

    vuex是一個專門為vue.js設(shè)計(jì)的集中式狀態(tài)管理架構(gòu)。這篇文章主要介紹了vuex的簡單使用,需要的朋友可以參考下
    2018-02-02
  • vue對象復(fù)制方式(深拷貝,多層對象拷貝方式在后面)

    vue對象復(fù)制方式(深拷貝,多層對象拷貝方式在后面)

    這篇文章主要介紹了vue對象復(fù)制方式(深拷貝,多層對象拷貝方式在后面),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue雙向數(shù)據(jù)綁定原理探究(附demo)

    vue雙向數(shù)據(jù)綁定原理探究(附demo)

    本文主要介紹了vue雙向數(shù)據(jù)綁定的原理,文章結(jié)尾附上完整demo下載。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • 使用vue3+TS實(shí)現(xiàn)簡易組件庫的全過程

    使用vue3+TS實(shí)現(xiàn)簡易組件庫的全過程

    當(dāng)市面上主流的組件庫不能滿足我們業(yè)務(wù)需求的時候,那么我們就有必要開發(fā)一套屬于自己團(tuán)隊(duì)的組件庫,下面這篇文章主要給大家介紹了如何使用vue3+TS實(shí)現(xiàn)簡易組件庫的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • vue 自動化路由實(shí)現(xiàn)代碼

    vue 自動化路由實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue 自動化路由實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 在vue-cli 3中給stylus、sass樣式傳入共享的全局變量

    在vue-cli 3中給stylus、sass樣式傳入共享的全局變量

    這篇文章主要介紹了在vue-cli 3中, 給stylus、sass樣式傳入共享的全局變量,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • vue 輸入電話號碼自動按3-4-4分割功能的實(shí)現(xiàn)代碼

    vue 輸入電話號碼自動按3-4-4分割功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue 輸入電話號碼自動按3-4-4分割功能的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • vue中style設(shè)置scoped后部分樣式不生效的解決

    vue中style設(shè)置scoped后部分樣式不生效的解決

    這篇文章主要介紹了vue中style設(shè)置scoped后部分樣式不生效的解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • vue-cli3.0如何使用prerender-spa-plugin插件預(yù)渲染

    vue-cli3.0如何使用prerender-spa-plugin插件預(yù)渲染

    這篇文章主要介紹了vue-cli3.0如何使用prerender-spa-plugin插件預(yù)渲染,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論

乌兰县| 同江市| 柳州市| 鹤壁市| 玉屏| 钦州市| 南昌市| 云南省| 佛坪县| 来凤县| 牟定县| 睢宁县| 营山县| 绥化市| 同江市| 揭阳市| 富民县| 甘洛县| 遵义县| 柞水县| 阳曲县| 澄城县| 峨边| 大安市| 南岸区| 阳谷县| 莆田市| 河北省| 嘉定区| 繁昌县| 班玛县| 昌宁县| 翁牛特旗| 清流县| 乌审旗| 宜宾市| 阳原县| 荣昌县| 绥滨县| 曲水县| 和顺县|