javascript - 定义 requirejs 模块,包括文件夹中的所有文件

标签 javascript requirejs amd

我使用require.jstext插件来包含一些html模板,如下所示:

define([
    'text!/assets/templates/home/myApp.templates.home.home-pane.html',
    'text!/assets/templates/nav/myApp.templates.nav.top-navbar.html',
    'text!/assets/templates/shared/myApp.templates.shared.layout.html',
    ...
], function (HomeTmpl, TopNavbarTmpl, SharedLayoutTmpl, RegisterVerticalTmpl, LoginVerticalTmpl, ThingListItemTmpl, ThingSearchTmpl, TestTestTmpl) {

    var allHtml = function () {
        return HomeTmpl + TopNavbarTmpl + SharedLayoutTmpl + RegisterVerticalTmpl + LoginVerticalTmpl + ThingListItemTmpl + ThingSearchTmpl + TestTestTmpl;
    }

    return {
        All: allHtml,
        HomeTmpl: HomeTmpl,
        TopNavbarTmpl: TopNavbarTmpl,
        ...
    }
});

我真的没有必要保留对每个模板的引用(即使我现在正在这样做);我真的只需要将所有模板转储到我的 head 中即可。

这种做事方式很麻烦,因为它需要我(没有双关语)为每个新模板 html 文件添加引用。

我想做的是这样的:

define(['text!/assets/templates/*'], function(Templates) { return Templates; });

可以这样做吗?如果是这样,包含所有包含的文件并将其串在一起作为一个大引用的语法是什么?

最佳答案

RequireJS 不支持这一点,因为它(总是)不可能从远程服务器获取目录列表。你想要的是像 Grunt 这样的构建工具.

例如,使用 grunt-contrib-concat任务,您可以使用此配置将所有模板连接到一个文件(然后使用 RequireJS 包含该文件):

concat: {
    templates: {
      src: ['assets/templates/*'],
      dest: 'templates.html'
    }
}

关于javascript - 定义 requirejs 模块,包括文件夹中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23672884/

相关文章:

javascript - R.js 优化器排除 Angular 库

c++ - nVidia 和 ATI 之间的 OpenGL 渲染差异

anaconda - 在没有 MKL 的情况下为 AMD Ryzen 设置 Anaconda

javascript - 如何使用 Javascript/jQuery 解决游戏逻辑中的错误

javascript - Coffeescript 的主干上下文问题

javascript - 带有 jQ​​uery 验证的 RequireJS

node.js - requirejs回调未定义

javascript - JShint 警告 : jQuery plugin marked incorrectly 'defined but never used' in AMD

javascript - 考虑半圆计算鼠标位置的百分比

javascript - json foreach数组数组与jquery