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

Vue基礎(chǔ)學(xué)習(xí)之項目整合及優(yōu)化

 更新時間:2019年06月02日 08:41:20   作者:Poetry’s Blog  
這篇文章主要給大家介紹了關(guān)于Vue基礎(chǔ)學(xué)習(xí)之項目整合及優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

使用 webpack 構(gòu)建過 Vue 項目的同學(xué)應(yīng)該知道 alias 的作用,我們可以使用它將復(fù)雜的文件路徑定義成一個變量來訪問。在不使用 alias 的項目中,我們引入文件的時候通常會去計算被引入文件對于引入它的文件的相對路徑,比如像這樣

import HelloWorld from '../../../../HelloWorld.vue'

一旦相對層次結(jié)構(gòu)較深,我們就很難去定位所引入文件的具體位置,其實這并不是我們應(yīng)該操心的地方,完全可以交給 webpack 來進(jìn)行處理。在原生的 webpack 配置中我們可以定義 alias 來解決這一問題:

const path = require('path')

const resolve = dir => {
 return path.join(__dirname, dir)
}

module.exports = {
 ...
 
 resolve: {
 alias: {
 '@': resolve('src'), // 定義 src 目錄變量
 _lib: resolve('src/common'), // 定義 common 目錄變量,
 _com: resolve('src/components'), // 定義 components 目錄變量,
 _img: resolve('src/images'), // 定義 images 目錄變量,
 _ser: resolve('src/services'), // 定義 services 目錄變量,
 }
 },
 
 ...
}

上方我們在 webpack resolve (解析)對象下配置 alias 的值,將常用的一些路徑賦值給了我們自定義的變量,這樣我們便可以將第一個例子簡化為:

import HelloWorld from '_com/HelloWorld.vue'

而在 CLI 3.x 中我們無法直接操作 webpack 的配置文件,我們需要通過 chainWebpack 來進(jìn)行間接修改,代碼如下

/* vue.config.js */
module.exports = {
 ...
 
 chainWebpack: config => {
 config.resolve.alias
 .set('@', resolve('src'))
 .set('_lib', resolve('src/common'))
 .set('_com', resolve('src/components'))
 .set('_img', resolve('src/images'))
 .set('_ser', resolve('src/services'))
 },
 
 ...
}

這樣我們修改 webpack alias 來簡化路徑的優(yōu)化就實現(xiàn)了。但是需要注意的是對于在樣式及 html 模板中引用路徑的簡寫時,前面需要加上 ~ 符,否則路徑解析會失敗,如:

.img {
 background: (~_img/home.png);
}

二、整合功能模塊

在多頁應(yīng)用的構(gòu)建中,由于存在多個入口文件,因此會出現(xiàn)重復(fù)書寫相同入口配置的情況,這樣對于后期的修改和維護(hù)都不是特別友好,需要修改所有入口文件的相同配置,比如在 index 單頁的入口中我們引用了 VConsole 及 performance 的配置,同時在 Vue 實例上還添加了 $openRouter 方法:

import Vue from 'vue'
import App from './index.vue'
import router from './router'
import store from '@/store/'
import { Navigator } from '../../common'

// 如果是非線上環(huán)境,不加載 VConsole
if (process.env.NODE_ENV !== 'production') {
 var VConsole = require('vconsole/dist/vconsole.min.js');
 var vConsole = new VConsole();

 Vue.config.performance = true;
}

Vue.$openRouter = Vue.prototype.$openRouter = Navigator.openRouter;

new Vue({
 router,
 store,
 render: h => h(App)
}).$mount('#app')

而在 page1 和 page2 的入口文件中也同樣進(jìn)行了上述配置,那我們該如何整合這些重復(fù)代碼,使其能夠?qū)崿F(xiàn)一次修改多處生效的功能呢?最簡單的方法便是封裝成一個共用方法來進(jìn)行調(diào)用,這里我們可以在 common 文件夾下新建 entryConfig 文件夾用于放置入口文件中公共配置的封裝,封裝代碼如下

import { Navigator } from '../index'

export default (Vue) => {

 // 如果是非線上環(huán)境,不加載 VConsole
 if (process.env.NODE_ENV !== 'production') {
 var VConsole = require('vconsole/dist/vconsole.min.js');
 var vConsole = new VConsole();

 Vue.config.performance = true;
 }

 Vue.$openRouter = Vue.prototype.$openRouter = Navigator.openRouter;
}

上述代碼我們向外暴露了一個函數(shù),在調(diào)用它的入口文件中傳入 Vue 實例作為參數(shù)即可實現(xiàn)內(nèi)部功能的共用,我們可以將原本的入口文件簡化為:

import Vue from 'vue'
import App from './index.vue'
import router from './router'
import store from '@/store/'
import entryConfig from '_lib/entryConfig/'

// 調(diào)用公共方法加載配置
entryConfig(Vue)

new Vue({
 router,
 store,
 render: h => h(App)
}).$mount('#app')

三、開啟 Gzip 壓縮

/* vue.config.js */
const isPro = process.env.NODE_ENV === 'production'

module.exports = {
 ...
 
 configureWebpack: config => {
 if (isPro) {
  return {
  plugins: [
   new CompressionWebpackPlugin({
    // 目標(biāo)文件名稱。[path] 被替換為原始文件的路徑和 [query] 查詢
   asset: '[path].gz[query]',
   // 使用 gzip 壓縮
   algorithm: 'gzip', 
   // 處理與此正則相匹配的所有文件
   test: new RegExp(
    '\\.(js|css)$'
   ),
   // 只處理大于此大小的文件
   threshold: 10240,
   // 最小壓縮比達(dá)到 0.8 時才會被壓縮
   minRatio: 0.8,
   })
  ]
  }
 }
 }
 ...
}

上方我們通過在生產(chǎn)環(huán)境中增加 Gzip 壓縮配置實現(xiàn)了打包后輸出增加對應(yīng)的 .gz 為后綴的文件,而由于我們配置項中配置的是只壓縮大小超過 10240B(10kB)的 JS 及 CSS,因此不滿足條件的文件不會進(jìn)行 Gzip 壓縮。

Gzip 壓縮能在普通壓縮的基礎(chǔ)上再進(jìn)行 50% 以上 的壓縮,我們可以直接來看下控制臺的輸出對比圖

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • el-tree使用獲取當(dāng)前選中節(jié)點的父節(jié)點數(shù)據(jù)

    el-tree使用獲取當(dāng)前選中節(jié)點的父節(jié)點數(shù)據(jù)

    本文主要介紹了el-tree使用獲取當(dāng)前選中節(jié)點的父節(jié)點數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • Vue3+Vite+TS使用elementPlus時踩的坑及解決

    Vue3+Vite+TS使用elementPlus時踩的坑及解決

    這篇文章主要介紹了Vue3+Vite+TS使用elementPlus時踩的坑及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue中如何使用vue-baberrage生成彈幕

    vue中如何使用vue-baberrage生成彈幕

    這篇文章主要介紹了vue中如何使用vue-baberrage生成彈幕,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 詳解vantUI框架在vue項目中的應(yīng)用踩坑

    詳解vantUI框架在vue項目中的應(yīng)用踩坑

    這篇文章主要介紹了詳解vantUI框架在vue項目中的應(yīng)用踩坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Vue 同步異步存值取值實現(xiàn)案例

    Vue 同步異步存值取值實現(xiàn)案例

    這篇文章主要介紹了Vue 同步異步存值取值實現(xiàn)案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Vue3中Teleport的用法小結(jié)

    Vue3中Teleport的用法小結(jié)

    Teleport是一個內(nèi)置組件,它可以將一個組件內(nèi)部的一部分模板傳送到該組件的 DOM 結(jié)構(gòu)外層的位置去,本文主要介紹了Vue3中Teleport用法小結(jié),感興趣的可以了解一下
    2025-04-04
  • Vue+element自定義指令如何實現(xiàn)表格橫向拖拽

    Vue+element自定義指令如何實現(xiàn)表格橫向拖拽

    這篇文章主要介紹了Vue+element自定義指令如何實現(xiàn)表格橫向拖拽,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue獲取HTMLCollection列表的children時結(jié)果為undefined問題

    Vue獲取HTMLCollection列表的children時結(jié)果為undefined問題

    這篇文章主要介紹了Vue獲取HTMLCollection列表的children時結(jié)果為undefined問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 聊聊vue集成sweetalert2提示組件的問題

    聊聊vue集成sweetalert2提示組件的問題

    這篇文章主要介紹了vue 集成 sweetalert2 提示組件的問題,本文通過項目案例實例代碼相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-11-11
  • Vue與Nuxt的區(qū)別及使用說明

    Vue與Nuxt的區(qū)別及使用說明

    這篇文章主要介紹了Vue與Nuxt的區(qū)別及使用說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評論

芦溪县| 宁陕县| 邢台县| 荣成市| 库尔勒市| 左权县| 碌曲县| 海原县| 河源市| 安阳县| 凤翔县| 隆安县| 渭源县| 小金县| 宾川县| 宁都县| 萍乡市| 阳春市| 金沙县| 龙胜| 浏阳市| 浦县| 盐源县| 元谋县| 施甸县| 余干县| 松潘县| 邓州市| 津市市| 普定县| 固镇县| 阿拉善右旗| 阳朔县| 祁东县| 北宁市| 洛川县| 兴海县| 普安县| 登封市| 武强县| 祁阳县|