2013-07-29 38 views
2

我一直在進入需求,並且很滿意。但爲什麼我需要this 400+ line plulgin加載我的車把模板?把手模板可以存儲在一個html文件中,不涉及插件/轉換過程。如果我想......我也可以將它們像這樣使用jQuery/AJAX:爲什麼我在使用requireJS時需要插件?

$.ajax({ 
    url: '../templates/description.hbs', 
    dataType: 'html', 
    cache: false, 
    success: function(data, status, response) { 
     var template = Handlebars.compile(response.responseText); 
     $('#content').prepend(template(tmplData.description)); 
    } 
}); 

我正在尋找一種方式來加載我templates.hbs文件與要求(或者也許不是),而不使用插入。我不喜歡上面的ajax方法,因爲它減緩了頁面加載速度。

我templates.hbs文件看起來是這樣的:

<div class="description"> 
    <h1>{{h1}}</h1> 
    <p>{{p}}</p> 
</div> 

只是一個字符串,對不對?

+0

那麼你的代碼只處理成功案例(並且依賴於20 KLOC jQuery),95%的代碼不是用於成功案例,而是錯誤案例。 – Esailija

+0

@Esailija我真的沒有經歷過你所說的話。爲什麼這樣關注錯誤案例,我的錯誤案例是(不顯示任何內容)或(我們錯過了___,去這裏)。 – dezman

+0

那麼如果你使用一個庫,並且只能得到一個白頁,因爲庫中發生了一些錯誤,那麼這個問題很容易找到? – Esailija

回答

1

回答您的文章標題(「爲什麼需要插件...」),而不是它的正文中的問題(「我正在尋找一種方法來加載我的模板... 「)。也許別人會出現併爲這部分提供答案。

正如你所說,你不需要插件加載模板,即使你使用RequireJS您的依賴管理的其餘部分。但是,有幾個原因使用built-in text plugin或專用車把插件(像你鏈接的那個)可以幫助:

1 - 處理文本的依賴同樣是其他依賴

有無一個插件可以讓你說,給定碼片取決於模塊A,模塊B和模板X:

require(["moduleA", "moduleB", "text!templateX.html"], 
    function(moduleA, moduleB, html) { 
     // start working with all of it together 
    } 
); 

但是,如果你沒有使用的插件,你可能有回調的另一層:

require(["moduleA", "moduleB"], 
    function(moduleA, moduleB) { 
     $.ajax({ 
      url: '../templates/templateX.html', 
      dataType: 'html', 
      cache: false, 
      success: function(data, status, response) { 
       // now do something 
      } 
     }); 
    } 
); 

2 - 允許捆綁/優化階段

RequireJS附帶r.js optimizer它可以捆綁所有依賴在一起,它們最小化,減少請求的數量和他們的整體下載大小。

如果使用插件和require/define語法來定義所有的依賴關係,r.js可以跟蹤模塊所需的內容並將其捆綁在一起。因此,在例子中,我上面使用:

require(["moduleA", "moduleB", "text!templateX.html"], 

moduleA,moduleB和templateX可以在單個文件中被捆綁在一起,而不是具有三個單獨的運行時請求。

在您鏈接的Handlebars插件中,我看到這400多行代碼中有一些正在處理捆綁/優化階段。正如@Esailija在評論中指出的,其他許多與邊緣情況和錯誤情況有關。

相關問題