在一些项目中,有些组件是不要在第一次进入首屏时加载,而是当进行某些操作,才会加载进来,所以此时,我们可以将该组件设置为异步加载,神马时候用,神马时候在加载进来,已达到提升首屏性能的目的**
异步组件的使用方法
此处使用的是webpack的懒加载方法
components: {AsyncCmp: () => import ('url');}
如果需要将多个文件同时异步加载出来时合并到一个文件中
components: {AsyncCmp1: () => import(/* webpackChunkName: "async" */ 'url'),AsyncCmp2: () => import(/* webpackChunkName: "async" */ 'url'),}
/* webpackChunkName: "async" */ 将文件合并到asynv中 因为上面的代码中两个名字都是async故会合并到一个文件当中去
示例
组件一的代码
<template><div>我是异步插件</div></template>
组件二的代码
<template><div>我是异步插件2</div></template>
app.vue的源码
<template><div id="app"><button @click="show=true">click</button><base-demo v-if="show"></base-demo><base-demo1 v-if="show"></base-demo1></div></template><script>// import baseDemo from './components/baseDemo'export default {name: 'App',components: {// 异步组件加载 ,将两个组件合并到一个文件中 文件名为asyncbaseDemo:()=>import(/* webpackChunkName: "async" */'./components/baseDemo'),baseDemo1:()=>import(/* webpackChunkName: "async" */'./components/baseDemo1')},data(){return{show:false,}}}</script><style>#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;}</style>
其他知识点prefech与preload 的区别
异步加载的文件,会在link标签上设置 el=”prefech”。浏览器会在空闲时间内下载对应的资源,使用时可以直接从缓存中获取。与之对应的 el=”preload”,会及时下载对应的资源。
