Skip to content

Commit 6b60662

Browse files
committed
performance improvement
1 parent c1b097e commit 6b60662

File tree

2 files changed

+51
-47
lines changed

2 files changed

+51
-47
lines changed

lib/Compilation.js

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,12 @@ Compilation.prototype.processModuleDependencies = function(module, callback) {
171171
};
172172

173173
Compilation.prototype.addModuleDependencies = function(module, dependencies, bail, cacheGroup, recursive, callback) {
174-
var start = this.profile && +new Date();
174+
var _this = this;
175+
var start = _this.profile && +new Date();
175176

176177
var factories = [];
177178
for(var i = 0; i < dependencies.length; i++) {
178-
var factory = this.dependencyFactories.get(dependencies[i][0].constructor);
179+
var factory = _this.dependencyFactories.get(dependencies[i][0].constructor);
179180
if(!factory) {
180181
return callback(new Error("No module factory available for dependency type: " + dependencies[i][0].constructor.name));
181182
}
@@ -187,27 +188,27 @@ Compilation.prototype.addModuleDependencies = function(module, dependencies, bai
187188
return !!d.critical;
188189
});
189190
if(criticalDependencies.length > 0) {
190-
this.warnings.push(new CriticalDependenciesWarning(module, criticalDependencies));
191+
_this.warnings.push(new CriticalDependenciesWarning(module, criticalDependencies));
191192
}
192193

193194
var errorAndCallback = function errorAndCallback(err) {
194195
err.dependencies = dependencies;
195196
err.origin = module;
196197
module.dependenciesErrors.push(err);
197-
this.errors.push(err);
198+
_this.errors.push(err);
198199
if(bail) {
199200
callback(err);
200201
} else {
201202
callback();
202203
}
203-
}.bind(this);
204+
};
204205
var warningAndCallback = function warningAndCallback(err) {
205206
err.dependencies = dependencies;
206207
err.origin = module;
207208
module.dependenciesWarnings.push(err);
208-
this.warnings.push(err);
209+
_this.warnings.push(err);
209210
callback();
210-
}.bind(this);
211+
};
211212

212213
var factory = item[0];
213214
factory.create(module.context, dependencies[0], function(err, dependantModule) {
@@ -230,7 +231,7 @@ Compilation.prototype.addModuleDependencies = function(module, dependencies, bai
230231
if(!dependantModule) {
231232
return process.nextTick(callback);
232233
}
233-
if(this.profile) {
234+
if(_this.profile) {
234235
if(!dependantModule.profile) {
235236
dependantModule.profile = {};
236237
}
@@ -239,10 +240,10 @@ Compilation.prototype.addModuleDependencies = function(module, dependencies, bai
239240
}
240241

241242
dependantModule.issuer = module.identifier();
242-
var newModule = this.addModule(dependantModule, cacheGroup);
243+
var newModule = _this.addModule(dependantModule, cacheGroup);
243244

244245
if(!newModule) { // from cache
245-
dependantModule = this.getModule(dependantModule);
246+
dependantModule = _this.getModule(dependantModule);
246247

247248
if(dependantModule.optional) {
248249
dependantModule.optional = isOptional();
@@ -259,7 +260,7 @@ Compilation.prototype.addModuleDependencies = function(module, dependencies, bai
259260
dependantModule.addReason(module, dep);
260261
});
261262

262-
if(this.profile) {
263+
if(_this.profile) {
263264
if(!module.profile) {
264265
module.profile = {};
265266
}
@@ -273,7 +274,7 @@ Compilation.prototype.addModuleDependencies = function(module, dependencies, bai
273274
}
274275

275276
if(newModule instanceof Module) {
276-
if(this.profile) {
277+
if(_this.profile) {
277278
newModule.profile = dependantModule.profile;
278279
}
279280

@@ -286,13 +287,13 @@ Compilation.prototype.addModuleDependencies = function(module, dependencies, bai
286287
dependantModule.addReason(module, dep);
287288
});
288289

289-
if(this.profile) {
290+
if(_this.profile) {
290291
var afterBuilding = +new Date();
291292
module.profile.building = afterBuilding - afterFactory;
292293
}
293294

294295
if(recursive) {
295-
return process.nextTick(this.processModuleDependencies.bind(this, dependantModule, callback));
296+
return process.nextTick(_this.processModuleDependencies.bind(_this, dependantModule, callback));
296297
} else {
297298
return process.nextTick(callback);
298299
}
@@ -305,25 +306,25 @@ Compilation.prototype.addModuleDependencies = function(module, dependencies, bai
305306
dependantModule.addReason(module, dep);
306307
});
307308

308-
this.buildModule(dependantModule, function(err) {
309+
_this.buildModule(dependantModule, function(err) {
309310
if(err) {
310311
return errorOrWarningAndCallback(err);
311312
}
312313

313-
if(this.profile) {
314+
if(_this.profile) {
314315
var afterBuilding = +new Date();
315316
dependantModule.profile.building = afterBuilding - afterFactory;
316317
}
317318

318319
if(recursive) {
319-
this.processModuleDependencies(dependantModule, callback);
320+
_this.processModuleDependencies(dependantModule, callback);
320321
} else {
321322
return callback();
322323
}
323-
}.bind(this));
324+
});
324325

325-
}.bind(this));
326-
}.bind(this), function(err) {
326+
});
327+
}, function(err) {
327328
if(err) {
328329
return callback(err);
329330
}

lib/NormalModuleFactory.js

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ function NormalModuleFactory(context, resolvers, parser, options) {
1818
this.postLoaders = new LoadersList(options.postLoaders);
1919
this.context = context || "";
2020
this.plugin("factory", function() {
21+
var _this = this;
2122
return function(result, callback) {
22-
var resolver = this.applyPluginsWaterfall("resolver", null);
23+
var resolver = _this.applyPluginsWaterfall("resolver", null);
2324

2425
// Ignored
2526
if(!resolver) return callback();
@@ -34,13 +35,13 @@ function NormalModuleFactory(context, resolvers, parser, options) {
3435
if(typeof data.source === "function")
3536
return callback(null, data);
3637

37-
this.applyPluginsAsyncWaterfall("after-resolve", data, function(err, result) {
38+
_this.applyPluginsAsyncWaterfall("after-resolve", data, function(err, result) {
3839
if(err) return callback(err);
3940

4041
// Ignored
4142
if(!result) return callback();
4243

43-
var createdModule = this.applyPluginsBailResult("create-module", result);
44+
var createdModule = _this.applyPluginsBailResult("create-module", result);
4445
if(!createdModule) {
4546
createdModule = new NormalModule(
4647
result.request,
@@ -52,14 +53,15 @@ function NormalModuleFactory(context, resolvers, parser, options) {
5253
);
5354
}
5455

55-
createdModule = this.applyPluginsWaterfall("module", createdModule);
56+
createdModule = _this.applyPluginsWaterfall("module", createdModule);
5657

5758
return callback(null, createdModule);
58-
}.bind(this));
59-
}.bind(this));
60-
}.bind(this);
59+
});
60+
});
61+
};
6162
});
6263
this.plugin("resolver", function() {
64+
var _this = this;
6365
return function(data, callback) {
6466
var context = data.context;
6567
var request = data.request;
@@ -72,13 +74,13 @@ function NormalModuleFactory(context, resolvers, parser, options) {
7274

7375
async.parallel([
7476
function(callback) {
75-
this.resolveRequestArray(context, elements, this.resolvers.loader, callback);
76-
}.bind(this),
77+
_this.resolveRequestArray(context, elements, _this.resolvers.loader, callback);
78+
},
7779
function(callback) {
7880
if(resource === "" || resource[0] === "?")
7981
return callback(null, resource);
80-
this.resolvers.normal.resolve(context, resource, callback);
81-
}.bind(this)
82+
_this.resolvers.normal.resolve(context, resource, callback);
83+
}
8284
], function(err, results) {
8385
if(err) return callback(err);
8486
var loaders = results[0];
@@ -93,26 +95,26 @@ function NormalModuleFactory(context, resolvers, parser, options) {
9395
var userRequest = loaders.concat([resource]).join("!");
9496

9597
if(noPrePostAutoLoaders)
96-
return onDoneResolving.call(this);
98+
return onDoneResolving();
9799
if(noAutoLoaders) {
98100
async.parallel([
99-
this.resolveRequestArray.bind(this, context, noPostAutoLoaders ? [] : this.postLoaders.match(resource), this.resolvers.loader),
100-
this.resolveRequestArray.bind(this, context, this.preLoaders.match(resource), this.resolvers.loader)
101+
_this.resolveRequestArray.bind(_this, context, noPostAutoLoaders ? [] : _this.postLoaders.match(resource), _this.resolvers.loader),
102+
_this.resolveRequestArray.bind(_this, context, _this.preLoaders.match(resource), _this.resolvers.loader)
101103
], function(err, results) {
102104
if(err) return callback(err);
103105
loaders = results[0].concat(loaders).concat(results[1]);
104-
onDoneResolving.call(this);
105-
}.bind(this));
106+
onDoneResolving();
107+
});
106108
} else {
107109
async.parallel([
108-
this.resolveRequestArray.bind(this, context, noPostAutoLoaders ? [] : this.postLoaders.match(resource), this.resolvers.loader),
109-
this.resolveRequestArray.bind(this, context, this.loaders.match(resource), this.resolvers.loader),
110-
this.resolveRequestArray.bind(this, context, this.preLoaders.match(resource), this.resolvers.loader)
110+
_this.resolveRequestArray.bind(_this, context, noPostAutoLoaders ? [] : _this.postLoaders.match(resource), _this.resolvers.loader),
111+
_this.resolveRequestArray.bind(_this, context, _this.loaders.match(resource), _this.resolvers.loader),
112+
_this.resolveRequestArray.bind(_this, context, _this.preLoaders.match(resource), _this.resolvers.loader)
111113
], function(err, results) {
112114
if(err) return callback(err);
113115
loaders = results[0].concat(loaders).concat(results[1]).concat(results[2]);
114-
onDoneResolving.call(this);
115-
}.bind(this));
116+
onDoneResolving();
117+
});
116118
}
117119

118120
function onDoneResolving() {
@@ -123,11 +125,11 @@ function NormalModuleFactory(context, resolvers, parser, options) {
123125
rawRequest: request,
124126
loaders: loaders,
125127
resource: resource,
126-
parser: this.parser
128+
parser: _this.parser
127129
});
128130
}
129-
}.bind(this));
130-
}.bind(this);
131+
});
132+
};
131133
});
132134
}
133135
module.exports = NormalModuleFactory;
@@ -136,9 +138,10 @@ NormalModuleFactory.prototype = Object.create(Tapable.prototype);
136138
NormalModuleFactory.prototype.constructor = NormalModuleFactory;
137139

138140
NormalModuleFactory.prototype.create = function(context, dependency, callback) {
141+
var _this = this;
139142
context = context || this.context;
140143
var request = dependency.request;
141-
this.applyPluginsAsyncWaterfall("before-resolve", {
144+
_this.applyPluginsAsyncWaterfall("before-resolve", {
142145
context: context,
143146
request: request,
144147
dependency: dependency
@@ -148,14 +151,14 @@ NormalModuleFactory.prototype.create = function(context, dependency, callback) {
148151
// Ignored
149152
if(!result) return callback();
150153

151-
var factory = this.applyPluginsWaterfall("factory", null);
154+
var factory = _this.applyPluginsWaterfall("factory", null);
152155

153156
// Ignored
154157
if(!factory) return callback();
155158

156159
factory(result, callback);
157160

158-
}.bind(this));
161+
});
159162
};
160163

161164
NormalModuleFactory.prototype.resolveRequestArray = function resolveRequestArray(context, array, resolver, callback) {

0 commit comments

Comments
 (0)