2013-06-27 72 views
1

我正在使用requirejs插件來定義「tmpl!」 。裝載機(不是jQuery的模板,但lodash模板的問題是,文本裝載機增加了!「;」。在模板結束這個被渲染,並打破一切如何爲requirejs編寫lodash模板加載器

(function(global){ 
    "use strict"; 
    define({ 
    load : function(name, require, load, config) { 

     var deps = []; 

     deps.push('text!' + name); 
     deps.push('underscore'); 

     require(deps, function(source, _) { 
     var template = _.template(source); 
     load(template); 
     }); 
    } 
    }); 
})(this); 

如何我可以停止文本從加分號或:!?有沒有更好的方式來做到這一點

回答

1

以相反的順序問題:??

有沒有更好的方式來做到這一點

看來這裏有一個existing implementation,你可能要考慮使用它而不是寫你自己的。雖然簡單的情況是少量的代碼,但是您可能最終需要一些r.js優化器相關的東西。

但是關於你的實現邏輯,我注意到this similar project for Handlebars不使用文本!插件,而是在load()方法中使用它自己的XHR。這沒有解釋,但他給出了一些guidance for adapting it to other templating languages。注意:該鏈接來自this question,其中有一些關於該方法的其他良好討論。

我該如何停止文本!從添加分號?

我試過你的插件,並沒有得到任何添加的分號。也許你可以發佈更多的示例項目和模板?下面是我的,什麼東西都在一個平面文件夾的簡單:

require.js:最新從RequireJS網站

domReady.js:從RequireJS網站

text.js最新:從RequireJS網站最新

lodash.js:從lodash網站最新

tmpl.js:從問題你的例子裝載機

的index.html:

<!DOCTYPE html> 
<html> 
<head> 
    <script src='require.js'></script> 
    <script> 
    requirejs.config({ 
     map: { 
      '*': { 'underscore': 'lodash' } 
     } 
    }); 
    require([ 'underscore', 'tmpl!friend-template.htm', 'domReady!' ] 
     , function(_, friendTemplate){ 

     var friendsData = [{ name: 'Bob', age: 35 }, { name: 'Fred', age: 38 }]; 
     document.body.innerHTML = friendTemplate({friends: friendsData}); 
    }); 
    </script> 
</head> 
<body> 
    <!-- To be populated dynamically. --> 
</body> 
</html> 

朋友-template.htm

<ul> 
    <% _.forEach(friends, function(friend) { %> 
    <li> 
     <span><%- friend.name %></span> 
     <span>(Age: <span class="value"><%- friend.age %></span>)</span> 
    </li> 
    <% }); %> 
</ul> 
1

我已經專門爲Lo-Dash創建了一個裝載機,您可以在這裏看到:

https://gist.github.com/tbranyen/6821045

注意:我沒有單元測試或保證沒有錯誤,但從我的初始測試看來,它似乎工作得很好。

與requirejs-tpl相比,它在許多方面都要好一些,它們在它自己的實現中沒有暴露。它還需要文件擴展名和硬編碼路徑。這兩個都可以在我的代碼中配置。

編輯:我已經發布了一個名爲lodash-template-loader的項目,該項目已經過測試。 https://github.com/tbranyen/lodash-template-loader