Javascript 在hapi.js上添加CSS是行不通的
使用惰性插件,我试图添加保存css、js文件的公用文件夹。但是在我的视图文件夹中,我无法访问它们。我在用把手。即使我只保留views文件夹中的style.css,仍然html无法访问该样式文件 这是我的文件夹结构:Javascript 在hapi.js上添加CSS是行不通的,javascript,html,css,node.js,hapijs,Javascript,Html,Css,Node.js,Hapijs,使用惰性插件,我试图添加保存css、js文件的公用文件夹。但是在我的视图文件夹中,我无法访问它们。我在用把手。即使我只保留views文件夹中的style.css,仍然html无法访问该样式文件 这是我的文件夹结构: app.js public css style.css views home.html routes user.js App.js const server = hapi.server({ port: Number(process.ar
app.js
public
css
style.css
views
home.html
routes
user.js
App.js
const server = hapi.server({
port: Number(process.argv[2] || 3000),
});
const init = async () => {
await server.register(vision);
await server.register(inert);
server.views({
engines: {
html: handlebars
},
path: path.join(__dirname, 'views'),
relativeTo: path.join(__dirname, 'public')
});
}
body {
background: #456;
font-family: 'Open Sans', sans-serif;
}
我尝试在服务器上添加相对路径,如下所示:
const server = hapi.server({
port: Number(process.argv[2] || 3000),
routes: {
files: {
relativeTo: Path.join(__dirname, 'public')
}
}
});
但这是徒劳的
Home.html
<html>
<head>
<title>Login page</title>
<link rel="stylesheet" href="../css/style.css" />
</head>
<body>
<h2> Welcome </h2>
</body>
</html>
您必须定义一个路由来为公用文件夹的内容提供服务 这可以通过以下方式完成:
const init=async()=>{
等待服务器。注册(vision);
等待服务器。注册(惰性);
server.views(…)
服务器路由({
方法:“GET”,
路径:'/public/{param*}',
处理程序:{
目录:{
path:path.join(uu dirname,'public')
}
}
})
}
这将创建一个路由,该路由将为public
目录中的任何内容提供服务,因此您的css将可以通过
这意味着您不必使用相对路径访问样式表,并且可以在home.html中使用绝对路径:
您必须定义一个路由来为公用文件夹的内容提供服务 这可以通过以下方式完成:
const init=async()=>{
等待服务器。注册(vision);
等待服务器。注册(惰性);
server.views(…)
服务器路由({
方法:“GET”,
路径:'/public/{param*}',
处理程序:{
目录:{
path:path.join(uu dirname,'public')
}
}
})
}
这将创建一个路由,该路由将为public
目录中的任何内容提供服务,因此您的css将可以通过
这意味着您不必使用相对路径访问样式表,并且可以在home.html中使用绝对路径:
成功了,谢谢。但是,如果我不想把这个路由保存在app.js文件中,而是想把它保存在routes文件夹中的user.js文件中,会怎么样?为此,我是否必须将html链接更改为href=“../public/css/style.css”
?我试过了,但没用。我已经修改了我的文件夹结构。请仔细查看提供静态内容的路由通常与模板文件没有关系,事实上,routes.files.relativeTo
指令只告诉hapi在路由处理程序中调用h.view
时使用您提供的路径,路径将从relative解析为,因此它只在服务器内部有效,而不是从客户端(例如:视图)有效。user.js文件做什么?user.js
包含我的所有server.routes,即返回h.view(“home”)文件
。我将它们导出到app.js
上使用。我通过将目录路径更改为path.join(\uu dirname,../public')
解决了这个问题,谢谢。但是,如果我不想把这个路由保存在app.js文件中,而是想把它保存在routes文件夹中的user.js文件中,会怎么样?为此,我是否必须将html链接更改为href=“../public/css/style.css”
?我试过了,但没用。我已经修改了我的文件夹结构。请仔细查看提供静态内容的路由通常与模板文件没有关系,事实上,routes.files.relativeTo
指令只告诉hapi在路由处理程序中调用h.view
时使用您提供的路径,路径将从relative解析为,因此它只在服务器内部有效,而不是从客户端(例如:视图)有效。user.js文件做什么?user.js
包含我的所有server.routes,即返回h.view(“home”)文件
。我将它们导出到app.js
上使用。我通过将目录路径更改为path.join(\uu dirname,../public')