<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
app.vue
<template> <div id="app"> <router-view v-if="isRouterAlive"></router-view> </div> </template>
<script> export default { provide() { return { reload: this.reload } }, data() { return { isRouterAlive: true } }, methods: { reload() { this.isRouterAlive = false this.$nextTick(function() { this.isRouterAlive = true }) } } } </script>
將要參照的頁面 例如:home.vue
*注入* inject: ['reload'], *呼叫* this.reload()
單頁面應用的 html 是靠 js 生成,因為首屏需要載入很大的js檔案(app.js 和vendor.js),所以當網速差的時候會產生一定程度的白屏
1、路由懶載入,元件懶載入
路由懶載入
// 1、Vue非同步元件技術: { path: '/home', name: 'Home', component: resolve => require(['../views/home.vue'], resolve) } // 2、es6提案的import() { path: '/', name: 'home', component: () => import('../views/home.vue') } // 3、webpack提供的require.ensure() { path: '/home', name: 'Home', component: r => require.ensure([],() => r(require('../views/home.vue')), 'home') }
元件懶載入
components:{ "dailyModal":()=>import("./dailyModal.vue") }, components:{ "dailyModal":resolve=>require(['./dailyModal.vue'],resolve) },
2、CDN 資源優化
CDN 的全稱是 Content Delivery Network,即內容分發網路。CDN 是構建在網路之上的內容分發網路,依靠部署在各地的邊緣伺服器,通過中心平臺的負載均衡、內容分發、排程等功能模組,使使用者就近獲取所需內容,降低網路擁塞,提高使用者存取響應速度和命中率。CDN 的關鍵技術主要有內容儲存和分發技術。
隨著專案越做越大,依賴的第三方 npm 包越來越多,構建之後的檔案也會越來越大。再加上又是單頁應用,這就會導致在網速較慢或者伺服器頻寬有限的情況出現長時間的白屏。此時我們可以使用 CDN 的方法,優化網路載入速度。
將 vue、vue-router、vuex、axios 這些 vue 全家桶的資源,全部改為通過 CDN 連結獲取,在 index.html 裡插入相應連結。
<body> <div id="app"></div> <script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script> <script src="https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.min.js"></script> <script src="https://cdn.bootcss.com/vuex/3.1.0/vuex.min.js"></script> <script src="https://cdn.bootcss.com/vue-router/3.0.2/vue-router.min.js"></script> <script src="https://cdn.bootcss.com/element-ui/2.6.1/index.js"></script> </body>
在 vue.config.js 設定 externals 屬性
module.exports = { ··· externals: { 'vue': 'Vue', 'vuex': 'Vuex', 'vue-router': 'VueRouter', 'axios':'axios' } }
解除安裝相關依賴的 npm 包
npm uninstall vue vue-router vuex axios
3、gZip 加速優化
所有現代瀏覽器都支援 gzip 壓縮,啟用 gzip 壓縮可大幅縮減傳輸資源大小,從而縮短資源下載時間,減少首次白屏時間,提升使用者體驗。
gzip 對基於文字格式檔案的壓縮效果最好(如:CSS、JavaScript 和 HTML),在壓縮較大檔案時往往可實現高達 70-90% 的壓縮率,對已經壓縮過的資源(如:圖片)進行 gzip 壓縮處理,效果很不好。
const CompressionPlugin = require('compression-webpack-plugin') configureWebpack: (config) => { if (process.env.NODE_ENV === 'production') { config.plugins.push( new CompressionPlugin({ // gzip壓縮設定 test: /.js$|.html$|.css/, // 匹配檔名 threshold: 10240, // 對超過10kb的資料進行壓縮 deleteOriginalAssets: false, // 是否刪除原檔案 }) ) } }
4、vue.config.js中關閉productionSourceMap
productionSourceMap是用來報錯時定位到程式碼位置。
如果不想讓別人看到原始碼可以設定為false,並且可以減少打包後包的體積,加密原始碼。
productionSourceMap: false,
5、SSR,伺服器端渲染,在伺服器端事先拼裝好首頁所需的 html
6、首頁加 loading或 骨架屏(優化體驗)
隨著 SPA 在前端界的逐漸流行,單頁面應用不可避免地給首頁載入帶來壓力,此時良好的首頁使用者體驗至關重要。很多 APP 採用了“骨架屏”的方式去展示未載入內容,給予了使用者煥然一新的體驗。
所謂的骨架屏,就是在頁面內容未載入完成的時候,先使用一些圖形進行佔位,待內容載入完成之後再把它替換掉。在這個過程中使用者會感知到內容正在逐漸載入並即將呈現,降低了“白屏”的不良體驗。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45