Vue项目骨架屏实践:vue-skeleton-webpack-plugin

4 下载量 58 浏览量 更新于2024-08-31 收藏 163KB PDF 举报
"本文主要介绍如何使用`vue-skeleton-webpack-plugin`在Vue项目中实现骨架屏,以优化页面加载期间的用户体验。通过显示预设的骨架布局,骨架屏可以减少用户感知的等待时间,使页面加载显得更快。文章提供了一个基于Vue-cli3.x的示例,说明了如何配置`vue.config.js`文件以及安装和使用`vue-skeleton-webpack-plugin`插件。" 骨架屏是一种优化用户体验的技术,特别是在网页内容较多、加载时间较长的场景下。它在页面开始渲染前展示一个简洁的静态布局,这个布局模拟了页面的主要结构,也就是所谓的“骨架”。当实际内容加载完成,骨架屏会被替换,从而使得用户感觉页面加载速度更快。 为了在Vue项目中实现骨架屏,我们可以利用`vue-skeleton-webpack-plugin`这个Webpack插件。首先,我们需要通过npm安装该插件: ```bash npm install vue-skeleton-webpack-plugin ``` 然后,在`vue.config.js`文件中引入并配置插件。配置示例如下: ```javascript const SkeletonWebpackPlugin = require('vue-skeleton-webpack-plugin') module.exports = { configureWebpack: (config) => { config.plugins.push( new SkeletonWebpackPlugin({ webpackConfig: { entry: { app: path.join(__dirname, './src/skeleton/skeleton.js') } }, // 压缩注入HTML的JS代码 minimize: true, // 服务端渲染时是否需要输出信息到控制台 quiet: true, // 根据路由显示骨架屏 router: { mode: 'history', routes: [ { path: '/', skeletonId: 'skeleton-home' }, { path: '/message', skeletonId: 'skeleton-message' } ] } }) ) } } ``` 在这个配置中,我们指定了入口文件`src/skeleton/skeleton.js`,这是定义骨架屏样式的地方。同时,我们设置了路由匹配规则,以便在不同的路由下显示不同的骨架屏。例如,访问根路径`/`时显示`skeleton-home`的骨架布局,访问`/message`路径则显示`skeleton-message`的骨架布局。 要创建这些骨架布局,你需要在项目中为每个对应的路由创建对应的CSS或JS文件,定义骨架屏的样式。这些样式文件应该模拟真实页面的结构,包括元素的大小、位置等,以确保在加载过程中提供一个准确的预览效果。 此外,`minimize`选项用于开启代码压缩,`quiet`选项用于控制是否在服务端渲染时输出日志信息。这些设置可以根据实际需求进行调整。 `vue-skeleton-webpack-plugin`为Vue项目提供了一种便捷的方式,通过预渲染骨架屏来提升用户体验。通过正确配置和定制,可以有效地减少页面加载时的白屏时间,让应用显得更加响应迅速。

npm install vue-beautiful-chat --save npm WARN ERESOLVE overriding peer dependency npm WARN While resolving: extract-text-webpack-plugin@3.0.2 npm WARN Found: webpack@4.46.0 npm WARN node_modules/webpack npm WARN peer webpack@"^4.0.0" from @intervolga/optimize-cssnano-plugin@1.0.6 npm WARN node_modules/@intervolga/optimize-cssnano-plugin npm WARN @intervolga/optimize-cssnano-plugin@"^1.0.5" from @vue/cli-service@3.12.1 npm WARN node_modules/@vue/cli-service npm WARN 24 more (@soda/friendly-errors-webpack-plugin, ...) npm WARN npm WARN Could not resolve dependency: npm WARN peer webpack@"^3.1.0" from extract-text-webpack-plugin@3.0.2 npm WARN node_modules/extract-text-webpack-plugin npm WARN extract-text-webpack-plugin@"^3.0.1" from vue-photo-preview@1.1.3 npm WARN node_modules/vue-photo-preview npm WARN npm WARN Conflicting peer dependency: webpack@3.12.0 npm WARN node_modules/webpack npm WARN peer webpack@"^3.1.0" from extract-text-webpack-plugin@3.0.2 npm WARN node_modules/extract-text-webpack-plugin npm WARN extract-text-webpack-plugin@"^3.0.1" from vue-photo-preview@1.1.3 npm WARN node_modules/vue-photo-preview npm WARN ERESOLVE overriding peer dependency npm WARN While resolving: uglifyjs-webpack-plugin@0.4.6 npm WARN Found: webpack@4.46.0 npm WARN node_modules/webpack npm WARN peer webpack@"^4.0.0" from @intervolga/optimize-cssnano-plugin@1.0.6 npm WARN node_modules/@intervolga/optimize-cssnano-plugin npm WARN @intervolga/optimize-cssnano-plugin@"^1.0.5" from @vue/cli-service@3.12.1 npm WARN node_modules/@vue/cli-service npm WARN 24 more (@soda/friendly-errors-webpack-plugin, ...) npm WARN npm WARN Could not resolve dependency: npm WARN peer webpack@"^1.9 || ^2 || ^2.1.0-beta || ^2.2.0-rc || ^3.0.0" from uglifyjs-webpack-plugin@0.4.6 npm WARN node_modules/uglifyjs-webpack-plugin npm WARN uglifyjs-webpack-plugin@"^0.4.6" from webpack@3.12.0 npm WARN node_modules/vue-photo-preview/node_modules/webpack npm WARN npm WARN Conflicting peer dependency: webpack@3.12.0 npm WARN node_modules/webpack npm WARN peer webpack@"^1.9 || ^2 || ^2.1.0-beta || ^2.2.0-rc || ^3.0.0" from uglifyjs-webpack-plugin@0.4.6 npm WARN node_modules/uglifyjs-webpack-plugin npm WARN uglifyjs-webpack-plugin@"^0.4.6" from webpack@3.12.0 npm WARN node_modules/vue-photo-preview/node_modules/webpack

2023-06-14 上传