用沙拉三明治重写JavaScript IIFE?

时间:2015-03-13 17:25:11

标签: javascript jquery node.js jquery-mobile browserify

我正在尝试在我的项目中使用JavaScript库(jQuery mobile),它以不同的格式包含在一些IIFE中,例如:

(function ( root, doc, factory ) {
    if ( typeof define === "function" && define.amd ) {
        // AMD. Register as an anonymous module.
        define( [ "jquery" ], function ( $ ) {
            factory( $, root, doc );
            return $.mobile;
        });
    } else {
        // Browser globals
        factory( root.jQuery, root, doc );
    }
}( this, document, function ( jQuery, window, document, undefined ) {
(function( $ ) {
    $.mobile = {};
}( jQuery ));

还有...

(function( $, window, undefined ) {
// more code
)( jQuery, this );

我正在使用browserify绑定我的项目,问题是this未定义,因为它被我的bundler包装在另一个包装函数中。在github上有关于jQuery mobile支持CommonJS的问题,但是他们拒绝为它添加额外的支持。

我最近偶然发现了falafel,现在我想知道是否有办法分别重写上面的闭包:

function(root, doc, factor){
   // main closure
}(this || window, document, function(){})

function($, window, undefined) {
  // more code
}(jQuery, this || window)

0 个答案:

没有答案