我想将一些模块组合成一个可以导入的文件。这些是本地文件,不属于npm模块。
模块小猫(kitten.js)
export function Feed() {}
export function Play() {}
在我的代码中,我可以访问' Feed'和'播放':
// This works but I would like to avoid this due to my paths
import { Feed, Play } from './some/long/path/kitten.js'
// Then use it
Feed()
因为我有许多宠物'我可以在主文件中填写它们 - 比如pets.js
export * as Kitten from './some/long/path/kitten.js'
export * as Puppies from './some/long/path/puppies.js'
...
在我的代码中,我可以这样做:
import { Kitten, Puppies } from './pets'
// Then use it as
Kitten.Feed()
是否可以同时拥有a)主宠物文件和b)在不Feed()
的情况下致电Kitten.Feed()
?
以下不起作用,因为它不是有效路径。它可能会像宠物/小猫一样起作用。如果它是一个npm模块 - 我不确定。
import { Feed, Play } from './pets/Kitten'
我正在思考以下几点:
import * as Pets from from './pets'
import { Feed, Play } from Pets.Kitten // or 'Pets/Kitten'
但显然这不起作用。我想知道它是否可能。
我在Node with Babel 6和ES6模块加载中使用它。我看到了很多类似的问题,但它们都使用了我没有使用的默认导出。
答案 0 :(得分:1)
但这并不允许我导入所选的功能。
确实如此。 relative-path导入与模块导入的工作方式相同。您可以对结果进行相同的结构化。
import { Play } from 'Pet/Puppy';
// is identical to
import { Play } from '../node_modules/Pet/Puppy';
如果您查看the import
syntax (s15.2.2),可以看到from
部分需要一个字符串。它并不关心字符串中的内容,而不是模块系统(浏览器,节点等)。
答案 1 :(得分:0)
啊..对象解构..忘了那个。
import { Kitten, Puppies } from './pets'
const {Feed, Play} = Kitten;