vanilla JS:捆绑或不捆绑的模块

时间:2016-11-23 15:08:20

标签: javascript design-patterns module

给定一组模块化图案文件(主要文件和各种子文件),

有没有办法检测模块是否捆绑在一起放在一个文件中?在最后一种情况下,我将手动加载带有头文件src =“”标签的模块,通过JS添加。

非捆绑文件用于开发,捆绑的文件用于生产用途。

EDIT代码是ES 5!

我不考虑使用Browserify,要求等......

我用(非常基本的)gulpfiles(使用concat,wrap)

组装我的代码 有人有个主意吗?

1 个答案:

答案 0 :(得分:0)

假设您的捆绑文件名称中包含某些内容,表明它是捆绑包,您可以检查加载了哪个脚本。例如,如果在开发模式下加载TopModule.js,在生产中加载TopLevel.min.js,则可以将此检测放在TopLevel模块中:

var isBundled = (function () {
    var src = '';

    if ('undefined' !== typeof (document.currentScript) && document.currentScript.src) {
        src = document.currentScript.src;
    }
    else {
        (function () {
            var allScriptElements = document.scripts || document.getElementsByTagName('script'),
                    i;

            for (i = 0; i < allScriptElements.length; ++i) {
                if (/(TopLevel(\.min)*)\.js/i.test(allScriptElements[i].src)) {
                    src = allScriptElements[i].src;

                    break;
                }
            }
        }());
    }

    return /\.min\.js/i.test(src);
}());