3

假设我有一个开始如下的模块:

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'
}});

是否有某种方法可以加载目录中的所有模板,并且只有 1 个依赖项包含在定义语句中?

提前致谢。

4

1 回答 1

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 */
});
于 2013-04-02T03:52:09.087 回答