-
加载插件
一般在其它node框架下,我们安装好插件直接require('插件')就能正常使用了,但是在Hapi下我们必须要Server.register()方法,才能正常使用插件。举个例子:
1 server.register({ 2 plugin: require('vision'), 3 options: { 4 } 5 });
为什么使用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配置默认的母版视图:
1 //server.js 2 Server.views({ 3 engines: { 4 html: require('handlebars') 5 }, 6 relativeTo: __dirname, 7 path: './public/templates' 8});
渲染视图,在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视图的内容将自动填充