我有一个javascript文件,可以在其中简单地定义css类,以便可以在我的代码中使用它们并可以将它们维护在一个位置,如下所示:
//css.js
const pre = 'grc-';
const backdropcss = {
backdrop: `${pre}backdrop`,
};
const buttoncss = {
btn: `${pre}btn`,
btnSm: `${pre}btn--sm`,
btnSecondary: `${pre}btn--secondary`,
btnTertiary: `${pre}btn--tertiary`,
btnLink: `${pre}btn--link`,
btnFull: `${pre}btn--full`,
btnHalf: `${pre}btn--half`,
btnThird: `${pre}btn--third`,
};
//etc.
我以两种方式使用它。对于我的组件库,我想像这样隔离组件的css名称:
export {
buttoncss,
alertcss,
checkboxcss,
formcss,
radioboxcss,
drawercss,
backdropcss,
rangecss,
};
因此,我只能导入所需的内容。
但是我还希望将所有定义组合在一起的默认导出。(注:所以我不希望用它们作为cssjs.buttoncss,而是因为cssjs它具有所有子对象扩散到)
为了创建对象,我将所有子对象展开,然后将其导出为默认对象,如下所示:
const cssjs = {
...buttoncss,
...alertcss,
...checkboxcss,
...formcss,
...radioboxcss,
...drawercss,
...backdropcss,
...rangecss,
};
export default cssjs;
现在,每次创建新组件时,在这些对象中添加两次都是多余的。所以我想创建一个all对象:
const all = {
buttoncss,
alertcss,
checkboxcss,
formcss,
radioboxcss,
drawercss,
backdropcss,
rangecss,
};
并将它们传播到(命名的)出口中:
export { ...all}
然后,我将编写一些代码来遍历all对象,并将每个子对象散布到一个大对象中(cssjs从之前创建对象)。
但是在我能够编写最后的代码之前,我注意到export { ...all}不支持该语法。有什么方法可以完成我想要的工作,还是我必须像现在这样两次写所有东西?
编辑:
如果在声明时将变量设置为exports,请重新使用变量,这使我措手不及。现在这是我的代码:
//more definitions
export const formcss = {
formGroup: `${pre}form--group`,
};
export const radioboxcss = {
radio: `${pre}radio`,
radioStacked: `${pre}radio--stacked`,
};
export default {
...buttoncss,
...alertcss,
...checkboxcss,
...formcss,
...radioboxcss,
...drawercss,
...backdropcss,
...rangecss,
};
这解决了我的特定问题,但仍然让我感到奇怪,为什么不可能将对象扩展到导出声明中,以便您可以按对象内的名称导出对象中的所有内容。因此,对于可能通过标题来到这里的其他人:
我为什么要这样做
const one = 1
const two = 2
export { one, two, }
但这不是
const one = 1
const two = 2
const numbers = { one, two, }
export { ...numbers, }
婷婷同学_
郎朗坤
相关分类