如何捆绑循环相关的模块?

时间:2016-05-17 16:31:58

标签: javascript webpack

为简单起见,我们假设我有两个模块:SearchResponse searchResponse = client .prepareSearch(ELASTICSEARCH_INDEX) .setTypes(ELASTICSEARCH_TYPE) .setFetchSource(true)//Notice here .addScriptField("distance", distanceScript(queryForm)) .addAggregation(aggregations(queryForm)) .setQuery(filters(queryForm)) .execute() .actionGet(); table.js。我想用WebPack捆绑它们,但我最终得到一个错误,可能是因为它们彼此依赖。

chart.js

table.js

var chart = require('./chart'); module.exports = (function () { var init = function() { _loadTable(); chart.init(); }; var update = function() { console.log('table updated'); }; return { init: init, update: update } })();

chart.js

这里发生了什么? 表首先由var table = require('./table'); module.exports = (function () { var init = function() { _drawChart(); table.update(); // will throw an error: table.update is not a function }; return { init: init } })(); 加载,然后按table.init()加载图表模块。绘制图表并尝试更新表格作为回报。

但是,此时chart.init()并不知道chart.js是什么(因为当时var table = require('./table')),因此var table = {}会抛出错误。< / p>

在管理模块之前,这并没有发生过#34;传统上&#34; (由脚本标记加载并通过全局table.update()对象进行通信)。

我想知道,如果WebPack仍可用于这些依赖于并行的模块吗?

1 个答案:

答案 0 :(得分:0)

本文提供了一个非常详尽的列表,列出了解决问题的方法。

http://www.bitnative.com/2015/02/03/circular-dependencies-in-requirejs/

require语句的内联形式可能是最快的修复,但有许多缺点。