加载插件
一般在其它node框架下,我们安装好插件直接require('插件')就能正常使用了,但是在Hapi下我们必须要Server.register()方法,才能正常使用插件。举个例子:
server.register({
plugin: require('vision'),
options: {
}
});
为什么使用register()? 根据官方文档的描述,通俗解释应该是为惰性加载,只在程序启动时引用注册一次。
除了部分特殊的引用其他的插件我们依旧可以使用require('插件')引入插件,并不是所有插件都需要register()。
写入插件配置文件config/plugin_config.js后统一register(),代码如下:
//plugin_config.js
module.exports = [
{
plugin: require('inert'),
options: {
}
},
{
plugin: require('hapi-swagger'),
options:{
}
},
{
plugin: require('vision'),
options: {
}
}
];
在‘server.js’中注册插件信息
//server.js
const Plugins = require('./config/plugin_config');
await Server.register(Plugins);
静态文件的加载
上面我们项目已经安装好了inert,这里我们就是用Inert来处理静态文件
在routes文件夹下,新增staticfile.js,代码如下:
//staticfile.js
let static = {
method: 'GET',
path: '/staticFile',
handler: function (request, reply) {
return reply.file('./public/static.html');
}
}; module.exports = static;
static.html随便输入内容。
记得注册路由,routes/index.js新增如下代码:
//module.exports = [
//require(__dirname + '/hello.js'),
require(__dirname + '/staticfile.js')
//];
重新启动服务
输入地址:http://localhost:8090/staticFile
输出:静态文件static.html
使用vision渲染母版
在server.js文件下server.views配置默认的母版视图:
//server.js
Server.views({
3 engines: {
4 html: require('handlebars')
5 },
6 relativeTo: __dirname,
path: './public/templates'
});
渲染视图,在staticfile.js 新增路由:
//staticfile.js
let view = {
method: 'GET',
path: '/view',
handler: function (request, reply) {
return reply.view('login', { title: 'My home page',content: 'Hello Hapi!!!' });
}
}; module.exports = [static, view];
login视图的内容将自动填充