【问题标题】:How to load a minified concatinated js file with requirejs如何使用 requirejs 加载缩小的连接 js 文件
【发布时间】:2015-09-04 19:17:44
【问题描述】:

我是 grunt 和文件优化的新手。我已将一些 JavaScript 文件(带有 grunt concat)合并到一个文件 release.js 中,然后将其缩小为 release.min.js。

现在我正在使用 requirejs 脚本加载组合文件(它们是 jQuery ui 小部件)。

我的问题是,这是正确的方法吗?四次引用 release.min.js 看起来有点奇怪。这是否会导致 requirejs 加载 release.min.js 四次?还是只有一次?多次加载一个大的缩小文件会很愚蠢。

requirejs.config({
baseUrl: '/site/scripts',
shim: {
    layout: {
        deps: ['jquery', 'jquery-ui']
    } ,
    serviceTraining:  {
        deps: ['jquery', 'jquery-ui']
    },
    serviceMail:  {
        deps: ['jquery', 'jquery-ui']
    },
    forms:  {
        deps: ['jquery', 'jquery-ui']
    }
},

paths: {       
    layout: 'custom/release/release.min',
    forms: 'custom/release/release.min',
    serviceTraining: 'custom/release/release.min',
    serviceMail: 'custom/release/release.min'
    }
});

require(['layout', 'serviceMail', 'serviceTraining', 'forms'], function() {

$(function() {

    // theme
    var layoutPlugin = $( "body" ).layout({ siteName: "Website name", domainName: "website.com" });
    layoutPlugin.layout( "init" );

    // Forms
    var formsPlugin = $( "body" ).forms();
    formsPlugin.forms( "init" );

    // Load mail services
    var serviceMail = $.services.serviceMail();
    serviceMail.subscribe( $(".form--subscribe") ); 
    // Subscribe to the  MailChimp e-mail list
    serviceMail.contact( $(".form--contact") );

    // Register for training
    var serviceTraining = $.services.serviceTraining();
    serviceTraining.register( $(".form--training-register") );

});

});

一如既往,欢迎所有建议。谢谢!

【问题讨论】:

    标签: javascript jquery jquery-ui gruntjs requirejs


    【解决方案1】:

    拥有两个指向同一个文件的paths通常是一个很好的解决加载错误的方法。 (我说“一般”是因为可能有特定的情况会起作用。不过这只是运气。你不应该这样做。)

    您应该做的是使用bundles 配置选项而不是paths

    bundles: {       
    'custom/release/release.min': ['layout', 'forms', 
                                   'serviceTraining', 'serviceMail']
    }
    

    这告诉 RequireJS 当你想加载数组中的四个模块中的任何一个时,它应该加载模块 custom/release/release.min 来找到它们。

    【讨论】:

    • 谢谢。现在可以了。显然我需要在 require 语句中使用包名称: require(['custom/release/release.min'], function() { etc..
    猜你喜欢
    • 2015-07-22
    • 2013-01-25
    • 1970-01-01
    • 2013-05-29
    • 2018-11-29
    • 1970-01-01
    • 2013-02-02
    • 2018-10-25
    • 1970-01-01
    相关资源
    最近更新 更多