Replace () => import(./TheComponent.vue) to defineAsyncComponent

This commit is contained in:
timongh 2023-02-09 17:41:14 +08:00
parent e187fb2d9d
commit 6a33d760d3
19 changed files with 53 additions and 20 deletions

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
import { getNumberValidator, getUID, none } from '@/core/utils'
@ -15,7 +17,7 @@ export const component = defineComponentMetadata({
unload: none,
tags: [componentsTags.live],
widget: {
component: () => import('./BadgeHelper.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./BadgeHelper.vue')),
condition: () => Boolean(getUID()),
},
options: {

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
export const component = defineComponentMetadata({
@ -9,7 +11,7 @@ export const component = defineComponentMetadata({
tags: [componentsTags.live],
entry: none,
widget: {
component: () => import('./DownloadRecords.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./DownloadRecords.vue')),
},
urlInclude: [/^https:\/\/live\.bilibili\.com\/record\/(.+)/],
})

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
import { matchUrlPattern } from '@/core/utils'
@ -13,7 +15,7 @@ export const component = defineComponentMetadata({
/^https:\/\/live\.bilibili\.com\/[\d]+/,
],
widget: {
component: () => import('./Widget.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./Widget.vue')),
condition: () => matchUrlPattern(/^https:\/\/live\.bilibili\.com\/([\d]+)/),
},
})

View File

@ -1,8 +1,10 @@
import { defineAsyncComponent } from 'vue'
const bangumiNames = ['番剧', '国创']
export const getContent = (tabName: string) => {
console.log('getContent', tabName)
if (bangumiNames.includes(tabName)) {
return () => import('./Bangumi.vue').then(m => m.default)
return defineAsyncComponent(() => import('./Bangumi.vue'))
}
return () => import('./Default.vue').then(m => m.default)
return defineAsyncComponent(() => import('./Default.vue'))
}

View File

@ -25,7 +25,7 @@ const tabs: TabMappings = [
{
name: MinimalHomeTabOption.Trending,
displayName: minimalHomeOptions.personalized ? '推荐' : '热门',
component: () => import('./tabs/Trending.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./tabs/Trending.vue')),
activeLink: 'https://www.bilibili.com/v/popular/all',
},
]

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
export const component = defineComponentMetadata({
@ -7,6 +9,6 @@ export const component = defineComponentMetadata({
entry: none,
tags: [componentsTags.utils],
widget: {
component: () => import('./Widget.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./Widget.vue')),
},
})

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
import { getUID } from '@/core/utils'
@ -10,7 +12,7 @@ export const component = defineComponentMetadata({
tags: [componentsTags.utils],
entry: none,
widget: {
component: () => import('./Widget.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./Widget.vue')),
condition: () => Boolean(getUID()),
},
})

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
import { isIframe } from '@/core/utils'
@ -43,7 +45,7 @@ export const component = defineComponentMetadata({
},
options: devClientOptionsMetadata,
widget: {
component: () => import('./Widget.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./Widget.vue')),
},
plugin: {
setup: setupPlugin,

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
export const component = defineComponentMetadata({
@ -13,7 +15,7 @@ export const component = defineComponentMetadata({
`.trim(),
},
widget: {
component: () => import('./DownloadAudio.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./DownloadAudio.vue')),
},
urlInclude: ['//www.bilibili.com/audio/'],
})

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import type { OptionsOfMetadata } from '@/components/define'
import { defineComponentMetadata, defineOptionsMetadata } from '@/components/define'
import { matchUrlPattern } from '@/core/utils'
@ -27,7 +29,7 @@ export const component = defineComponentMetadata({
},
widget: {
condition: () => columnUrls.some(url => matchUrlPattern(url)),
component: () => import('./Widget.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./Widget.vue')),
},
urlInclude: [...feedsUrls, ...columnUrls],
options,

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
import { videoAndBangumiUrls } from '@/core/utils/urls'
@ -13,7 +15,7 @@ export const component = defineComponentMetadata({
reload: none,
unload: none,
widget: {
component: () => import('./ViewCover.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./ViewCover.vue')),
},
description: {
'zh-CN': '在视频页面中, 可从功能面板中查看封面.',

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
import { videoAndBangumiUrls } from '@/core/utils/urls'
@ -11,6 +13,6 @@ export const component = defineComponentMetadata({
entry: none,
tags: [componentsTags.video, componentsTags.utils],
widget: {
component: () => import('./BiliplusRedirect.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./BiliplusRedirect.vue')),
},
})

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import type { OptionsOfMetadata } from '@/components/define'
import { defineComponentMetadata, defineOptionsMetadata } from '@/components/define'
import { hasVideo } from '@/core/spin-query'
@ -19,7 +21,7 @@ export const component = defineComponentMetadata({
},
tags: [componentsTags.video, componentsTags.utils],
widget: {
component: () => import('./BvidConvert.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./BvidConvert.vue')),
condition: hasVideo,
},
urlInclude: videoAndBangumiUrls,

View File

@ -1,4 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
import type { PackageEntry } from '@/core/download'
import { hasVideo } from '@/core/spin-query'
@ -66,6 +67,6 @@ export const component = defineComponentMetadata({
urlInclude: videoAndBangumiUrls,
widget: {
condition: hasVideo,
component: () => import('./DownloadDanmaku.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./DownloadDanmaku.vue')),
},
})

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
import { hasVideo } from '@/core/spin-query'
@ -8,7 +10,7 @@ export const component = defineComponentMetadata({
reload: none,
unload: none,
widget: {
component: () => import('./Widget.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./Widget.vue')),
condition: () => hasVideo(),
},
tags: [componentsTags.video],

View File

@ -1,4 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
import type { PackageEntry } from '@/core/download'
import { hasVideo } from '@/core/spin-query'
@ -20,7 +21,7 @@ export const component = defineComponentMetadata({
urlInclude: videoAndBangumiUrls,
widget: {
condition: hasVideo,
component: () => import('./DownloadSubtitle.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./DownloadSubtitle.vue')),
},
plugin: {
displayName: '下载视频 - 下载字幕支持',

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
import { liveUrls } from '@/core/utils/urls'
@ -11,7 +13,7 @@ export const component = defineComponentMetadata({
entry: none,
tags: [componentsTags.live],
widget: {
component: () => import('./LivePip.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./LivePip.vue')),
condition: () => 'requestPictureInPicture' in HTMLVideoElement.prototype,
},
urlInclude: liveUrls,

View File

@ -1,3 +1,5 @@
import { defineAsyncComponent } from 'vue'
import { defineComponentMetadata } from '@/components/define'
import { none } from '@/core/utils'
import { liveUrls } from '@/core/utils/urls'
@ -11,7 +13,7 @@ export const component = defineComponentMetadata({
entry: none,
tags: [componentsTags.live],
widget: {
component: () => import('./RecordDanmaku.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./RecordDanmaku.vue')),
},
urlInclude: liveUrls,
})

View File

@ -1,6 +1,7 @@
/*
* Switch Options API, ,
*/
import { defineAsyncComponent } from 'vue'
import { addComponentListener, getComponentSettings } from '@/core/settings'
import type { ComponentMetadata, OptionsMetadata } from './component'
@ -49,7 +50,7 @@ export const createSwitchOptions = (options: SwitchOptions) => {
component.options = { ...component.options, ...extendComponentOptions }
if (!component.widget) {
component.widget = {
component: () => import('./SwitchOptions.vue').then(m => m.default),
component: defineAsyncComponent(() => import('./SwitchOptions.vue')),
options,
}
}