日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

Vue 项目上线优化

發布時間:2023/12/10 vue 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vue 项目上线优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上線項目的優化

優化上線項目,首先在上線打包時我們通過babel插件將console清除,當然對項目打包后的體積的影響是微乎其微,對項目的入口文件的改善也是很有必要的,因為在開發階段和上線如果我們使用的是同一入口文件,要知道我們的項目真正上線運行是正規的接口,而我們開發階段可能是測試接口為返回假數據,使用同一接口我們需要頻繁更改上線和開發接口,所以我們通過配置vue.config.js文件使上線和開發階段我們使用不同的接口文件,省去了更改接口等不必要的麻煩,考慮到打包時包的體積過大導致加載速度的延遲,我們通過CDN和懶加載兩種方式進行改善,前者就將我們的項目上線后還需要引用的大量依賴包,轉換為CDN節點的引用,從而改善了包的體積,但是加載還是很慢,所以使用后者路由懶加載,將模塊進行拆分,每個個體的體積很小,眾多模塊有序加載,用到哪些模塊就優先加載哪些,最后在通過服務器采用一定的壓縮算法,對文件體積進行壓縮后,再發送給客戶端,進而有效的改善了包的體積,以及加載速度.

在使用 npm run build 打包時 移除console

初衷:

隨著項目功能的不斷完善 代碼的累積 項目中的龐大代碼數量 造成我們打包時的長時間等待 尤其是我們在開發階段留下的過多的測試代碼 例如最常見不過的console 消耗我們的時間 并且占有一定的內存

優化:

使用 babel中 的一個插件,因為webpack 打包時會使用 babel 進行代碼降級,所以babel 插件可以在打包過程中將 console 移除

  • 安裝插件:
  • npm install babel-plugin-transform-remove-console --save-dev

  • 配置babel.config文件
  • const prodPlugins = [] if (process.env.NODE_ENV === 'production') {prodPlugins.push('transform-remove-console') } module.exports = {presets: ['@vue/cli-plugin-babel/preset'],plugins: ['transform-remove-console'] }

    這樣配置后 再次打包 包中就沒有console了
    問題:當運行npm run serve時 也會刪除console 但是開發階段我們需要
    改善babel.config文件:

    現在 只有在打包時會刪除console

    改善入口文件

    初衷:

    項目中的默認入口文件時main.js文件 不管是打包 還是開發階段使用的都是這一文件
    在卡法階段我們可能調用一端口返回假數據 為調試我們的代碼 但是在上線后我們需要用正式接口 可能不止一個 但是我們左右手動更改較為麻煩 且容易出錯

    優化:

  • 創建兩個入口文件:
    • 一個用于開發環境的打包 dev_env.js
    • 一個用于項目上線的打包 prod_env.js
  • 配置打包的入口文件
  • module.exports={chainWebpack:config=>{config.when(process.env.NODE_ENV === 'production',config=>{config.entry('app').clear().add('./src/prod_env.js')})config.when(process.env.NODE_ENV === 'development',config=>{config.entry('app').clear().add('./src/dev_env.js')})} }

    說明

    • 開發時,使用 npm run serve 命令,NODE_ENV 的值就是 developmnent ,所以會將 dev.env.js 作為入口文件
    • 部署時,使用 npm run build 命令,NODE_ENV 的值就是 production,所以會將 prod_evn.js 作為入口文件

    改善打包時包的體積大小

    初衷:

    通常情況下 項目中通過import方式引入的包 會將整個包下載到客戶端 這可能會導致程序的加載速度非常慢

    優化

    解決方案一:CDN
    將線上環境中用到一些依賴,比如 vue、vueRouter 、axios 等,使用 cdn 節點的方式引用,而不是打到包里去

    此項目中 將項目上線后仍然需要用到的一些依賴包從prod_evn.js文件中刪除 然后在 public/index.html 中使用 cdn 節點引用

    • 首先修改我們上線時的入口文件
    • 然后在 public/index.html 中加入如下引用
    <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/quill@1.3.7/dist/quill.core.css" /> <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/quill@1.3.7/dist/quill.snow.css" /> <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/quill@1.3.7/dist/quill.bubble.css" /> <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/element-ui@2.13.1/lib/theme-chalk/index.css"> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js"></script> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/quill@1.3.7/dist/quill.min.js"></script> <script type="text/javascript"src="https://cdn.jsdelivr.net/npm/vue-quill-editor@3.0.6/dist/vue-quill-editor.min.js"></script> <script src="https://unpkg.com/axios/dist/axios.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script> <script src="https://cdn.bootcss.com/echarts/4.7.0/echarts.js"></script> <script src="https://cdn.jsdelivr.net/npm/element-ui@2.13.1/lib/index.js"></script>
    • 最后在 vue.config.js 中添加配置

    打包后 包的體積明顯減小

    路由懶加載

    初衷:

    在上面 通過babel 插件 將console刪除 通過CDN節點 等 減小包的體積 但是包還是過大 影響加載速度 以當前項目為例,首先展示的登錄頁,事實上,此時沒有必要加載其他的組件,如商品、類別、角色用戶等組件的代碼
    因為代碼被打包到一個文件中,導致下載這個文件太慢

    優化:

    切分之后,并不是瀏覽器訪問某個路由,才去下載對應的模塊,仍然在首次訪問程序時,下載所有模塊,只不過每個模塊分的很小,加載首頁時需要的模塊能夠更快的下載下來,所以能夠更快的顯示

  • 安裝插件
  • npm install --save-dev @babel/plugin-syntax-dynamic-import

  • 修改babel配置文件

  • 修改 router/index.js 中的路由引用

  • // // 引入login.vue組件 // import Login from '../components/login.vue' // // 引入home.vue組件 // import Home from '../components/home.vue' // import Welcome from '../components/welcome.vue' // import Users from '../components/user/users.vue' // import Rights from '../components/rights/rights.vue' // import Role from '../components/rights/role.vue' // import Category from '../components/goods/Category.vue' // import Params from '../components/goods/Params.vue' // import GoodsList from '../components/goods/GoodsList.vue' // import GoodsAdd from '../components/goods/GoodsAdd.vue' // import Orders from '../components/order/Orders.vue' // import Report from '../components/report/Report.vue' // import GoodsEdite from '../components/goods/GoodsEdite.vue' const Login = () => import(/* webpackChunkName: "group-login" */ '../components/login.vue') const Home = () => import(/* webpackChunkName: "group-common" */ '../components/home.vue') const Welcome = () => import(/* webpackChunkName: "group-common" */ '../components/welcome.vue') const Users = () => import(/* webpackChunkName: "group-common" */ '../components/user/users.vue') const Rights = () => import(/* webpackChunkName: "group-rights" */ '../components/rights/rights.vue') const Role = () => import(/* webpackChunkName: "group-rights" */ '../components/rights/role.vue') const Category = () => import(/* webpackChunkName: "group-goods" */ '../components/goods/Category.vue') const Params = () => import(/* webpackChunkName: "group-goods" */ '../components/goods/Params.vue') const GoodsList = () => import(/* webpackChunkName: "group-goods" */ '../components/goods/GoodsList.vue') const GoodsAdd = () => import(/* webpackChunkName: "group-goods" */ '../components/goods/GoodsAdd.vue') const GoodsEdite = () => import(/* webpackChunkName: "group-goods" */ '../components/goods/GoodsEdite.vue') const Orders = () => import(/* webpackChunkName: "group-rrders" */ '../components/order/Orders.vue') const Report = () => import(/* webpackChunkName: "group-Orders" */ '../components/report/Report.vue')

    重新打包效果可見

    router/index.html 主頁內容的形成

    初衷:

    在上面我們使用cdn節點進行優化時。在index.html中 添加大量cdn節點的引入
    但是在開發階段的打包中我們是不需要這種方式的 但是手動刪除或者添加這些cdn節點實在麻煩

    優化:

    我們希望的是,部署的時候 index.html 中使用這些 CDN 節點的依賴,開發階段,不希望 index.html 中的這些引用存在,而是繼續使用本地的包

    這就需要在 index.html 中根據當前的打包環境是開發還是部署,動態的決定 index.html 中是否顯示這些引用

    • 在vue.config.js中添加配置

    • 修改public/index.html

    這樣 首頁中的cdn引入代碼 就不會沖突

    服務器文件壓縮

    初衷:

    客戶端請求某個文件時,服務器端采用一定的壓縮算法,對文件體積進行壓縮后,再發送給客戶端
    對于 node.js 來說,可以使用 compression 中間件

    優化 :

  • 項目打包后將dist文件夾 剪切到服務器端
  • compression 壓縮文件
    • 安裝

    npm install compression

    • app.js 中引入并注冊中間件

    項目相比開始 快了很多

    總結

    以上是生活随笔為你收集整理的Vue 项目上线优化的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久草资源在线 | 成人有色视频 | 91色拍| 天天做天天爱天天爽综合网 | 国产精品乱码一区二三区小蝌蚪 | 一区二区三区在线视频免费观看 | 黄久久久 | 色男人的天堂 | 波多野结衣一区二区在线 | www.免费av | 中文字幕人妻一区二区三区 | 91亚色视频 | www.haoav| 日韩爱爱视频 | 亚洲男同视频 | 久久久7777| 国产第3页| 亚洲国产精品尤物yw在线观看 | 欧美色xxxxx| 国产喷潮 | 色综合久久久久久 | 成人激情开心网 | 91亚洲国产成人久久精品网站 | 一区二区免费在线视频 | 99久久精品国产一区二区三区 | 91欧美日韩麻豆精品 | 电影91久久久 | 国产在线国偷精品免费看 | 黑人与亚洲人色ⅹvideos | 蜜桃视频在线观看一区二区 | 日韩精品一区二区三区视频在线观看 | 国产真实乱人偷精品人妻 | 先锋av资源在线 | 深田咏美av在线 | 人人爽人人爽人人爽人人爽 | 按摩毛片| 欲色视频 | 无码成人一区二区 | 久操热线| 99999av| 国产妇女馒头高清泬20p多 | a一级网站| 玖草影院| 哺乳期喷奶水丰满少妇 | 亚洲私拍 | 中文无码精品一区二区三区 | 久久久国产精品免费 | av在线资源站 | 欧美日韩不卡合集视频 | 亚洲成年人在线观看 | 亚洲国产成人久久 | 亚洲av无一区二区三区怡春院 | 超碰公开在线观看 | 在线中文字幕播放 | 老鸭窝成人 | 一二三四精品 | 欧美性生活免费视频 | 国产粉嫩在线观看 | 538任你躁在线精品免费 | 国产二区电影 | 伊人久久97 | 亚洲美女自拍 | 国产夫妻久久 | 黄色图片小说 | 中文字字幕在线中文 | aa在线| 三年中文在线观看免费观看 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 91鲁| 国产做受高潮漫动 | 亚洲人成影视 | 多男调教一女折磨高潮高h 国内毛片毛片毛片毛片毛片 | 国产成人亚洲综合 | 插综合| 又骚又黄的视频 | 欧美肥老妇视频九色 | 成人毛片在线播放 | 高清乱码免费看污 | 国产真人毛片 | 欧美久久久久久久久久久久久久 | 国产精品乱码久久久 | 成人日b视频 | 蜜桃久久久aaaa成人网一区 | 亚洲综合在线一区二区 | 国产精品污视频 | 91久久人澡人人添人人爽欧美 | 日韩一区二区三区av | 91亚洲成人 | 亚洲色图自拍 | 精品无码国产一区二区三区av | 成人性生交大片免费看中文 | 中文字幕色片 | free性中国hd国语露脸 | 欧美日韩中文字幕视频 | 两口子交换真实刺激高潮 | 久久亚洲第一 | 国产真实老熟女无套内射 | 日本免费色视频 | 日韩高清一级片 |