• 加载插件

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

Hapi+MySql项目实战配置插件-加载文件渲染母版(三)的更多相关文章

  1. vs2015 项目调试出现未能加载文件或程序集“Antlr3.Runtime”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

    今天在调试项目不知道怎么了,突然就报未能加载文件或程序集“Antlr3.Runtime”或它的某一个依赖项.找到的程序集清单定义与程序集引用不匹配. (异常来自 HRESULT:0x80131040) ...

  2. .net framework 项目 build 出现 未能加载文件或程序集“netfx.force.conflicts”或它的某一个依赖项

    问题描述 Severity Code Description Project File Line Suppression State Error 未能加载文件或程序集"netfx.force ...

  3. Hapi+MySql项目实战环境初始化(一)

    因为项目要求特殊的原因,公司要求使用Nodejs+HApi(纯英文的API)+Mysql构建新的项目.网上找了一堆资料,看了半天一脸懵逼.结论就是:版本的差异,资料国内几乎都是旧的17年前的了.根据资 ...

  4. Hapi+MySql项目实战自动化文档生成(四)

    自动化生成swagger文档 使用hapi插件hapi-swagger,简单配置下插件,先修改下plugin_config.js文件: //plugin_config.js const Swagger ...

  5. Hapi+MySql项目实战数据库操作(四)

    数据库访问 下面以Node的ORM框架Sequelize来操作数据库,Mysql为例. 配置数据库连接信息config/db_config.js: //db_config.js module.expo ...

  6. Hapi+MySql项目实战路由初始化(二)

    配置路由规则 将路由文件放在routes文件夹里,修改‘Server.js’文件,增加如下代码: 我们这里指明了require('./routes') routes文件夹,require可以文件但是不 ...

  7. 未能加载文件或程序集 Version Culture=neutral, PublicKeyToken=

    最近项目报错 未能加载文件或程序集"Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, ...

  8. 未能加载文件或程序集 MySql.Web

    偶然间碰到这个错误,找到一个临时的解决办法,真正的原因还不知道是什么,也不知道这种解决方法会不会对以后有什么副作用. “/”应用程序中的服务器错误. 配置错误 说明: 在处理向该请求提供服务所需的配置 ...

  9. 目标平台、活动平台 配置,出现未能加载文件或程序集“xxx”或它的某一个依赖项报错

    今天在做动态加载程序集的时候,发现明明程序集存在的情况下,还是依然报“未能加载文件或程序集“xxx”或它的某一个依赖项报错”的错误,排除了程序和配置的错误后,怀疑是否是环境的问题,于是百度加msdn后 ...

随机推荐

  1. TCP 协议详解

    TCP 协议是 更靠近应用层,因此在应用程序中具有更强可操作性,一些重要 socket 选项都和 TCP 协议相关. TCP 头部信息:TCP 头部信息出现在每个 TCP 报文段中,用于指定通信的源端 ...

  2. docker 批量删除 镜像 容器

    我们在docker构建和测试时,经常会产生很多无用的镜像或者容器,我们可用如下两条命令一个一个删除. docker container rm 容器id #删除容器 可简写: docker rm 容器i ...

  3. 1、使用 as 而不要用 is

    public class ShouldAsNotIs { public void ShouldAs() { object a = new ShouldAsNotIs(); var b = a as S ...

  4. SpringCloud之Eureka(注册中心集群篇)(三)

    一:集群环境搭建 第一步:我们新建两个注册中心工程一个叫eureka_register_service_master.另外一个叫eureka_register_service_backup eurek ...

  5. python 装饰器-初识

    一.装饰器的形成过程 1.函数无参数,无返回值 import time def f1(): # 无参数,无返回值 time.sleep(1) print("Hello, World!&quo ...

  6. ip 地址库 这个 准么 呢

  7. influxdb+Grafana+jmeter监控搭建

    安装InfluxDB InfluxDB的简介 InfluxDB 是用Go语言编写的一个开源分布式时序.事件和指标数据库,无需外部依赖. 类似的数据库有Elasticsearch.Graphite等.. ...

  8. Spring-Cloud之Eureka注册中心环境搭建(单节点)

    一 Eureka概述 服务启动时会生成服务的基本信息对象InstanceInfo,然后在启动时会register到服务治理中心. 注册完成后会从服务治理中心拉取所有的服务信息,缓存在本地. 之后服务会 ...

  9. springboot mybatis 多数据源配置支持切换以及一些坑

    一 添加每个数据源的config配置,单个直接默认,多个需要显示写出来 @Configuration @MapperScan(basePackages ="com.zhuzher.*.map ...

  10. ubuntu 中使用makefile组织c++多文件的简陋方法

    现有类定义Sales_item.hpp Sales_item.cpp 主函数my7_31.cpp(代码来源于c++primer 习题解答7_31) 希望使用makefile在Ubuntu中进行编译链接 ...