Javascript 在browserify中将窗口传递给此
我的一个依赖项使用以下函数将窗口传递到它的闭包Javascript 在browserify中将窗口传递给此,javascript,node.js,this,browserify,Javascript,Node.js,This,Browserify,我的一个依赖项使用以下函数将窗口传递到它的闭包 (function (window) { // })(this) 目前,我可以将其更改为更合理的值,这样就不会破坏browserify,但是否有某种方法可以在browserify模块中强制为this设置一个值?I通常应该做您想要的事情,即将有问题的代码包装在一个类似这样的生活中: (function () { // this === window }.call(window)); 事实上,它并不比这复杂多少 最初的想法是导出一个globa
(function (window) {
//
})(this)
目前,我可以将其更改为更合理的值,这样就不会破坏browserify,但是否有某种方法可以在browserify模块中强制为this
设置一个值?I通常应该做您想要的事情,即将有问题的代码包装在一个类似这样的生活中:
(function () {
// this === window
}.call(window));
事实上,它并不比这复杂多少
最初的想法是导出一个globals“模块”,就像导出一个CommonJS模块一样(例如,have AngularJS exportwindow.angular
),但因为它包含包装器,所以应该这样做
有关说明,请参阅自述。如果有问题的脚本实际上没有任何可以合理导出的内容,只需让它导出window
(这将导致module.exports=window['window']
)或一个不存在的任意名称(导致未定义
)
如果您想在自己的browserify代码中访问
窗口
对象,还可以查看模块,它提供了一个很好的包装器,可以在CommonJS模块中安全地访问浏览器全局文件。为了解决这个特定问题,一个简单的转换,将代码包装在一个自调用函数中,就可以完成这项工作
咖啡脚本
JavaScript
编写转换:当browserify捆绑模块时,该是否与全局对象不对应?在这种特殊情况下,否。我不确定原因(或规范是什么)。如果您想试一试,这里是实际的文件:-
此
通常不涉及全局范围
through = require('through')
fenestrate = (file) ->
data = ';(function() {\n';
write = (buf) ->
data += buf
end = ->
data += '\n}).call(window);'
this.queue(data)
this.queue(null)
through(write, end)
var through = require('through');
var fenestrate = function(file) {
var data, end, write;
data = ';(function() {\n';
write = function(buf) {
return data += buf;
};
end = function() {
data += '\n}).call(window);';
this.queue(data);
return this.queue(null);
};
return through(write, end);
};