Hapi+MySql项目实战配置插件-加载文件渲染母版(三)
2024-09-06 17:58:26
加载插件
一般在其它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视图的内容将自动填充
最新文章
- 支持高并发的IIS Web服务器常用设置 II
- 深入理解Java内存模型(七)——总结
- win7虚拟机起不来,报错transport vmdb error -44 message the vmware authorization
- zepto的touch.js左右滑动存在一些问题,用百度的touch.js代替
- Vxlan 原理
- jqgird 实践
- cocos2d-x 不规则形状按钮的点击判定
- 详解Linux2.6内核中基于platform机制的驱动模型 (经典)
- html5 兼容版本 video
- MyBatis 中一对一和一对多的映射关系
- laravel框架——验证码(第二种方法)
- Android 音视频深入 二十一 FFmpeg视频剪切
- ng-model-options 时延
- Linux关于文件,文件夹操作命令
- QMQ去哪儿网-mq中间件(启动失败)
- oracle提高查询效率的34条方法
- C#断点续传下载。
- zabbix agent安装(三)
- 【转】Android:No implementation found for native
- re 模块错误 error: bad character range
热门文章
- 详解定时任务中的 cron 表达式
- Vue CLI及其vue.config.js(一)
- 洛谷 P2746 [USACO5.3]校园网Network of Schools schlnet Tarjan强连通分量
- java面试题-集合类
- spring注入相关注解
- 鉴于崔庆才大大的对于 beautifulsoup 的再理解
- [bzoj4571] [loj#2016] [Scoi2016] 美味
- Mac系统 python2.7中安装MySQLdb
- AVLTree(C++实现)没有统一旋转操作
- ios启动流程