我试图从Express提供静态胡须文件的文件夹,但似乎无法弄清楚如何让它工作。假设我只有一个数据对象,如
{
a: 'Hello :)'
b: 'Goodbye :('
}
还有两个文件,
public/a.html
<div>{{a}}</div>
public/b.html
<div>{{b}}</div>
我怎样才能快速设置它为任意数量的静态html文件服务的位置,并用我的一个大对象替换模板化的部分?谢谢!
答案 0 :(得分:12)
静态文件在发送给用户之前,如果不以任何方式处理,通常只会被称为 static 。
您尝试实现的是典型的模板系统。您只需按照plugin:
中的说明操作即可var mustacheExpress = require('mustache-express');
// Register '.html' extension with The Mustache Express
app.engine('html', mustacheExpress());
app.set('view engine', 'mustache');
app.set('views', __dirname + '/views'); // you can change '/views' to '/public',
// but I recommend moving your templates to a directory
// with no outside access for security reasons
app.get('/', function (req, res) {
res.render('a');
});
另外考虑使用Handlebars,它通常比Mustache更方便使用。您可以在this question中找到差异列表。
答案 1 :(得分:3)
您可以mustachejs
使用pug
,就像mustache
设置为view engine
并定义其工作方式如下所示:
//required files
const fs = require("fs")
const mustache = require("mustache")
// To set functioning of mustachejs view engine
app.engine('html', function (filePath, options, callback) {
fs.readFile(filePath, function (err, content) {
if(err)
return callback(err)
var rendered = mustache.to_html(content.toString(),options);
return callback(null, rendered)
});
});
// Setting mustachejs as view engine
app.set('views',path.join(__dirname,'views'));
app.set('view engine','html');
//rendering example for response
app.get('/',(req,res)=>{
res.render('index',{data:'Sample Data'});
});
&#13;
答案 2 :(得分:1)
我稍微修改了zlumer的答案,下面的代码对我来说很好用。
const express = require('express');
const app = express();
const mustacheExpress = require('mustache-express');
app.engine('html', mustacheExpress());
app.set('view engine', 'html');
app.set('views', __dirname + '/views');
app.get('/', function(req, res) {
const data = {
hello: 'world',
foo: 'bar'
};
res.render('test', data);
});
app.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
请检查https://github.com/HemingwayLee/sample-mustache-express 并随时克隆和修改它。
答案 3 :(得分:0)
您不应将html文件包含在公共目录中。公共目录应该只包含图像,javascript和css文件。
虽然有很多方法可以构建node / express应用程序,但是你可以找到一种使用Express Generator的好方法。
http://expressjs.com/en/starter/generator.html
如果您使用它,它将为您创建应用程序结构,清楚地说明您应该如何保留静态文件。