visionプラグインはテンプレート作成に使用されています。これは私があなたが思っているものです。 cssファイルとjsファイルをページと共にバンドルしたい場合は、それらを公開ディレクトリに入れて、inert pluginで提供することができます。そして、レンダリングしようとしているどのhtmlファイルでも相対パスを参照するだけで済みます。
ここには、handlebarsを使用した簡単な例があります。 Inertはcssファイルとjsファイルを提供し、ビジョンはテンプレートをレンダリングします。
./index.js
var hapi = require('hapi');
var server = new hapi.Server();
server.connection({port: 5555});
server.register([require('vision'), require('inert')], (err) => {
if(err){
throw err;
}
server.views({
engines: {
html: require('handlebars')
},
relativeTo: __dirname + '/',
path: 'www'
});
var homeroute = {
method: 'GET',
path: '/',
handler: (request, reply) => {
reply.view('index', {name: 'cuthbert'});
}
};
var publicassetsroute = {
method: 'GET',
path: '/public/{param*}',
handler: {
directory: {
path: './public',
listing: false,
index: false
}
}
};
server.route(homeroute);
server.route(publicassetsroute);
server.start((err) => {
console.log('server started -- ' + server.info.uri)
});
});
www/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hapi Test</title>
<link rel="stylesheet" href="../public/index.css">
</head>
<body>
<h1>A Hapi Happy Test.</h1>
<p>This is a test page. Woo!</p>
<p>My name is {{name}}.</p>
</body>
</html>
public/index.css
p {
color: blue;
}
テンプレートからHTMLを動的にレンダリングのためのビジョンを見てください。 CSSやJSは、通常は静的なファイルなので、Inertを使用して配信することができます。 –