feat: 增加动态组件
This commit is contained in:
parent
4b2555de4a
commit
16acf39012
|
@ -1,12 +1,10 @@
|
||||||
import { createRequire as cRequire } from 'module'
|
import { createRequire } from 'module'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated 已废弃
|
* @deprecated 已废弃
|
||||||
* @param basePath
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function createRequire(basePath: string) {
|
export { createRequire }
|
||||||
return cRequire(basePath)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated 已废弃
|
* @deprecated 已废弃
|
||||||
|
@ -15,7 +13,7 @@ export function createRequire(basePath: string) {
|
||||||
*/
|
*/
|
||||||
export function require(path: string) {
|
export function require(path: string) {
|
||||||
return (url: string) => {
|
return (url: string) => {
|
||||||
return cRequire(url)(path)
|
return createRequire(url)(path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +42,38 @@ export const createDynamic = (basePath: string) => {
|
||||||
* @param path 相对路径
|
* @param path 相对路径
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
return (path: string) =>
|
return <T = any>(path: string): Promise<T> =>
|
||||||
|
import(
|
||||||
|
new URL(
|
||||||
|
`${path}${process.env.NODE_ENV == 'production' ? '' : now()}`,
|
||||||
|
basePath
|
||||||
|
).href
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 动态组件类型
|
||||||
|
*/
|
||||||
|
export type ModuleWithComponent<
|
||||||
|
ComponentName extends string,
|
||||||
|
PropsType = any
|
||||||
|
> = Promise<{ [K in ComponentName]: React.ComponentType<PropsType> }>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param basePath import.meta.url
|
||||||
|
* @returns
|
||||||
|
* ***********
|
||||||
|
* 创建动态组件
|
||||||
|
* ***********
|
||||||
|
* 在env.NODE_ENV=='production'下禁用
|
||||||
|
*/
|
||||||
|
export const createDynamicComponent = (basePath: string) => {
|
||||||
|
/**
|
||||||
|
* 与import作用相同
|
||||||
|
* @param path 相对路径
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
return <D extends string, T = any>(path: string): ModuleWithComponent<D, T> =>
|
||||||
import(
|
import(
|
||||||
new URL(
|
new URL(
|
||||||
`${path}${process.env.NODE_ENV == 'production' ? '' : now()}`,
|
`${path}${process.env.NODE_ENV == 'production' ? '' : now()}`,
|
||||||
|
|
Loading…
Reference in New Issue