Javascript 使用jQuery.ajax&。text()将模板加载到DOM

Javascript 使用jQuery.ajax&。text()将模板加载到DOM,javascript,jquery,ajax,templates,Javascript,Jquery,Ajax,Templates,我继承了一些我不确定是否完全理解的代码… 我们正在构建一个使用微模板的cordova应用程序 这段代码让我有点困惑: this.loadExternalTemplates = function(templateElements, index, callback) { var self = this; if (index >= templateElements.length) { callback(); } e

我继承了一些我不确定是否完全理解的代码…
我们正在构建一个使用微模板的cordova应用程序
这段代码让我有点困惑:

this.loadExternalTemplates = function(templateElements, index, callback) {
        var self = this;
        if (index >= templateElements.length) {     
            callback();
        } else {
            // Load each of the templates into DOM
            var $currElement = $(templateElements[index]);
            $.ajax({
                type : 'GET',
                url : $currElement.attr("src"),
                dataType : 'text',
                timeout : 3000,
                success : function(template) {
                    // Write the template to script tag
                    $currElement.text(template);

                    // Iterate / loop to load next template
                    self.loadExternalTemplates(templateElements, ++index, callback);
                },
                error : function(error) {
                    helper.alert("Error occured. Please try again.", error);
                }
        });
    }
};
loadExternalTemplates()函数变量由以下函数调用:

this.onDeviceReady = function() {
        var self = this;
        // Load all referenced templates
        self.loadExternalTemplates($("script[type='text/html']"), 0, function() {

            // Initialize the sammy object
            self.initSammyBindings();
        });
};
在main.html中,我们有如下脚本/模板标记:

<script type="text/html" id="about-template" src="templates/about.tmpl.html"></script>

代码按原样工作(即加载模板),但我没有完全遵循逻辑

我理解如下:

  • 带有
    type=“text/html”
    的脚本被浏览器忽略/隐藏,因为
    的“text/html”
    在脚本标记中没有任何意义
  • ondevicerady()函数中的调用使用jQuery获取带有
    type=“text/html”
    的所有脚本,并将它们加载到loadExternalTemplates()函数(作为templateElements变量)
  • ajax调用使用每个脚本元素的
    src
    值通过GET加载内容(html)
  • txt函数用于将html添加到DOM脚本标记中
我不明白的是

  • 为什么使用jQuery.text(text)方法而不是.html()方法?文本不会去掉html吗?(同样,它起作用了,显然不起作用,但我不完全明白原因)
  • 使用jQuery.load()而不是.ajax()不是更有效吗
  • 为什么同时将所有模板加载到DOM?这不是违背了拥有模板的目的吗
  • 为什么要这样循环(当然每个()都有更好的
    for()
    循环方法)-只是糟糕的编码或我缺少的东西
  • 是否有更好的(标准的)方法将模板加载到DOM?随需应变

一般来说,您不希望通过加载阻止用户操作。。。因为它让你的应用程序感觉很慢;因此,如果您仅在需要时加载每个模板;每次你都会有短暂的停顿。。。一次加载它们可能会阻止这种情况的发生。看起来他们更喜欢同步阻止迭代,而不是一个充满异步调用的循环,以防止回调过早触发。-这可以通过延期承诺制度来克服。(在jQuery1.10中)