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

Access static files (js/css..) HapiJS, EJS, NodeJS

当使用路由时,例如 (http://localhost:port/foo/bar),在视图中,在我的例子中是一个 ejs,我是否需要在视图中声明完整路径以加载 css/js/images?

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

hapi-ninja/server/base/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)。

如作者本人所述:

第一个解法:

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

其他'solution':

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>

但是,使用首字母 '/' 会更好。