Requirejs 使用Require加载TypeScript生成的min.js文件

Requirejs 使用Require加载TypeScript生成的min.js文件,requirejs,typescript,Requirejs,Typescript,我有一个使用Typescript和RequireJs的完整应用程序,它工作得非常完美。我现在已经下载了WebEssentials,它正在生成缩小的脚本文件。WebEssentials生成与原始脚本文件同名的分离的*.min.js文件 我如何告诉RequireJs加载我的缩小文件而不是原始脚本文件 提前感谢您可以使用路径配置覆盖模块路径。您甚至可以退回到未缩小的文件: requirejs.config({ enforceDefine: true, paths: {

我有一个使用Typescript和RequireJs的完整应用程序,它工作得非常完美。我现在已经下载了WebEssentials,它正在生成缩小的脚本文件。WebEssentials生成与原始脚本文件同名的分离的*.min.js文件

我如何告诉RequireJs加载我的缩小文件而不是原始脚本文件


提前感谢

您可以使用路径配置覆盖模块路径。您甚至可以退回到未缩小的文件:

requirejs.config({
    enforceDefine: true,
    paths: {
        jquery: [
            'lib/jquery.min',
            'lib/jquery'
        ]
    }
});

可能有一种更通用的方法来使用我不知道的min文件

这没有什么魔力。不过你有一些选择

  • 使用为您生成min文件。非常可配置
  • 使用编译器选项将所有文件连接成一个文件并缩小该文件
  • 创建一个脚本/批处理文件,将应用程序复制到其他地方,将所有.min.js文件重命名为.js,并覆盖非min.js文件。或者其他一些组合,但你明白了要点
  • 使用史蒂夫提到的方法。适用于小型应用程序,但不适用于大型应用程序

  • 为了获得最佳性能,您应该查看优化器,并确定单脚本方法是正确的决策,还是多个较小的库是更好的方法。我怀疑加载每个.min.js文件是否是您的理想解决方案。

    您可以创建一个简单的自定义版本的require,它将有条件地将“.min.js”附加到所有通常只接收“.js”附加的模块文件请求中。考虑以下事项:

        //Establish a new 'useMinified' boolean in your initial config.
        require.config({ useMinified: true });
    
    然后,编辑require.js库文件并修改“nameToUrl”函数,如下所示:

        //Join the path parts together, then figure out if baseUrl is needed.
    url = syms.join('/');
    
        //new statement
    var extension = config.useMinified ? '.min.js' : '.js';
    
        //customized statement
    url += (ext || (/^data\:|\?/.test(url) || skipExt ? '' : extension));
    
    url = (url.charAt(0) === '/' || url.match(/^[\w\+\.\-]+:/) ? '' : config.baseUrl) + url;
    

    也许out参数是最好的解决方案。我已经测试过了,即使我缩小并在主页中显式加载缩小的文件,Require仍然会加载我脚本的详细版本,或者没有缩小的版本。在这种情况下,将一个文件与所有脚本一起使用时,我如何告诉Require停止加载脚本,因为所有内容都已加载?顺便说一下,out参数不正常。没有在--out参数中生成脚本。如果您使用AMD
    --out
    将不适用于您。您将不得不使用requirejs优化器。这会带来什么性能成本?您的示例支持生产,但仅举一个示例,假设我使用
    ['scriptfile','scriptfile.min']
    <代码>'scriptfile'在开发中,但只有
    'scriptfile.min'
    在生产中。RequireJS在生产中查找
    'scriptfile'
    的次数是一次还是在每个模块需求上?我假设有一点额外的工作,只是因为属性值是数组而不是字符串。在我的非正式测试中,它按顺序测试这些值,并且足够聪明地理解404是404(意味着不再查看)。如果你是开发人员,但喜欢生产,那么性能肯定会受到影响,反之亦然。我只是想不出为什么这还没有在requirejs中实现!?