2015-10-25 140 views
3

我使用this GULP plugin将HTML文件转换为ES6导出,因此我可以在我的MVC中使用浏览器(使用rollup bundler)加载它们。ES6导入模块作为对象

基本上我有页面控制器作为模块导出。

然后,在我的主要JS文件,我只是导入所有的页面控制器,一旦一个,像这样(简化):

import * as page__home from './pages/page1'; 
import * as page__home from './pages/page2'; 
... 

因为这是一个SPA,我想它会更容易以某种方式将所有页面控制器导入到某个对象中,因此当控制器被调用时,我可以检查该对象是否存在于持有所有导入控制器的对象中,或类似的东西。

或者也许有一种方法来检查模块是否被导入? 有没有更聪明的方法来做到这一点?由于

+0

这让我想起[从目录中的文件导入模块](http://stackoverflow.com/q/29722270/1048572),但我不确定它是重复还是仅仅是一个XY问题。 – Bergi

+0

@Bergi - 我知道如何从一个目录中导入所有文件,那不是,我的意思是,让我们说代码中的某处,我希望某些模块可用,如何检查它是否已导入?可以说模块名称是动态的。所以它是''page__“+ someName' – vsync

+0

如果模块名称确实是动态的,则需要使用动态导入和动态模块加载。如果导入的模块是静态的,就像使用'import'语法所暗示的那样,应该没有理由检查模块是否可用 - 所有导入的模块都可以按照定义使用(如果不是,则整个模块将失败)。 – Bergi

回答

1

正如上面指出:

我想我明白了其实,我将结合使用一饮而尽所有控制器中的文件,然后导入一个文件,它都将是该命名空间下,像这样的进口*为'./pages/bundle'中的页面;那么我可以检查是否(网页[“xxx”])

+0

您引用我自己的评论,回答我自己的问题,并将它作为答案发布,而不添加任何自己的评论?你的动机是什么?你为什么这么做? – vsync

+0

@vsync感谢您的询问。对于上下文,请参阅https://meta.stackexchange.com/questions/170641/unanswered-questions-with-just-comments –

+0

我明白了,你正在做一个随机审查:)我有时也这样做 – vsync