模板使用RequireJS (text.js插件)和下划线

Templating using RequireJS (text.js plugin) and Underscore

本文关键字:插件 js 下划线 text RequireJS      更新时间:2023-09-26

需要一些关于在下划线中管理模板的最佳方法的意见。我正在构建一个骨干应用程序,并使用下划线来管理模板。我开始在'template.js'文件中做这样的事情。

templates = {
    template1: '<h1>Some HTML</h1>',
    template2: '<h1>Some more HTML and a <%= variable %></h1>
    ...
}

这很乱。快。所以,我研究了RequireJS的文本插件,它使它更干净。现在,我有一堆HTML文件,我把它们存储到我的" templates "对象中。像这样:

define(['text!/templates/template1.html',
    'text!/templates/template2.html',
    ...], 
    function(template1, template2, ...) {
        return {
            template1: template1,
            template2: template2,
            ....
        }
});

所以现在的问题是HTTP请求。对于模板,我有5个请求- 1个为template.js文件,然后4个独立的HTML模板文件。而且这个名单还会继续增长。我想的一件事是把所有的HTML放在一个文件中,但这似乎不符合AMD的方法。随着应用程序的发展,我可以更聪明地做到这一点,只在必要时加载HTML模板——如果它们都是分开的。

是否有办法绕过所有的HTML请求?我认为这在生产环境中不是一个好的实践。

谁有其他的想法,如何完成我正在做的事情?

这就是RequireJS优化器的作用。它将所有模块合并到单个文件中,作为预部署构建过程的一部分。根据文本插件的README:

文本文件通过异步XMLHttpRequest (XHR)调用加载,因此您只能从与网页相同的域获取文件(参见下面的XHR限制)。

然而,RequireJS优化器会内联任何文本!引用与实际文本文件内容一起放入模块中,这样经过一次构建,模块即有了文本!依赖关系可以从其他域中使用。