我剛開始學習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服務,因爲它們通常只是靜態文件。 –