访问静态文件(js / css ..)HapiJS,EJS,NodeJS

时间:2015-09-29 17:51:15

标签: node.js ejs hapijs

在视图中使用路径(如{http://localhost:port/foo/bar)时,在我的情况下是ejs,我是否需要在视图中声明完整路径,以加载css / js / images?

视频https://github.com/poeticninja/hapi-ninja

HAPI忍者/服务器/碱/ index.js

...
{
  method: 'GET',
  path: '/foo/bar',
  config: {
    handler: function(request, reply){
      reply.view('about', {
        title: 'Super Informative About Page'
      });
    },
    id: 'about'
  }
},
...

例如: 的 foot.ejs

<!-- Include the JS -->
<% if (assets.js.length) { %>
    <% assets.js.forEach(function(js){ %>
        <script src="<%=js%><%=version.cache%>"></script>
    <% }) %>
<% } %>

因为,每次尝试加载时,都会获得相对路径(http://localhost:port/foo/bar/js/script.js)。

1 个答案:

答案 0 :(得分:0)

正如创作者自己所描述的那样:

第一个解决方案:

@poeticninja commented 4 hours ago 在您的资产文件中创建路径/js/script.js而不是js / script.js。这将解决您的问题。

其他'解决方案':

assets.js

// assets to be used by the 'hapi-assets' module based on process.env.NODE_ENV
module.exports = {
    development: {
        js: ['js/jquery-2.1.4.js', 'js/bootstrap.js'],
        css: ['css/bootstrap.css', 'css/bootstrap-theme.css', 'css/3-col-portfolio.css'],
        host: 'http://development:PORT/'
    },
    production: {
        // TODO: Add the resources minified.
        js: ['js/jquery-2.1.4.js', 'js/bootstrap.js'],
        css: ['css/bootstrap.css', 'css/bootstrap-theme.css', 'css/3-col-portfolio.css'],
        host: 'http://production:PORT/'
    }
}

并在视图

<script src="<%=assets.host%><%=js%><%=version.cache%>"></script>

但是,最初的'/'更好。