【问题标题】:Express.js routing for bower components用于凉亭组件的 Express.js 路由
【发布时间】:2013-08-20 10:58:52
【问题描述】:

我已将我的 Express.js 项目更改为使用 bower 来安装组件。所有组件都安装在 /components 下(/components/jquery/jquery.js ...等)。

我也创建了自己的路由器,如下所示:

app.get('/', routes.index); // main page
app.get('/p/:name', routes.p); //redirect routes

app.get('/api/contacts', api.contacts); //look at all
app.get('/api/contact/:id', api.contact); //look at one
app.post('/api/contact', api.add); //add contact
app.put('/api/contact/:id', api.edit); //edit&update contact
app.delete('/api/contact/:id', api.delete); //delete contact

/components 没有路由,因此 http://my.project/components/jquery/jquery.js 会返回 Cannot GET /components/jquery/jquyery.js

谁能告诉我为 /components 下的所有组件添加路由的最佳方法是什么?

【问题讨论】:

    标签: node.js express bower


    【解决方案1】:

    您可能希望使用静态中间件来执行此操作。我对 bower 不熟悉,但如果您的所有组件都安装在 /components 中,那么您可以执行以下操作:

    app.use(express.static(__dirname + '/components'));
    

    这意味着如果您有 /components/jquery/jquery.js,您可以将其包含在

    <script src='/jquery/jquery.js'></script>
    

    如果你宁愿在它前面加上/components,你可以这样做:

    app.use('/components', express.static(__dirname + '/components'));
    

    这样您可以通过以下方式请求脚本:

    <script src='/components/jquery/jquery.js'></script>
    

    【讨论】:

      【解决方案2】:

      如果你使用连接资产,这样的东西效果很好:

      app.use require("connect-assets")(paths: ['assets/js', 'assets/css', 'bower_components'])
      

      然后在您的 js 清单中,您可以像其他 js 资产一样简单地包含 bower 组件。 资产/application.js:

      // bower components:
      //= require jquery/dist/jquery
      //= require underscore/underscore
      //= require backbone/backbone
      // local assets:
      //= require my_app
      

      【讨论】:

      • 我希望为基于 hackathon-starter 的项目添加凉亭支持,这非常完美!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多