2012-02-09 1 views
5

こんにちは、dot.jsテンプレートエンジンで出力をレンダリングする方法を知りたいです。私はそれがnodejsテンプレートに関する一般的な質問だと思います。(詳細はコメントを読んでください)。 jadeやejsの代わりにこのテンプレートエンジンを選んだ理由は、これが最速のエンジンのように見えるからです。nodejsでdoT.jsテンプレートをレンダリングする方法は?

<!DOCTYPE html> 
<html> 
<head> 
<meta charset='utf-8'> 
<title>Index</title> 
</head> 
<body> 

//This is where I am trying to receive data and output it... 
{{=it.output}} 

</body> 
</html> 

私はちょうどそれの良いドキュメントを見つけることができませんでした。ここに私のhtmlです

var express = require('express'), 
    app = express.createServer(), 
    doT = require('doT'), 
    pub = __dirname + '/public', 
    view = __dirname + '/views'; 

app.configure(function(){ 
    app.set('views', view); 
    app.set('view options', {layout: false}); 
    app.set('view engine', 'dot'); 
    app.use(app.router); 
}); 

app.register('.html', { 
    compile: function(str, opts){ 
     return function(locals){ 
      return str; 
     } 
    } 
}); 


app.get('/', function(req, res){ 

    //This is where I am trying to send data to the front end.... 
    res.render('index.html', { output: 'someStuff' }); 

}); 

は、ここに私のapp.jsです。これでは不十分でした:http://olado.github.com/doT/。できるなら助けてください。これにより、nodejのビューにデータがどのように渡されるかを指数関数的に理解することができます。ありがとうございました。

答えて

14

次のようなテンプレートエンジンとしてのドットを使用するように明示ノウハウを聞かせする必要があります。

app.set("view engine", "html"); 
app.register('.html', doT); 
+0

ありがとうございました。クリエイターからの回答を得るには、常に終了しています。私はまだレコードを繰り返し処理する方法を理解しなければならないが、それはmongodbという形式を引き上げるが、それはもう一つの質問だろう...ありがとう。 – user000001

+0

こんにちは、多分あなたは[これを見ることができる(http://stackoverflow.com/questions/9252191/show-all-of-data-comming-from-mongodb-and-render-it-in-dot-js-テンプレートエンジン)の質問も、あなたがここで答えたものに基づいています。私はあなたがこの質問に最も適していると思います。可能であればお手伝いください。 – user000001

+0

この問題を調べてください。http://stackoverflow.com/questions/9252191/show-all-of-data-comming-from-mongodb-and-render-it-in-dot-js-templating-engine – user000001

1

あなたは特急3を実行している場合、それはまだサポートされていません。ただし表現するドットを使用することができます。

npm install express-dot

[設定

app.set('view engine', 'dot'); 
app.engine('dot', require('express-dot').__express); 

を次にルートに:

res.render('profile', {}); // you will need to create views/profile.dot 
5

私のポストは恥知らずなプラグインですが、それは誰かを助けるかもしれませんでる。

私は既存のモジュールは、エクスプレス3.xので働いていた方法と非常に満足していなかった、私はドットEMCと呼ばれるものを書いた:

https://github.com/nerdo/dot-emc

使用法は、上記投稿されたものと同様です。 nom:

npm install dot-emc 

次に、デフォルトのビューエンジンとして設定します。私は私のテキストエディタは、Graphvizのファイルとしての.dotファイルを認識するので、.DEF拡張子を使用して好むので、構文は若干異なります。

app.engine("def", require("dot-emc").__express); 
app.set("view engine", "def"); 

次にあなたがあなたのルートで他のビューエンジンと同じように使い始めることができ、例:

app.get("/", function(req, res) { 
    res.render("index", {"title": "title goes here"}); 
}); 
+0

あなたのプラグは、これが歓迎されている人々を助けることを目的としているので、これがこのサイトの全体のポイントであった後に、助けを借りて... – user000001

+0

ありがとうcue8chalk。これは見つけにくいものでした。 – Druska

1

これは古い質問ですが、私は最近、標準で生成されたExpress 4.xxアプリケーションでdoTをテストしたかったのです。私は@oladoの明示的な例が私の生成されたアプリケーションと簡単に一致するとは思っていませんでした。私は別のプラグインを試してみましたが、満足していないので、特別なプラグインなしでインクルード(#)をサポートするコンパイル済みドットファイルを得るために、このようなテンプレートエンジンを作成しました:

var users = require('./routes/users'); 
// Standard app above this 

var dot = require("dot").process({ 
    path: (__dirname + "/views") 
}); 

var app = express(); 

// view engine setup 
app.engine('dot', function(template, options, cb){ 
    // using .dot files 
    var temp = path.parse(template).name; 

    var cont = dot[temp](options); 

    return cb(null, cont); 


    // Or as one liner 
    // return cb(null, dot[path.parse(template).name](options)); 

    // If you want to do error checking, return the error as callback functions first arg 
    // return cb(new Error('Something went wrong'); 
}); 

app.set('views', path.join(__dirname, './views')); 
app.set('view engine', 'dot'); 

// Standard generated app below this 

今は(index.jsため)、このような経路で標準「res.render」方法でそれを使用することができます。

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    res.render('index', { title: 'Express' }); 
}); 

は.DOTに{{it.value}}を使用してくださいテンプレートファイル。上記の基本的な例では、インデックスです。ドットは次のようになります。

<!DOCTYPE html> 
<html> 
    <head> 
    <title>{{=it.title}}</title> 
    <link rel='stylesheet' href='/stylesheets/style.css' /> 
    </head> 
    <body> 
    <h1>{{=it.title}}</h1> 
    <p>Welcome to {{=it.title}}</p> 
    </body> 
</html> 
関連する問題