Hapi+MySql项目实战配置插件加载文件渲染母版(三)

  • 加载插件

一般在其它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视图的内容将自动填充

原文地址:https://www.cnblogs.com/wzgj/p/8866864.html