Javascript 如何扩大出口
我有一个javascript文件,其中我只定义css类,这样我就可以在代码中使用它们,并可以在一个地方维护它们,如下所示:Javascript 如何扩大出口,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,我有一个javascript文件,其中我只定义css类,这样我就可以在代码中使用它们,并可以在一个地方维护它们,如下所示: //css.js const pre='grc-'; 常量backdropcss={ 背景:`${pre}background`, }; 常数按钮={ btn:`${pre}btn`, btnSm:`${pre}btn--sm`, btnSecondary:`${pre}btn--secondary`, btintertial:`${pre}btn—第三级`, btnLin
//css.js
const pre='grc-';
常量backdropcss={
背景:`${pre}background`,
};
常数按钮={
btn:`${pre}btn`,
btnSm:`${pre}btn--sm`,
btnSecondary:`${pre}btn--secondary`,
btintertial:`${pre}btn—第三级`,
btnLink:`${pre}btn--link`,
btnFull:`${pre}btn--full`,
btnHalf:`${pre}btn--half`,
btnThird:`${pre}btn--third`,
};
//等等。
我用两种方式使用它。对于我的组件库,我喜欢隔离组件的css名称,如下所示:
导出{
钮扣,
警讯,
checkboxcss,
formcss,
radioboxcss,
抽屉,
backdropcss,
兰奇,
};
因此,我只能导入我需要的内容。但是我还需要一个默认的导出,其中所有的定义都是组合的。 (注意:因此我不想将它们用作
cssjs.buttoncs
,而是用作cssjs
,它将所有子对象分散到其中)
要创建对象,我将展开所有子对象,然后将其导出为默认值,如下所示:
const cssjs={
…臀部,
…警告CSS,
…复选框CSS,
…formcss,
…radioboxcss,
…抽屉,
…backdropcss,
…范围CSS,
};
导出默认CSSJ;
现在,每次我创建一个新组件时,在这些对象中添加两次都会觉得多余。所以我想创建一个all
对象:
const all={
钮扣,
警讯,
checkboxcss,
formcss,
radioboxcss,
抽屉,
backdropcss,
兰奇,
};
并将其传播到(指定的)出口:
export{…all}
然后我将编写一些代码来循环遍历all
对象,并将每个子对象分散到一个大对象中(从以前创建cssjs
对象)
但是在我能够编写最后一段代码之前,我注意到export{…all}
语法不受支持。有什么方法可以实现我想要的,或者我必须像现在一样写两遍吗
编辑: 如果在声明时将变量设置为导出,那么重复使用变量会让我措手不及。这是我现在的代码:
//更多定义
导出常量formcss={
formGroup:`${pre}form--group`,
};
导出常量radioboxcss={
收音机:“${pre}收音机”,
radioStacked:“${pre}收音机--堆叠”,
};
导出默认值{
…臀部,
…警告CSS,
…复选框CSS,
…formcss,
…radioboxcss,
…抽屉,
…backdropcss,
…范围CSS,
};
这解决了我的特殊问题,但仍然让我想知道为什么不可能将对象扩展到导出声明中,以便您可以按照对象中的名称导出对象中的所有内容。因此,对于可能通过标题来到这里的其他人:
为什么我可以这样做
const one=1
常数2=2
导出{1,2,}
但不是这个
const one=1
常数2=2
常量数={1,2,}
导出{…数字,}
all
扩展到一个新对象中,只需export all
export const buttoncss=…
并完全跳过所有内容,而不是将所有内容合并到一个对象中导出不是对象,即使速记命名的导出语法看起来与速记对象文字语法非常相似。所以没有,实际上没有办法在那里使用扩展语法,这也意味着动态导出名称 有什么方法可以实现我想要的吗 为所有单个样式使用命名导出后,可以将自己的模块作为命名空间导入:
import * as myself from './css.js';
然后,imf
将是一个包含所有导出名称的命名空间对象。您现在可以默认值
-导出使用此对象的内容:
const all = {};
for (const p in myself)
if (p != "default")
Object.assign(all, myself[p]);
export { all as default };
请确保将此代码放在模块的末尾,以便
我自己[p]
将计算为已初始化的变量。1。
不是我的意思,而是2。
让我觉得自己很愚蠢,因为这正是我需要的。我猜在默认导出时合并它们会让我措手不及,所以在声明它们时我没有考虑导出所有对象。谢谢哇,真令人印象深刻,我不知道你能自我导入。