Javascript 如何将解构导入保存为一个对象的属性?
我的场景是,Javascript 如何将解构导入保存为一个对象的属性?,javascript,ecmascript-6,Javascript,Ecmascript 6,我的场景是,@/helpers/filters具有函数A、B、C、D、E、F。。。我只需要A,B,C,并希望将其保存在1个对象过滤器中,而不是作为单独的值A,B,C 我可以分两步完成: import { A, B, C } from '@/helpers/filters'; let filters = { A, B, C }; 但更愿意将其简化为: import { A, B, C } as filters from '@/helpers/filters'; 但这种
@/helpers/filters
具有函数A、B、C、D、E、F。。。我只需要A,B,C,并希望将其保存在1个对象过滤器中,而不是作为单独的值A,B,C
我可以分两步完成:
import {
A, B, C
} from '@/helpers/filters';
let filters = {
A, B, C
};
但更愿意将其简化为:
import {
A, B, C
} as filters from '@/helpers/filters';
但这种语法被高度化为“表达式语句不是赋值或调用”。目前还没有这样做的语法。你的选择是:
创建一个模块(可能是@/helpers/abcfilters
),只导入a、B和C,然后导出它们:
export { A, B, C } from '@/helpers/filters';
…然后改用该模块:
import * as filters from '@/helpers/abcfilters';
使用“@/helpers/filters”中的import*作为筛选器代码>并且不要使用你不需要的东西
分别导入A、B和C。如果您愿意,在导入它们之后,您可以将它们的值添加到对象中,然后使用该对象,但是请注意,如果您有任何循环依赖项,那么您最初收到的A、B和C可能还没有它们的最终值。(当然,即使没有循环引用,导出模块也可以随着时间的推移修改模块导出,尽管在实践中很少这样做。)
import
语句应该是静态分析的,并且只支持。如果它不在那里,你可以确定它不受支持。只是不要使用你不需要的东西-因为这取决于环境,不使用的过滤器有可能不会被树震动。@estus-是的,有这种可能性,尽管随着模块本机化,这种可能性会降低…:-)不过,我真的应该把最后一个移到列表的顶部,不是吗?(编辑:完成。)选项nr 1似乎是最干净的,但也会增加大部分开销,并将我的模块的依赖项移动到其他模块(ABCFilter),这将不太方便管理。选项nr 3基本上就是我尝试的,对吗?或者我可以将它与NR2混合使用(导入所有内容并向对象添加所需的函数,filters={a:filtersAll.a,b:filtersAll.b}
)。@van_folmert:我看不出您列出的#1有什么问题;所有模块都有依赖项。我想它增加了一层,但没什么好担心的。是的,#2就是你所描述的。你可以将#3和#2结合起来,但可以说,你会在这两个世界中得到最坏的结果。:-)