有您可以採取幾種不同的方法。
- 在構建時使用匯編預渲染頁面結構。然後使用前端JavaScript來加載數據並呈現動態內容。
- 在服務器端控制器中使用assemble api來加載模板和數據並在運行時渲染內容。
- 與(2)類似,覆蓋express中內置的
View
類,並在其中進行裝載和渲染。
我現在要#2,所以你可以直接使用匯編API來加載模板,數據,幫手,中間件等...在您的app.js
。然後創建一個render
功能,你可以在你的路由使用採取一個頁面並使其...
var express = require('express');
var Assemble = require('assemble');
var app = express();
var assemble = new Assemble();
// setup middleware
assemble.onLoad(/\.hbs/, function(file, next) {
// so something if needed
next();
});
// load helpers
assemble.helpers(['path/to/helpers/*.js']);
// load async helpers
assemble.asyncHelpers(['path/to/async-helpers/*.js']);
// load templates
assemble.layouts(['path/to/layouts/*.hbs']);
assemble.partials(['path/to/partials/*.hbs']);
assemble.pages(['path/to/pages/*.hbs']);
// load global site data
assemble.data(['path/to/site.json']);
// render function to make looking up and rendering pages easier
function render(name, locals, cb) {
var view = assemble.getView(name);
if (!view) return cb(new Error('Unable to find "' + name + '"'));
view.render(locals, function(err, result) {
if (err) return cb(err);
cb(null, result.content);
});
}
// setup some express routes
app.get('/', function(req, res, next) {
render('index', {title: 'Home Page'}, function(err, content) {
if (err) return next(err);
res.status(200); // I don't remember this api off the top of my head
res.send(content);
});
});
希望這有助於。
非常感謝您的詳細解答!這絕對幫助我更多地理解這一點。 –