Vue項(xiàng)目打包編譯優(yōu)化方案
1. 不生成.map文件
默認(rèn)情況下,當(dāng)我們執(zhí)行 npm run build
命令打包完一個(gè)項(xiàng)目后,會(huì)得到一個(gè)dist目錄,里面有一個(gè)js目錄,存放了該項(xiàng)目編譯后的所有js文件。
我們發(fā)現(xiàn)每個(gè)js文件都有一個(gè)相應(yīng)的 .map 文件,它們僅是用來調(diào)試代碼的,可以加快打包速度,但會(huì)增大打包體積,線上我們是不需要這個(gè)代碼的。這里我們需要配置不生成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 這個(gè)文件是非常大的,它主要是我們用到的第三方包(vue、vue-router、vuex、axios、element-ui等等)。這里面的大部分是我們要用到的功能,而像 element-ui 這種,明顯可以按塊來分,我們只是用到了里面的個(gè)別組件,完全可以把它按需取出,沒必要全部打包。
在 element-ui 的官網(wǎng),介紹了按需引入的方法,借助 babel-plugin-component,我們可以只引入需要的組件,以達(dá)到減小項(xiàng)目體積的目的。
3. 路由懶加載
默認(rèn)情況下,在打包完后的js文件中,app.xxx.js 這個(gè)文件是非常大的,它主要是我們編寫的一些組件。那么無法避免的問題就是:當(dāng)用戶訪問網(wǎng)頁的時(shí)候,第一次的請(qǐng)求要加載整個(gè) app.xxx.js,當(dāng)我們的項(xiàng)目比較復(fù)雜的時(shí)候,這個(gè)文件也是相當(dāng)大的。
接下來我們要做的,就是路由懶加載。也就是當(dāng)訪問一個(gè)頁面的時(shí)候,只加載當(dāng)前組件相關(guān)的js資源,訪問其它頁面的時(shí)候,再加載相應(yīng)的組件代碼。
通過vue提供的路由懶加載功能,我們能將原來的一個(gè) app.xxx.js 文件,分塊分成多個(gè)。
① 首先根據(jù)官網(wǎng)的說明,我們需要安裝一個(gè)插件
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"] };
?、?接下來修改路由加載組件部分的代碼。
這是我們?cè)瓉淼穆酚蓪懛ǎ?/p>
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)化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vue中el-tree樹全部展開或收起的實(shí)現(xiàn)示例
本文主要介紹了Vue中el-tree樹全部展開或收起的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07vue全局引入公共的scss和@mixin與@include的使用方式
這篇文章主要介紹了vue全局引入公共的scss和@mixin與@include的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02vue.js計(jì)算屬性computed用法實(shí)例分析
這篇文章主要介紹了vue.js計(jì)算屬性computed用法,結(jié)合實(shí)例形式分析了vue.js使用computed方式進(jìn)行屬性計(jì)算的相關(guān)操作技巧,需要的朋友可以參考下2018-07-07簡(jiǎn)易vuex4核心原理及實(shí)現(xiàn)源碼分析
這篇文章主要為大家介紹了簡(jiǎn)易vuex4核心原理及實(shí)現(xiàn)源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01在Vue3中實(shí)現(xiàn)拖拽文件上傳功能的過程詳解
文件上傳是我們?cè)陂_發(fā)Web應(yīng)用時(shí)經(jīng)常遇到的功能之一,為了提升用戶體驗(yàn),我們可以利用HTML5的拖放API來實(shí)現(xiàn)拖拽文件上傳的功能,本文將介紹如何在Vue3中實(shí)現(xiàn)這一功能,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2023-12-12vue返回上一頁面時(shí)回到原先滾動(dòng)的位置的方法
這篇文章主要介紹了vue返回上一頁面時(shí)回到原先滾動(dòng)的位置的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12vue router下的html5 history在iis服務(wù)器上的設(shè)置方法
這篇文章主要介紹了vue router下的html5 history在iis服務(wù)器上的設(shè)置方法,需要的朋友參考下吧2017-10-10Vue組件庫(kù)ElementUI實(shí)現(xiàn)表格加載樹形數(shù)據(jù)教程
這篇文章主要為大家詳細(xì)介紹了Vue組件庫(kù)ElementUI實(shí)現(xiàn)表格加載樹形數(shù)據(jù)教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06詳解本地Vue項(xiàng)目請(qǐng)求本地Node.js服務(wù)器的配置方法
本文只針對(duì)自己需要本地模擬接口于是搭建一個(gè)本地node服務(wù)器供自己測(cè)試使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03