Webpack 要求确保大型模块
Webpack require ensure large modules
我正在使用 d3 库。它很大,所以我只想按需下载块。我可以使用 require.ensure 创建分割点,但我不知道如何将库实际放入模块的范围内。这是我能得到的最接近的,块已下载,但 d3 始终未定义。任何帮助将不胜感激。
var React = require('react');
var d3;
require.ensure([], function(require){
d3 = require('d3');
});
var Chart = React.createClass({
render: function() {
var props = this.props;
var width = props.width;
//d3 is undefined here
var xScale = d3.scale.linear().domain([
0, 111
]).range([
0, width
]);
return (
<g>
</g>
);
}
});
module.exports = Chart;
根据我的理解,机制是这样的:
require.ensure(["<file-path or module name>"], function(moduleExportsValue) {
var myModule = require("<file-path or module name>");
});
对于您的具体示例:
require.ensure(["d3"], function() {
var d3 = require("d3");
// do something with d3
});
编辑:这对于在应用程序中无法立即看到的内容非常有帮助。例如对话框、模态框、叠加层。
onButtonClick: function(event) {
this.showLoader();
var self = this;
require.ensure("path/to/dialog", function() {
self.hideLoader();
var dialog = require("path/to/dialog");
dialog.open();
});
},
我正在使用 d3 库。它很大,所以我只想按需下载块。我可以使用 require.ensure 创建分割点,但我不知道如何将库实际放入模块的范围内。这是我能得到的最接近的,块已下载,但 d3 始终未定义。任何帮助将不胜感激。
var React = require('react');
var d3;
require.ensure([], function(require){
d3 = require('d3');
});
var Chart = React.createClass({
render: function() {
var props = this.props;
var width = props.width;
//d3 is undefined here
var xScale = d3.scale.linear().domain([
0, 111
]).range([
0, width
]);
return (
<g>
</g>
);
}
});
module.exports = Chart;
根据我的理解,机制是这样的:
require.ensure(["<file-path or module name>"], function(moduleExportsValue) {
var myModule = require("<file-path or module name>");
});
对于您的具体示例:
require.ensure(["d3"], function() {
var d3 = require("d3");
// do something with d3
});
编辑:这对于在应用程序中无法立即看到的内容非常有帮助。例如对话框、模态框、叠加层。
onButtonClick: function(event) {
this.showLoader();
var self = this;
require.ensure("path/to/dialog", function() {
self.hideLoader();
var dialog = require("path/to/dialog");
dialog.open();
});
},