2017-08-10 121 views
0

我有一个浏览器应用程序的项目,我想分成两部分。 作为一个小例子,可想而知,在./core我:如何从排除模块(ES6)导入?

// core.js 
import SuperClass from "../core/SuperClass";  
export {SuperClass}; 

// SuperClass.js 
class SuperClass 
{ 
    constructor() 
    { 
     console.log('SuperClass constructor'); 
    } 
} 
export default SuperClass 

和目录./game具有

//game.js 
import SuperClass from "../core/SuperClass"; 
console.log(SuperClass); 

如果我建立与game.js为切入点,一切都很好,因为所有的依赖进入捆绑。

但是,如果我排除的文件从./core(通过使用排除browserify的功能),并与game.js之前进行独立的捆绑与他们和负载:

<script src="scripts/core.js"></script> 
<script src="scripts/game.js"></script> 

我得到:未捕获的错误:无法从game.js中找到模块'../core/SuperClass'

在运行时为game.js提供这些依赖关系的方法是什么?我的构建过程使用了一些gulp,babelify和browserify。

+0

为什么要将应用程序拆分为两个单独的包? – adrice727

+0

有许多应用程序需要在单个文件中加载的通用代码,并且存在与应用程序相关的代码,这是不同的 –

回答

1

如果要通过位于代码之前的<script>标记添加代码,则可以假定该代码存在,作为全局变量/类/库,因为它已存在,所以不需要导入它。例如,使用优秀的旧JQuery:当您将文件放入HTML文件时,您知道$无所不在

+0

非常感谢,这似乎是我需要的。我想我的想法坚持了我必须导入一切的想法。另外我是新来的JS,可能很明显:)顺便说一句,如果有人遇到这个问题,你还需要在browserify中使用standalone选项才能工作 –