如何使用 requirejs 加载缩小的 concatinated js 文件
How to load a minified concatinated js file with requirejs
我是 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") );
});
});
一如既往,欢迎所有建议。谢谢!
有两个指向同一个文件的 paths
一般来说 是获取加载错误的好方法。 (我说 "in general" 因为可能有特定的情况会起作用。不过这只是运气。你不应该这样做。)
您应该做的是使用 bundles
配置选项而不是 paths
:
bundles: {
'custom/release/release.min': ['layout', 'forms',
'serviceTraining', 'serviceMail']
}
这告诉 RequireJS,当你想加载数组中四个模块中的任何一个时,它应该加载模块 custom/release/release.min
来找到它们。
我是 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") );
});
});
一如既往,欢迎所有建议。谢谢!
有两个指向同一个文件的 paths
一般来说 是获取加载错误的好方法。 (我说 "in general" 因为可能有特定的情况会起作用。不过这只是运气。你不应该这样做。)
您应该做的是使用 bundles
配置选项而不是 paths
:
bundles: {
'custom/release/release.min': ['layout', 'forms',
'serviceTraining', 'serviceMail']
}
这告诉 RequireJS,当你想加载数组中四个模块中的任何一个时,它应该加载模块 custom/release/release.min
来找到它们。