提高Vue应用程序的性能(减小大小)

oxalkeyp  于 2023-04-07  发布在  Vue.js
关注(0)|答案(3)|浏览(177)

我面对的是Web应用程序的性能,我不知道如何优化它。我的单页网站,良好的互联网加载在2-3秒,如果我把在2G和3G,它加载在大约+20秒。我已经安装了几个库本地Quasar,和WaveUI(之前我也使用NaiveUI,它花了大约1 M字节,我决定删除它。我如何增加网站的加载量和大小?

我所做的和尝试做的:

  • 使用CDN,但它不工作。
  • 我使用'defineAsyncComponent来表示“组件的延迟加载”。
  • 从CSS/SCSS转换为Sass。

我甚至不使用任何繁重的脚本,我只从js文件中获取并显示数据作为列表,仅此而已。
我的App.vue

<template>
  <w-app class="main-app">
    <q-layout>
      <q-header reveal className="sticky-top">
        <Navigation/>
      </q-header>
      <MainContent/>
    </q-layout>
  </w-app>
</template>

<script>
import {defineAsyncComponent} from 'vue'
const MainContent = defineAsyncComponent(() =>
    import('@/components/MainContent.vue')
)
const Navigation = defineAsyncComponent(() =>
    import('@/components/NavigationComponent.vue')
)
export default {
  components: {MainContent, Navigation}
}

</script>

MainContent.vue

<template>
  <w-flex justify-center class="pa3">
    <SideElements></SideElements>
    <div class="grow fill-width text-center">
      <section id="first">
        <FirstSection></FirstSection>
      </section>
      <section>
        <AboutMe id="about"></AboutMe>
      </section>
      <section>
        <ExperienceSection id="experience"/>
      </section>
      <section>
        <FeaturedProject id="projects">

        </FeaturedProject>
      </section>
    </div>
  </w-flex>
</template>

<script>
import {defineAsyncComponent} from 'vue'
const FirstSection = defineAsyncComponent(() =>
    import('@/components/FirstSection.vue')
)
const AboutMe = defineAsyncComponent(() =>
    import('@/components/AboutMe.vue')
)
const ExperienceSection = defineAsyncComponent(() =>
    import('@/components/ExperienceSection.vue')
)
const SideElements = defineAsyncComponent(() =>
    import('@/components/SideElements.vue')
)
const FeaturedProject = defineAsyncComponent(() =>
    import('@/components/FeaturedProject.vue')
)

export default {
  components: {
    FeaturedProject,
    ExperienceSection,
    AboutMe,
    FirstSection,
    SideElements
  }
}
</script

main.js

import { createApp } from 'vue'
import App from './App.vue'
//Quasar
import { Quasar } from 'quasar'

// Import icon libraries
import '@quasar/extras/material-icons/material-icons.css'

// Import Quasar css
import 'quasar/src/css/index.sass'

//WaveUI
import WaveUI from 'wave-ui'
import 'wave-ui/dist/wave-ui.css'

const app = createApp(App)
app.use(Quasar, {
    plugins: {}, // import Quasar plugins and add here
})
app.use(WaveUI, { /* Some Wave UI options */ })

app.mount('#app')

以及如何从js文件中调用数据。

<script>
import {mdiFolderOutline, mdiGithub, mdiOpenInNew} from '@mdi/js';
import {projects} from "@/assets/projects.js";

export default {
  name: "FeaturedProject",
  data: () => ({
    folder: mdiFolderOutline,
    github: mdiGithub,
    open: mdiOpenInNew,
    projects: projects
  })
}
</script>
ua4mk5z4

ua4mk5z41#

要优化Vue应用程序的初始加载策略,可以使用以下几种技术:
代码分割:将代码分割成更小的块可以更快地加载和更好地缓存。这可以使用webpack等工具来实现,它内置了对代码分割的支持。
延迟加载:只加载特定时刻需要的组件可以加快初始加载时间。Vue通过动态导入提供了对延迟加载的内置支持。
SSR(服务器端渲染):在服务器上预呈现页面可以显著缩短初始加载时间,因为服务器会将完全呈现的HTML发送回客户端,从而减少客户端所需的工作量。
缓存和压缩:启用缓存和资产压缩也可以加快初始加载时间。像service worker这样的工具可以帮助缓存,而gzip压缩可以减少通过网络发送的资产的大小。

ujv3wf0j

ujv3wf0j2#

你可以做的性能优化(不仅仅是前端):

  • 在服务器端启用HTTP/3。它在处理多个请求(如获取JS文件)时具有更好的性能
  • 启用gzip/brotli。您可以在服务器/CDN中完成,也可以使用webpack(或任何其他捆绑包)并使用压缩插件配置production构建。
  • 拆分JS块。从我看到的来看,你有很多未使用的代码。你应该使用像webpack这样的打包器,并使用treeshaking只提取每个页面中需要的代码。
  • 优化图像和字体。使用jpgwoff2用于较小的尺寸。
  • 根据需要在HTML <meta>标记中使用preconnectprefetch

您还可以通过使用Chrome开发工具中的Lighthouse找到更多潜在的优化。

jdzmm42g

jdzmm42g3#

localhost的速度直接取决于你的电脑的能力,如果你有一台运行php服务器的旧电脑,vscode,....你的页面需要很长时间刷新可能是正常的。

相关问题