1

ExpressJSを通常のHTMLテンプレートで使用しています(Jadeや同様のテンプレートエンジンは使用していません)。アプリにMongoDBを追加しようとしているので、HTMLファイルにデータを挿入する必要があります。Jadeなどのテンプレートエンジンを使用しても問題ないことはわかっています。Jadeを使用せずにHTMLファイルに直接挿入することはできますか?そうでない場合は、Jadeを使用してHTMLファイルを保持することは可能ですか?

これが私のapp.jsです:

var express = require('express');
var server = express.createServer();

server.configure(function () {
  server.use('/bootstrap', express.static(__dirname + '/bootstrap'));
  server.use('/css', express.static(__dirname + '/css'));
  server.use('/js', express.static(__dirname + '/js'));
  server.use(express.static(__dirname + '/html'));
});
server.set('views', __dirname + '/html');
server.register('.html', require('handlebars'));
server.set('view options', { layout: false });
server.use(express.bodyParser());
server.use(express.cookieParser({ secret: "keyboard cat" }));
var memStore = require('connect').session.MemoryStore;
server.use(express.session({ secret: "keyboard cat", store: memStore( {
  reapInterval: 60000 * 10
})}));

server.listen(1337);
console.log('Express server started on port %s', server.address().port);

/** SESSIONS **/
function requiresLogin(req, res, next) {
  if (req.session.user) {
    next();
  }
  else {
    res.redirect('/login'); // TODO: process redirect
  }
}

var pseudoUsers = require('./users');

server.get('/login', function(req, res) {
  res.render('login.html');
});
server.post('/authenticated', function(req, res) {
  pseudoUsers.authenticate(req.body['emailInput'], req.body['passwordInput'], function(user) {
     if (user) {
       req.session.user = user;
       res.redirect('/dashboard');
     }
     else {
       res.redirect('/login?wrongCredentials=true');
     }
  });
});

/* ROUTERS ****************/
/**************************/
server.get('/home', function(req, res) {
  res.render('index.html');
});
[some more routes..]
4

1 に答える 1

4

動的データ(時間の経過とともに変化し、ユーザー名などの他の依存関係を持つデータ)を挿入する必要があると仮定すると、いずれかの方法でテンプレートを使用します。事前に作成されたテンプレートエンジンを使用したくない場合は、独自のテンプレートエンジンを作成することになります。これは、数十億のページビューが背後にある他のほとんどのエンジンよりも劣る可能性があります。

ジェイドを使いたくないと具体的に言っています。ただし、コードは別のテンプレートエンジン(http://handlebarsjs.com/)であるハンドルバーをプルします。これにより、基本的に、を使用して変数をhtmlテンプレートと混合できます{{ somevarref }}

テンプレートをすべて一緒に避けて、コードを使用してすべてのhtmlを動的に作成することもできますが、これは通常、任意のテンプレートエンジンを使用して舞台裏で行われるので、なぜすべての問題を手動で実行するのでしょうか。

最後に、HTMLクライアント側を生成することもできます。おそらく、DOM操作を使用してすべての適切な部分を配置しますが、あなたの質問に基づいて、それはあなたのユースケースに適合しないか、またはおそらく少しです現在必要なものを超えて。

于 2012-06-17T13:08:16.900 に答える