我刚开始学习Node.js和hapi.js.我现在想要完成的是构建一个REST Web服务器,该服务器还应该具有用于配置和统计信息收集的Web界面。创建可以为复杂网页服务的HapiJs服务器
我发现Inert插件允许服务静态页面,据我所知,这限制了我加载一个由单个文件组成的网页。
但是,我不明白的是,是否有可能设置hapi.js来提供css
,js
及其正文中引用的其他文件的完整动态网页。
我用这个方向走错了方向,否则我该如何设置我的场景?
我刚开始学习Node.js和hapi.js.我现在想要完成的是构建一个REST Web服务器,该服务器还应该具有用于配置和统计信息收集的Web界面。创建可以为复杂网页服务的HapiJs服务器
我发现Inert插件允许服务静态页面,据我所知,这限制了我加载一个由单个文件组成的网页。
但是,我不明白的是,是否有可能设置hapi.js来提供css
,js
及其正文中引用的其他文件的完整动态网页。
我用这个方向走错了方向,否则我该如何设置我的场景?
您可以从指定目录提供多个静态文件。
只是尝试了inert
与hapi
,用这个例子:
https://github.com/hapijs/inert#static-file-server
惰性没有问题,从给定的目录服务多个静态文件,e.g public
。
所以,你将没有问题,从指定的目录服务多个静态html,css,js文件。然后,您可以使用Hapi构建动态JSON api,并使用js客户端代码使用该代码,并从公共目录中的静态js文件提供服务。
如果你需要的模板,在那里你生成的服务器端动态内容,高致病性禽流感能做到开箱,检查出:
http://hapijs.com/tutorials/views
很抱歉,如果这不是你的意思,请随时澄清,如果不是:-)
希望帮助!
vision插件是用于模板,这是我认为你后。如果您想将css和js文件与您的页面捆绑在一起,您可以将它们放在公共目录中,并通过inert plugin进行提供。然后,您只需要在您要呈现的任何html文件中引用相对路径。
下面是一个使用handlebars的简单示例。 Inert负责为您的css和js文件提供服务,同时视觉仍然呈现您的模板。
./index.js
var hapi = require('hapi');
var server = new hapi.Server();
server.connection({port: 5555});
server.register([require('vision'), require('inert')], (err) => {
if(err){
throw err;
}
server.views({
engines: {
html: require('handlebars')
},
relativeTo: __dirname + '/',
path: 'www'
});
var homeroute = {
method: 'GET',
path: '/',
handler: (request, reply) => {
reply.view('index', {name: 'cuthbert'});
}
};
var publicassetsroute = {
method: 'GET',
path: '/public/{param*}',
handler: {
directory: {
path: './public',
listing: false,
index: false
}
}
};
server.route(homeroute);
server.route(publicassetsroute);
server.start((err) => {
console.log('server started -- ' + server.info.uri)
});
});
www/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hapi Test</title>
<link rel="stylesheet" href="../public/index.css">
</head>
<body>
<h1>A Hapi Happy Test.</h1>
<p>This is a test page. Woo!</p>
<p>My name is {{name}}.</p>
</body>
</html>
public/index.css
p {
color: blue;
}
看一看视觉从模板HTML的动态渲染。 CSS和JS你可以使用Inert服务,因为它们通常只是静态文件。 –