如何使用动态名称导出变量
How to Export Variables with a Dynamic Names
我在 nuxt.js
中有一个组件文件夹
/components/atoms/
在该文件夹中我有一个 index.js
可以动态导出所有组件
const req = require.context('./', true, /\.vue$/)
const components = {}
req.keys().forEach(fileName => {
const componentName = fileName.replace(/^.+\/([^/]+)\.vue/, '')
components[componentName] = req(fileName).default
})
export const { ButtonStyled, TextLead, InputSearch } = components
这样我就可以完美导入了
import { ButtonStyled } from "@/components/atoms"
问题是我正在定义要静态导出的变量,固定的,所以对于每个创建的组件,我需要手动添加另一个变量
我需要动态导出变量名
示例:
DynamicCreation = ['ButtonStyled', 'TextLead', 'InputSearch']
export const { DynamicCreation } = components
// output -> export const { ButtonStyled, TextLead,InputSearch } = components
我需要导出已经非结构化变量的名称
注意:我不能使用这个 export default components
因为我不能像这样导入 import { ButtonStyled } from "@/components/atoms"
你应该可以这样做:
export default components
然后在您要使用组件的文件中:
import * as components from '@/components/atoms'
然后当你需要使用你的Vue文件中的组件时,你需要映射它们:
@Component({
components: {
ButtonStyled: components.ButtonStyled
}
})
现在你有:
<ButtonStyled></ButtonStyled>
你可以这样制作,看看是不是你需要的。
创建文件以导入组件的组合:allComponents.js
export default {
componentOne: require('./passToOneComponent.js');
componentTwo: require('./passToOneComponent.js');
componentThree: require('./passToOneComponent.js');
}
在 index.js 中导出带有您想要的名称的 allComponents.js:
export {default as SomeName } from 'allComponents.js';
因此在最终文件中,您可以制作如下内容:
import { SomeName } from 'index.js';
SomeName.componentOne();
我创建了一个执行此类导出的库,任何想要的人都可以通过 npm
安装
我创建了一个 Webpack 插件,可以从组件中进行命名导出,也许这对其他人有帮助
Weback Plugin - named-exports
我在 nuxt.js
中有一个组件文件夹/components/atoms/
在该文件夹中我有一个 index.js
可以动态导出所有组件
const req = require.context('./', true, /\.vue$/)
const components = {}
req.keys().forEach(fileName => {
const componentName = fileName.replace(/^.+\/([^/]+)\.vue/, '')
components[componentName] = req(fileName).default
})
export const { ButtonStyled, TextLead, InputSearch } = components
这样我就可以完美导入了
import { ButtonStyled } from "@/components/atoms"
问题是我正在定义要静态导出的变量,固定的,所以对于每个创建的组件,我需要手动添加另一个变量
我需要动态导出变量名
示例:
DynamicCreation = ['ButtonStyled', 'TextLead', 'InputSearch']
export const { DynamicCreation } = components
// output -> export const { ButtonStyled, TextLead,InputSearch } = components
我需要导出已经非结构化变量的名称
注意:我不能使用这个 export default components
因为我不能像这样导入 import { ButtonStyled } from "@/components/atoms"
你应该可以这样做:
export default components
然后在您要使用组件的文件中:
import * as components from '@/components/atoms'
然后当你需要使用你的Vue文件中的组件时,你需要映射它们:
@Component({
components: {
ButtonStyled: components.ButtonStyled
}
})
现在你有:
<ButtonStyled></ButtonStyled>
你可以这样制作,看看是不是你需要的。
创建文件以导入组件的组合:allComponents.js
export default {
componentOne: require('./passToOneComponent.js');
componentTwo: require('./passToOneComponent.js');
componentThree: require('./passToOneComponent.js');
}
在 index.js 中导出带有您想要的名称的 allComponents.js:
export {default as SomeName } from 'allComponents.js';
因此在最终文件中,您可以制作如下内容:
import { SomeName } from 'index.js';
SomeName.componentOne();
我创建了一个执行此类导出的库,任何想要的人都可以通过 npm
我创建了一个 Webpack 插件,可以从组件中进行命名导出,也许这对其他人有帮助