如何创建可以在节点和浏览器中使用的功能?

时间:2015-08-17 02:05:04

标签: javascript node.js browser

我需要在节点中使用extend方法,我写道:

var Util = require('util');

Util._extend(a, b);

在浏览器中,我使用zepto,所以我写道:

$.extend(a, b);

我想只使用一个可以在节点和浏览器中工作的文件,所以我写道:

if (typeof exports !== 'undefined' && typeof module !== 'undefined' && module.exports) { // node
    var Util = require('util');
    Util._extend(a, b);
} else { // browser
    $.extend(a, b);
}

我在浏览器中使用seajs,它实现了CMD API,所以我写道:

define(function(require, exports, module) {
    module.exports = {
        init: function(){
            if (typeof exports !== 'undefined' && typeof module !== 'undefined' && module.exports) { // the browser actually entered this block
                var Util = require('util');
                Util._extend(a, b);
            } else {
                $.extend(a, b);
            }
        }
    };
});

浏览器实际进入了第一个块,所以上面的代码不起作用,然后我写道:

define(function(require, exports, module) {
    module.exports = {
        init: function(){
            var Util;
            if (Util = require('util')) { // the browser will try to require util, but util is a node module, so the browser won't find it, which will cause a 404 error
                Util._extend(a, b);
            } else {
                $.extend(a, b);
            }
        }
    };
});

这会导致浏览器出现404错误。

1 个答案:

答案 0 :(得分:0)

您需要使用节点模块browserify将后端代码更改为前端代码