いくつかのアプローチがあります。
- 構築時にアセンブルするページ構造を事前レンダリングします。その後、フロントエンドのjavascriptを使用してデータを読み込んで動的コンテンツをレンダリングします。
- サーバ側のコントローラでassemble apiを使用して、テンプレートとデータをロードし、実行時にコンテンツをレンダリングします。
- (2)と同様に、組み込みの
View
クラスを特急でオーバーライドし、そこにアセンブルして読み込みとレンダリングを行います。
あなたapp.js
中...ロードテンプレート、データ、ヘルパー、ミドルウェアなどに直接組み立てAPIを使用することができますので、私は今#2となるだろう。その後
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);
});
});
は、この情報がお役に立てば幸いです...あなたがページを取ると、それをレンダリングするために、あなたのルートで使用できるrender
関数を作成します。
詳細な回答をいただきありがとうございます。それは間違いなくこれを論理的に助けました。 –