0

私はレール、requirejs、およびバックボーンで多くの作業を行っており、レールで Haml コーヒー テンプレートを使用する方法を知っています。

App = new Backbone.Marionette.Application()



App.addInitializer (options) ->
  Backbone.history.start()
  alert "yay"


$ ->
 alert "yay"
 App.start() 

Node.jsでそれを行うにはどうすればよいですか、私はNode.jsアプリを持っていますが、クライアント側をコンパイルするためのテンプレートを取得する方法に関して行き詰まっています.hamlコーヒーにこだわっていません.どのテンプレートエンジンでもできます. 、翡翠もいいです、アンダースコアも。node.js でバックボーン アプリの構築に取り掛かることができるように、ちょうど良い出発点です。

どんな助けでも大歓迎です!

4

2 に答える 2

1

テンプレートをクライアントにドラッグしてそこでコンパイルすることはお勧めしません。正しい方法は、必要なものなどを提供する www.socketstream.com などのフレームワークを使用することです。フレームワークに反対している場合、サーバー上でそれらをコンパイルし、クライアント上で関数として呼び出すための迅速で汚い解決策は次のようになります。

// compile.js 
var fs = require("fs")
    ,jade = require("jade");

exports.build = function(templatesDir) {
    var js = "var Templates = {}; \n\n";
    var files = fs.readdirSync(templatesDir);
    var jadeFiles = files.filter(function(file) {
        return file.substr(-5) === ".jade";
    });
    for(var i = 0; i < jadeFiles.length; ++i){
    var filePath, key;
    var file =  jadeFiles[i];
    key = file.substr(0, file.indexOf("."));
    filePath = templatesDir + file;
    var jadeSource =  fs.readFileSync(filePath);
    js += "Templates." + key + " = " + jade.compile(jadeSource, {
        debug: false,
        client: true
    }).toString() + "; \n\n";
}
return js;

};

// On the server.js
// Compile views
var viewsPath = path.join(__dirname, 'views/');
var generatedJs =  require('./compile').build(viewsPath);
var savePath = path.join(__dirname, 'public/js/lib/templates.js');
fs.writeFile(savePath, generatedJs, function (err) {
    if (err) throw err;
});

// Then on the client include js/lib/templates.js and use templates like this
FactSummaryView = Backbone.View.extend({
        template: Templates.issueSummary,
        render: function() {
            this.$el.html(this.template(this.model.toJSON()));

        return this;
    }
});

// Also add templates.js to nodemonignore if you're using nodemon
./public/js/lib/templates.js
/public/js/lib/templates.js
于 2013-05-16T08:24:58.723 に答える