显示模块模式和Webpack

时间:2019-02-13 09:17:38

标签: javascript webpack module

我在module1.js文件中有这样的示例模块:

export const Module1 = (function() {

    'use strict';

    function init()
    {
        console.log('init');
    }

    return {
        init: init
    };

}());

bootstrap.js文件中,我有:

require('./module1');

app.js中,我使用:

require('./boostrap');

$(function() {
    Module1.init();
});

但是我得到了:

  

未捕获的ReferenceError:未定义Module1

当我尝试启动时也是如此:

Module1.init();

bootstrap.js

以防万一-我不是JavaScript专家,所以请逐步向我解释如果需要合适的解决方案,这有什么问题。我将Laravel mix用于Webpack,但未对Webpack使用任何自定义配置。

2 个答案:

答案 0 :(得分:0)

Javascript中的

require不能像其他语言一样工作。它不导入代码,而是模块。

让我们来看一下您拥有的3个模块:Module1,Bootstrap和App。

Bootstrap需要Module1,该功能在您导出文件模块1.js中的模块后即可起作用:

export const Module1 = [...]

但是,文件bootstrap.js仅导出模块Bootstrap。它不会导出Module1。

您必须在App.js中导入Module1才能使用它。

答案 1 :(得分:0)

我正在尝试不同的场景,看来解决方案正在这样做:

const Module1 = (function() {

    'use strict';

    function init()
    {
        console.log('init');
    }

    return {
        init: init
    };

}());

export default Module1;

然后在bootstrap.js中像这样包含它:

import Module1 from './module1';

bootstrap.js中,我可以运行:

Module1.init();

但是它不能使Module1.init()app.js中工作,所以我终于从boostrap.js删除了此导入,现在我的app.js看起来像这样:

require('./boostrap');
import Module1 from './module1';

$(function() {
    Module1.init();
});