2013-08-14 14 views
7

Gidon şablonlarını önceden derlemek istiyorum, ancak bunun geliştirme modunda nasıl çalıştığından emin değilim.RequireJS ile Gidonlarda önceden derlenmiş şablonlar nasıl kullanılır?

Genel uygulama, Handlebars şablon dosyalarındaki değişiklikleri sürekli olarak izlemek için çalışan Guard gibi bazı arka plan işlemlerine sahip midir?

Şablonları çekmek için RequireJS kullanıyorum; örneğin: şablonları precompiled kez

define(['jquery', 'handlebars', 'text!templates/my_template'], function($, Handlebars, myTemplate) { 

    // ... 

    var data = {"some": "data", "some_more": "data"}; 
    var templateFn = Handlebars.compile(myTemplate); 
    $('#target').append(templateFn(data)); 

    // ... 

}); 

Yani anlıyorum kimse bu yapacağını:

define(['jquery', 'handlebars'], function($, Handlebars) { 

    // ... 

    var data = {"some": "data", "some_more": "data"}; 
    var template = Handlebars.templates['my_template']; 
    $('#target').append(template(data)); 

    // ... 

}); 

Not ikinci kod parçacığının hakkında aşağıdaki:

  1. RequireJS modülü hayır şablonda daha uzun çeker.
  2. Handlebars.compile() artık kullanılmamaktadır.

Genellikle, şablon dosyalarında dosya sistemi düzeyinde değişiklikler olduğunda şablonlarımın derlenmesini sağlamak için genellikle Guard'ı çalıştırır mıyım?

Temelde sorum, geliştiricilerin bunu yapması niyeti midir?

if (development) { 
    compile templates 
} 
else { 
    use precompiled templates 
} 

Ayrıca Rails kullanıyorum, belki de sass ray gibi bazı kara büyü var.

cevap

11

Require.js Handlebars Plugin (https://github.com/SlexAxton/require-handlebars-plugin) veya epeli's needsjs-hbs (https://github.com/epeli/requirejs-hbs) ürününe baktınız mı?

+1

Evet! Bir iş arkadaşım bu soruyu gönderdikten sonra gereksinim-gidon-eklenti olduğunu ve mükemmel! Hatta i18n desteği var, bu da onu daha da harika kılıyor. Test ettim ve ilan edildiği gibi çalışıyor. Geliştirme modundan üretime kod değişikliği yapılmasını gerektirmez ve derleme işlemi için yapılabilen derleme için r.js'yi kullanır. Şablonlar yerleşik dosyaya çizilir.Üretimde değişmesi gereken her şey, require.js + data-main ... içeren komut dosyası etiketidir ve varlık yöneticiniz tarafından ele alınabilir. –

+0

Son sürüm itibariyle i18n işlevselliği kaldırılmıştır. – magiccrafter

0

Require.js ve gidonun ilgili bu artcle bu soruyu soran yana

+0

Merhaba David. Üzgünüz ama OP gidon için sordu * önceden derlenmiş * şablonları ... bağlandığınız makale yardımcı olmaz :( –

2

http://seanamarasinghe.com/developer/requirejs-handlebars/ yardımcı olabilecek, başka yolu bu Grunt İzle yoluyla olabileceğini elde etmek olduğunu tespit ettik. Ancak, daha da iyi bir yol, RequireJS'i tamamen atlayarak Grunt ve Browserify kullanmaktır. Daha sonra NPM paketlerini kullanacaksınız ... ve RequireJS ile mevcut olan kütüphanelerin çoğu NPM paketleri olarak da mevcut gibi görünüyor (jQuery, Backbone, Angular gibi DOM tabanlı kütüphaneler bile inanılmaz).

var $ = require('jquery'), 
    Backbone = require('backbone'), 
    AppRouter = require('./app/routers/app'); 

// Compile LESS and attach resulting CSS to the HEAD. 
require('./less/app.less'); 

$(function() { 
    new AppRouter(); 
    Backbone.history.start(); 
}); 

Bu çok daha güzel olduğunu ve uygulamanın tam her çalıştığında inşa edilmiştir çünkü bu mümkün: O zaman kullanmak senkron() şeyler gerektiren çağrıları gerektirir. Bunu Grunt Watch ile birleştirin, böylelikle uygulamanız her değişiklik olduğunda kendini yeniden oluşturur ve işinizdeyseniz.

Ayrıca, oluşturma işlemi, Handlebars şablonlarının oluşturulmasına da dikkat eder. Bir şablon eklemek için, sadece require('./templates/my-template.hbs'); yaparsınız ve grunt-browserify için derleme işlemi bu require() çağrısını bulur, şablonu derler ve derlenmiş şablonu derleme uygulaması js dosyasına dahil eder.

RequireJS'den çok daha güzel!

İlgili konular