如何用requirejs加载一个最小化的连接js文件

How to load a minified concatinated js file with requirejs

本文关键字:最小化 一个 连接 文件 js requirejs 何用 加载      更新时间:2023-09-26

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

现在我正在加载合并的文件(他们是jQuery ui小部件)与requires脚本。

我的问题是,这是正确的方法吗?四次引用release.min.js有点奇怪。这会导致需要加载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") );
});

});

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

拥有两个指向同一文件的paths 通常是获得加载错误的好方法。(我说"一般"是因为可能会有特定的情况。不过这只是运气。你不应该这么做

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

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

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