0
我刚刚开始在寻找Webpack作为未来jQuery插件的模块加载器,但是我试图在单独的文件中分离单独的原型函数时遇到了问题。 Webpack似乎将原型函数导入到单独的IFFE中,这反过来又给我一个控制台错误。WEBPACK - 我如何要求原型功能?
有什么基本的我做错了吗?
示例代码:(之前运行的WebPack)
app.js
function() {
var Cars = function(color, doors, year, make) {
this.color = color;
this.doors = doors;
this.year = year;
this.make = make;
}
require('./imports/module1.js');
var Audi = new Cars("red", 5, 2001, "Audi");
Audi.listing();
})();
module1.js
// Module 1
console.log("Module 1");
Cars.prototype.listing = function() {
console.log(this.year + ", " + this.color + ", " + this.make + ", with " + this.doors + " doors");
}
的WebPack SNIPPIT
/******/ ([
/* 0 */
/***/ (function(module, exports) {
// Module 1
console.log("Module 1");
Cars.prototype.listing = function() {
console.log(this.year + ", " + this.color + ", " + this.make + ", with " + this.doors + " doors");
}
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
(function() {
var Cars = function(color, doors, year, make) {
this.color = color;
this.doors = doors;
this.year = year;
this.make = make;
}
__webpack_require__(0);
var Audi = new Cars("red", 5, 2001, "Audi");
Audi.listing();
})();
/***/ })
/******/ ]);
控制台错误
Uncaught ReferenceError: Cars is not defined
at Object.make.color (module1.js:4)
at __webpack_require__ (bootstrap 91cca6f…:19)
at app.js:12
at Object.<anonymous> (app.js:20)
at __webpack_require__ (bootstrap 91cca6f…:19)
at bootstrap 91cca6f…:65
at bootstrap 91cca6f…:65
感谢这使得更有意义。提到.extend方法时,有两个问题,您是指jQuery方法,还是webpack拥有自己的扩展方法?你也提到IFFE,我的计划是使用我的jQuery插件的webpack。目前我使用的jQuery boilert板模式,并依靠IFFE来限制范围。 –
我的荣幸@ FrederickM.Rogers。对于扩展,我的意思是这一个http://api.jquery.com/jQuery.extend/基本上添加/覆盖从一个对象到原始属性。对于IFFE,它在webpack中不需要,基本上IFFE的目标是运行代码一次,这意味着与需要模块相同的事情。如果所有的插件都是你的,你可以把它写成对象的方式,并将它们全部放在一个更清洁的地方。 –
再次感谢你,我会去看看结果如何。 –