假设我有一个如下所示的模块:
define(['jquery', 'actions', 'util', 'text!../templates/dialog.html!strip', 'text!../templates/requestRow.html!strip', 'text!../templates/respondForm.html!strip'], function($, actions, util, tDialog, tRequestRow, tRespondForm) {
此模块包含用于写入客户端UI的大部分代码。它还使用text.js插件加载了我编写的其他几个模块以及3个HTML模板。我想知道是否有更简洁的方法来做到这一点?随着应用程序的增长,我可能有其他模板要加载,或模块,看起来我的定义语句可能会变得有点难看。我应该在main.js中将模板路径添加到require.config,如下所示:
require.config({
baseUrl: '/webrequests/resources/scripts/',
paths: {
'modernizr': '../js/vendor/modernizr-2.6.2-respond-1.1.0.min',
'bootstrap' : '../js/vendor/bootstrap.min',
'dialog' : 'text!../templates/dialog.html!strip',
'requestRow' : 'test!../templates/requestRow.html!strip',
'respondForm' : 'text!../templates/respondForm.html!strip'
}});
是否有某种方法可以加载目录中的所有模板,并且只需要在define语句中包含1个依赖项?
提前致谢。
答案 0 :(得分:4)
您可以制作一个模块,用于加载您经常使用的模板。因此,将要加载的模板分组到一个模块中,这样您只需加载此模板模块而不是单个模板:
// generalTemplates.js
define([
'text!../templates/dialog.html!strip',
'text!../templates/requestRow.html!strip',
'text!../templates/respondForm.html!strip'
], function (tDialog, tRequestRow, tRespondForm) {
return {
dialog: tDialog,
requestRow: tRequestRow,
respondForm: tRespondForm
};
});
因此,在您的模块中,您可以像其他模块一样简单地包含模板:
define([
'jquery',
'actions',
'util',
'generalTemplates'
], function($, actions, util, templates) {
var tDialog = templates.dialog,
tRequestRow = templates.requestRow,
tRespondForm = templates.respondForm;
/* You can do stuff with the templates here */
});