繁体   English   中英

没有Jade的ExpressJS - 将数据直接注入HTML文件

[英]ExpressJS without Jade - inject data directly to HTML files

我正在使用具有普通HTML模板的ExpressJS(没有Jade或类似的模板引擎)。 由于我要将MongoDB添加到我的应用程序中,我需要将数据注入到我的HTML文件中。 我知道使用Jade或类似模板引擎时没问题。 是否可以直接将其注入我的HTML文件而不使用Jade? 如果没有,是否可以使用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..]

假设您需要注入动态数据(数据随时间变化并具有其他依赖关系,如用户名等),您将使用模板的方式或方式。 如果您不愿意使用任何预先制作的模板引擎,很可能您最终会创建自己的模板引擎,这很可能不如其他大多数具有数十亿网页浏览量的引擎。

你特别提到你不想使用Jade。 但是你的代码确实引入了另一个模板引擎( http://handlebarsjs.com/ ),它基本上允许你使用{{ somevarref }}将变量与你的html模板混合。

您也可以一起避免使用模板,并使用代码动态创建所有html,但这通常是在幕后为您使用任何模板引擎完成的,那么为什么要手动完成所有麻烦呢?

最后,您还可以生成您的html客户端,可能使用DOM操作来获取所有正确的部分,但根据您的问题,我猜测哪个不适合您的用例,和/或可能有点超出目前的需要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM