当前位置: 首页 > news >正文

手机企业网站模板网站建设需要经过哪几个步骤

手机企业网站模板,网站建设需要经过哪几个步骤,怎么做展示型网站,dedecms 网站搬迁 模板路径错误1 问题描述 在 Vue3 项目中#xff0c;有时候会出现图片视频加载缓慢、首屏加载白屏的问题 2 原因分析 通常是由以下原因导致的#xff1a; 图片或视频格式不当#xff1a;如果图片或视频格式选择不当#xff0c;比如选择了无损压缩格式#xff0c;可能会导致文件大小过大…  1 问题描述 在 Vue3 项目中有时候会出现图片视频加载缓慢、首屏加载白屏的问题 2 原因分析 通常是由以下原因导致的 图片或视频格式不当如果图片或视频格式选择不当比如选择了无损压缩格式可能会导致文件大小过大从而影响加载速度。 页面中同时加载了大量的图片和视频导致请求次数过多网络传输速度受限从而影响页面加载速度。 页面中的图片和视频没有进行优化处理比如没有进行压缩、没有使用 CDN 加速等。 页面的 HTML、CSS、JavaScript 代码没有进行优化比如没有使用 webpack 进行打包、没有使用代码分割技术等导致页面加载时间过长。 页面中的图片和视频没有使用懒加载技术导致页面一次性加载过多的资源从而导致页面加载速度变慢。 网络状况不佳比如网络延迟、带宽受限等都可能导致图片和视频加载缓慢。 服务器响应时间过长如果服务器响应时间过长会导致页面请求资源的时间变慢从而影响页面加载速度。 使用了不稳定的第三方库如果使用了不稳定的第三方库或者组件可能会导致页面加载速度变慢。 浏览器缓存策略不当如果浏览器缓存策略设置不当可能会导致浏览器重复请求资源从而影响页面加载速度。 网络安全策略较为严格如果网络安全策略较为严格可能会导致浏览器请求资源时遇到一些限制从而影响页面加载速度。 因此在开发 Vue3 项目时需要注意对图片和视频进行优化处理减少请求次数使用懒加载技术优化代码等来提升页面加载速度避免出现加载缓慢、首屏加载白屏的问题。 3 解决方案 图片和视频加载缓慢、导致首屏加载白屏的问题通常可以从以下几个方面入手来解决 图片和视频的优化懒加载骨架屏代码优化 3.1 图片和视频的优化 可以通过图片压缩、视频压缩等技术来减小文件大小从而提高加载速度。同时还可以通过 CDN 加速来加快资源加载速度。 可以从以下几个方法入手 压缩图片或视频选择合适的图片或视频格式使用图片或视频 CDN 加速使用懒加载技术 3.1.1 压缩图片或视频 可以使用图片或视频压缩工具将文件大小压缩至合适的大小。对于图片可以使用在线图片压缩工具或者 Photoshop 等图片编辑软件进行压缩对于视频可以使用视频压缩软件如 HandBrake 等进行压缩。 压缩工具推荐 以下是几个常用的在线图片压缩工具 TinyPNGtinypng.com TinyPNG 是一个免费的在线图片压缩工具可以将 PNG 和 JPEG 格式的图片压缩至合适的大小而且不会影响图片质量。 Compressor.iocompressor.io Compressor.io 是一个免费的在线图片压缩工具可以压缩 JPEG、PNG、SVG 和 GIF 等格式的图片。它可以将图片压缩至较小的大小而且不会影响图片质量。 Krakenkraken.io Kraken 是一个在线图片优化和压缩服务可以将 JPEG、PNG 和 GIF 等格式的图片压缩至最小的文件大小。Kraken 还提供了 API 接口可以方便地集成到项目中。 ImageOptimimageoptim.com ImageOptim 是一个免费的图片优化工具它可以自动压缩 JPEG、PNG 和 GIF 等格式的图片并且可以自动删除图片中的元数据和不必要的信息从而减小文件大小。 3.1.2 选择合适的图片或视频格式 选择合适的图片或视频格式也可以减小文件大小。例如对于图片可以选择 JPEG 或者 WebP 格式对于视频可以选择 H.264 或者 H.265 格式。 3.1.3 使用图片或视频 CDN 加速 可以使用图片或视频 CDN 加速将图片或视频资源分布在全球各地的 CDN 节点上从而加快资源的传输速度提高页面加载速度。 3.1.4 使用懒加载技术 可以使用懒加载技术将图片或视频的加载延迟到用户需要访问它们时再加载从而减少页面一次性请求过多的资源提高页面加载速度。 3.2 懒加载 使用懒加载技术可以将图片和视频的加载延迟到用户需要访问它们时再加载从而减少页面一次性加载过多的资源提高首屏加载速度。 以下是使用懒加载技术实现图片和视频懒加载的方法 使用 Intersection Observer API 使用 Intersection Observer API Intersection Observer API 是一种新的浏览器 API可以监听指定元素是否进入了视口从而触发回调函数。 可以通过监听图片或视频元素是否进入了视口从而触发加载图片或视频的操作。 使用示例  当然可以下面是一个使用 Intersection Observer API 实现图片懒加载的 Vue 3 示例 在组件中引入 Intersection Observer API 在 Vue 3 中可以通过在组件中使用 onMounted 钩子函数来引入 Intersection Observer API templateimg v-forimage in images :keyimage.id :srcimage.placeholder :data-srcimage.src alt /templatescript import { onMounted } from vue;export default {name: LazyLoadImages,data() {return {images: [{id: 1,src: path/to/image1.jpg,placeholder: path/to/placeholder1.jpg},{id: 2,src: path/to/image2.jpg,placeholder: path/to/placeholder2.jpg},// ...]};},setup() {onMounted(() {// 创建 IntersectionObserver 实例const observer new IntersectionObserver(entries {entries.forEach(entry {if (entry.isIntersecting) {const lazyImage entry.target;lazyImage.src lazyImage.dataset.src;lazyImage.removeAttribute(data-src);observer.unobserve(lazyImage);}});});// 监听图片元素const lazyImages document.querySelectorAll(img[data-src]);lazyImages.forEach(image {observer.observe(image);});});} }; /script在上面的示例中通过 onMounted 钩子函数创建了 IntersectionObserver 实例并在其中监听了所有带有 data-src 属性的图片元素。 当图片元素进入视口时我们通过 isIntersecting 属性判断图片是否进入了视口如果进入了视口就将 data-src 属性的值赋给 src 属性从而加载图片资源同时移除 data-src 属性避免重复加载。 最后通过 unobserve 方法停止监听图片元素。 这样就成功地使用 Intersection Observer API 实现了图片的懒加载。 使用第三方库 除了使用 Intersection Observer API还可以使用一些第三方库来实现图片和视频的懒加载 如 LazyLoad、Lozad.js、LazyLoad-xt 等。这些库可以更快速地实现懒加载效果并提供了更多的配置选项例如触发懒加载的条件、动画效果等。具体使用方法可以参考它们的官方文档。 使用示例 当然可以以下是一个使用 LazyLoad 库实现图片懒加载的 Vue 3 示例 安装和引入 LazyLoad 库 在终端中安装 LazyLoad 库 npm install lazyload --save然后在 Vue 3 组件中引入 LazyLoad 库 templateimg v-forimage in images :keyimage.id :srcimage.placeholder data-srcimage.src alt /templatescript import LazyLoad from lazyload;export default {name: LazyLoadImages,data() {return {images: [{id: 1,src: path/to/image1.jpg,placeholder: path/to/placeholder1.jpg},{id: 2,src: path/to/image2.jpg,placeholder: path/to/placeholder2.jpg},// ...]};},mounted() {// 初始化 LazyLoadconst lazyLoadInstance new LazyLoad({elements_selector: img[data-src],threshold: 0,// 配置选项});// 手动触发加载lazyLoadInstance.update();} }; /script在上面的示例中 先通过 npm install 命令安装了 LazyLoad 库并在组件中引入了该库。 然后在组件的 mounted 钩子函数中初始化了 LazyLoad 并传入了图片元素的选择器以及其它一些配置选项。 最后通过 update 方法手动触发图片的加载。 这样就成功地使用 LazyLoad 库实现了图片的懒加载。 除了图片懒加载LazyLoad 库还可以用于懒加载视频、背景图等资源。具体使用方法可以参考 LazyLoad 的官方文档。 3.3 骨架屏 骨架屏Skeleton Screen是一种页面加载优化的技术可以在页面加载过程中显示一个简单的灰色框架代替还未加载的内容。骨架屏可以提高用户体验让用户感觉页面加载速度更快同时也可以减少用户的焦虑感。 在 Vue 3 中可以使用一些第三方库来实现骨架屏效果例如 vue-skeleton-webpack-plugin、vue-content-loader、vue-loading-skeleton 等。 3.3.1 如何在Vue 3中使用vue-content-loader实现骨架屏效果 vue-content-loader 是一个 Vue.js 组件库可以帮助我们实现骨架屏效果。它提供了多种预定义的 SVG 形状可以快速生成骨架屏模板并且可以自定义颜色、大小、动画等。 以下是在 Vue 3 中使用 vue-content-loader 实现骨架屏效果的步骤 3.3.1.1 安装和导入 vue-content-loader 在终端中使用 npm 安装 vue-content-loader npm install vue-content-loader然后在需要使用的组件中导入 SkeletonLoader 组件 import { SkeletonLoader } from vue-content-loader;3.3.1.2 创建骨架屏模板 在模板中使用 SkeletonLoader 组件并通过 type 属性指定要使用的 SVG 形状。例如要使用矩形形状可以这样写 templatedivSkeletonLoader :width300 :height200 typerect //div /template3.3.1.3 自定义骨架屏模板 可以通过 vue-content-loader 提供的属性来自定义骨架屏模板的颜色、大小、动画等。例如要改变矩形形状的颜色和大小可以这样写 templatedivSkeletonLoader :width300 :height200 typerect :rect{ rx: 5, ry: 5 } :speed1 :primaryColor#f3f3f3 :secondaryColor#ecebeb //div /template在上面的代码中我们通过 rect 属性设置了矩形的圆角半径通过 speed 属性设置了动画速度通过 primaryColor 和 secondaryColor 属性设置了骨架屏的颜色。 以上就是在 Vue 3 中使用 vue-content-loader实现骨架屏效果的基本步骤。需要注意的是vue-content-loader 组件库提供了多种预定义的 SVG 形状你可以根据需求选择合适的形状并通过属性来自定义骨架屏的样式和动画。 3.3.2 使用 vue-skeleton-webpack-plugin 实现骨架屏的示例 vue-skeleton-webpack-plugin 是一个 Webpack 插件可以帮助我们在打包过程中生成骨架屏模板并自动注入到 HTML 文件中。 以下是使用 vue-skeleton-webpack-plugin 实现骨架屏的示例 3.3.2.1 安装和配置 vue-skeleton-webpack-plugin 在终端中使用 npm 安装 vue-skeleton-webpack-plugin npm install vue-skeleton-webpack-plugin然后在 Vue 项目的 vue.config.js 文件中添加以下配置 const VueSkeletonWebpackPlugin require(vue-skeleton-webpack-plugin);module.exports {configureWebpack: {plugins: [new VueSkeletonWebpackPlugin({webpackConfig: {entry: {app: ./src/skeleton.js // 指定骨架屏入口文件}},insertAfter: div idapp/div, // 骨架屏注入位置minimize: true,quiet: true})]} };在上面的示例中我们指定了骨架屏的入口文件为 ./src/skeleton.js并通过 insertAfter 属性指定了注入位置。 3.3.2.2 创建骨架屏模板 在项目中创建骨架屏模板可以使用 vue-content-loader 或其他骨架屏工具来生成模板。 例如创建了一个 Skeleton.vue 组件来定义骨架屏模板 templatedivSkeletonLoader :width300 :height200 typerect :rect{ rx: 5, ry: 5 } :speed1 :primaryColor#f3f3f3 :secondaryColor#ecebeb //div /templatescript import { SkeletonLoader } from vue-content-loader;export default {name: Skeleton,components: {SkeletonLoader} }; /script3.3.2.3 创建骨架屏入口文件 在项目中创建骨架屏入口文件 skeleton.js用于生成骨架屏模板。 例如在 skeleton.js 中创建了一个 Vue 实例使用 Skeleton 组件作为根组件 import Vue from vue; import Skeleton from ./components/Skeleton.vue;new Vue({render: h h(Skeleton) }).$mount(#app);在上面的代码中通过 render 函数将 Skeleton 组件渲染到 DOM 中的 #app 元素上。 3.3.2.4 注入骨架屏模板到 HTML 文件中 在 HTML 文件中使用 vue-skeleton-webpack-plugin 提供的 Skeleton 标签来注入骨架屏模板。 例如在 public/index.html 文件中添加以下代码 !DOCTYPE html htmlheadmeta charsetutf-8meta nameviewport contentwidthdevice-width, initial-scale1titleMy App/title /headbodySkeleton/Skeletondiv idapp/div /body/html在上面的代码中我们在 Skeleton 标签中注入了骨架屏模板并将真实内容放在 app 标签中。 3.3.2.5 打包项目并查看效果 在终端中运行以下命令打包项目 npm run build打包完成后打开生成的 index.html 文件即可看到骨架屏效果。在加载真实内容之前页面会显示骨架屏模板提升用户体验。  3.4 代码优化  在代码优化时需要综合考虑多个方面包括性能、可读性、可维护性等。 下面是一些常见的代码优化方式及其结果问题 懒加载/按需加载缓存机制代码压缩和合并其他优化方式 3.4.1 懒加载/按需加载 懒加载/按需加载是指将页面或模块的加载推迟到需要时再进行以减少初始加载时间和网络请求次数提高页面性能。然而在使用懒加载/按需加载时可能会出现以下问题 首次加载时用户可能需要等待更长时间才能看到页面内容。如果按需加载的模块过多可能会出现过多的网络请求导致页面加载速度变慢。懒加载/按需加载的代码可能会增加复杂度降低代码的可读性和可维护性。 3.4.2 缓存机制 缓存机制是指将一些静态资源如图片、CSS、JS 等缓存在客户端以减少网络请求次数提高页面性能。然而在使用缓存机制时可能会出现以下问题 如果缓存时间过长可能会导致用户无法看到最新的内容。如果缓存时间过短可能会导致用户频繁地重新请求资源降低页面性能。缓存机制可能会对服务器和客户端产生额外的负担增加服务器和客户端的开销。 3.4.3 代码压缩和合并 代码压缩和合并是指将多个 JS 或 CSS 文件压缩为一个文件并将其中的空格、注释等无关字符删除以减小文件大小提高页面性能。然而在使用代码压缩和合并时可能会出现以下问题 如果压缩和合并的文件过大可能会导致文件下载时间过长影响页面性能。代码压缩和合并可能会增加复杂度降低代码的可读性和可维护性。如果压缩和合并的文件不够灵活可能会导致无法对不同的页面进行定制和优化。 3.4.4 其他优化方式 除了上述方式外还有一些其他的代码优化方式如使用更高效的算法或数据结构、减少重绘和回流、优化图片大小和格式等。这些优化方式的效果和问题也各不相同需要根据具体情况进行选择和评估。 综上所述代码优化需要综合考虑多个方面不能只追求性能还要注意代码的可读性和可维护性以确保代码质量和用户体验的均衡。 3.4.5 示例 下面是一个代码优化前后的示例对比 假设有一个需求需要在页面上显示一组商品列表每个商品包含图片、标题、描述、价格等信息。 可以使用 Vue.js 来实现该需求如下所示 templatedivh2商品列表/h2ulli v-for(item, index) in items :keyindeximg :srcitem.image :altitem.titleh3{{ item.title }}/h3p{{ item.description }}/pspan{{ item.price }}/span/li/ul/div /templatescript export default {data() {return {items: []};},created() {fetch(https://api.example.com/products).then(response response.json()).then(data {this.items data;});} }; /script在上面的代码中使用了 Vue.js 的模板语法来创建商品列表并通过 fetch 方法从后端 API 获取商品数据。 然而在实际应用中该代码存在一些性能问题可以进行优化。 下面是一个针对该代码的优化方案 templatedivh2商品列表/h2ulli v-for(item, index) in items :keyindeximg :srcitem.image :altitem.titleh3{{ item.title }}/h3p{{ item.description }}/pspan{{ item.price }}/span/li/ul/div /templatescript import axios from axios;export default {data() {return {items: [],loading: true};},async created() {try {const response await axios.get(https://api.example.com/products);this.items response.data;} catch (error) {console.error(error);} finally {this.loading false;}} }; /script在上面的优化方案中使用了以下优化方式 使用 axios 替换 fetch以提高网络请求的稳定性和可读性。将 created 钩子函数改为异步函数并使用 async/await 语法简化异步代码以提高代码可读性。添加 loading 变量用于在数据加载完成前显示加载动画以提高用户体验。 通过以上优化可以提高代码的性能、可读性和可维护性从而提高应用的质量和用户体验。 3.5 如何设置浏览器缓存策略以提高页面加载速度 设置浏览器缓存策略可以减少浏览器重复请求资源从而提高页面加载速度。可以通过在 HTTP 响应头中设置缓存策略来实现。 以下是一些常见的缓存策略设置方法 设置强缓存设置协商缓存 3.5.1 设置强缓存 强缓存是指浏览器在一定时间内直接从本地缓存中获取资源而不需要向服务器发送请求。可以通过设置 Expires 或者 Cache-Control 响应头来设置强缓存时间如下所示 Expires设置过期时间例如 Expires: Wed, 21 Oct 2023 07:28:00 GMTCache-Control设置缓存策略例如 Cache-Control: max-age3600表示资源在 3600 秒内有效。 3.5.2 设置协商缓存 协商缓存是指浏览器在过期时间后向服务器发送请求服务器会根据资源的 ETag 或者 Last-Modified 等信息判断资源是否发生变化。如果资源没有发生变化服务器会返回 304 状态码告诉浏览器可以直接使用本地缓存。可以通过设置 Last-Modified 和 ETag 响应头来设置协商缓存如下所示 Last-Modified表示资源的最后修改时间例如 Last-Modified: Wed, 21 Oct 2023 07:28:00 GMTETag表示资源的唯一标识符例如 ETag: W/1234567890 注意设置缓存策略时需要根据具体情况进行设置过长的缓存时间可能会导致资源更新不及时而过短的缓存时间则可能会影响页面加载速度。建议根据实际情况进行调整。
http://www.pierceye.com/news/851684/

相关文章:

  • ps做网站首页效果特效wordpress无法修改密码
  • 蚌埠网站设计一句话宣传自己的产品
  • 织梦开发供需网站杭州互联网企业排名
  • 网站结构分析关键词林俊杰的寓意
  • 网站备案 超链接青岛胶南做网站的
  • 国内ui做的好的网站网站底部 图标
  • 网站开发维护人员天津微外卖网站建设
  • 保定网站建设推广公司怎么样雄安优秀网站建设
  • 上海集团网站建设做网站用asp好吗
  • h5网站建设价格wp-wordpress
  • 简单描述一下网站制作的流程投资理财产品的网站建设
  • 企业网站制作托管东营高端网站建设
  • 可以推广网站建立网站接受投注是什么意思
  • 微网站制作网站开发创建自己网站的步骤
  • 人才网网站开发手册外链发布平台大全
  • 福州网站备案wordpress打开媒体链接设置
  • 大学网站建设考核办法永春网站设计
  • 哪个设计网站赚钱百度地图网页版进入
  • 网站备案号不存在100m的网站 数据库
  • 网站空间管理平台网站模版 优帮云
  • 网站开发的比较备案期间 需要关闭网站吗
  • 做网站 怎么推广上海市企业服务云十问十答
  • 怎么做一种网站为别人宣传wordpress query_posts()
  • 网站的运营和维护专业做网站官网
  • 详细论述制作网站的步骤做网站需求 后期方便优化
  • 蒙icp备 网站建设学校网站建设管理
  • 做免费外贸网站册域名网站大全免黄
  • 祈网网站建设制作网站如何赚钱
  • 最讨厌网站门户类网站的主页设计
  • 国家建设环保局网站网站做的好赚钱吗